# SETHPC Logo Generator API

Public API endpoint for generating SethPC/Sethflix-style logos as SVG or PNG.

- Base URL: `https://gallery.sethpc.xyz`
- Endpoint: `POST /api/logo`
- Content types: `application/json` or `application/x-www-form-urlencoded`

## Parameters

Required:

- `text` - main logo text

Optional:

- `color` - hex color (`#RRGGBB` or `RRGGBB`), default `#D35400`
- `mode` - `standard` or `lockup`, default `standard`
- `shape` - `normal` or `square`, default `normal`
- `subtext` - required when `mode=lockup`; automatically uppercased
- `format` - `json`, `svg`, or `png`, default `json`

## Behavior

- All generated logos are saved under:
  - `/tank/SethFlix Visual Assets/UserGen/`
- Emoji and unsupported glyphs are omitted.
- `lockup` mode generates:
  - main logo
  - full-width horizontal line
  - sans-serif uppercase subtext
  - full-width horizontal line
- `shape=square` pads the shorter side so final width and height are equal.

## Response Modes

### 1) `format=json` (default)

Returns metadata and links to the generated asset.

Example:

```bash
curl -sS -X POST "https://gallery.sethpc.xyz/api/logo" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "SETHPC",
    "mode": "lockup",
    "shape": "square",
    "subtext": "gallery expo",
    "color": "#D35400",
    "format": "json"
  }'
```

Sample JSON response:

```json
{
  "ok": true,
  "text": "SETHPC",
  "subtext": "GALLERY EXPO",
  "mode": "lockup",
  "shape": "square",
  "color": "#D35400",
  "skipped": [],
  "asset_path": "UserGen/sethpc_20260311_123456_000001.svg",
  "svg_url": "/asset/UserGen/sethpc_20260311_123456_000001.svg",
  "png_url": "/asset-png/UserGen/sethpc_20260311_123456_000001.svg",
  "svg_download_url": "/asset/UserGen/sethpc_20260311_123456_000001.svg",
  "png_download_url": "/asset-png/UserGen/sethpc_20260311_123456_000001.svg"
}
```

### 2) `format=svg`

Returns generated SVG file directly as attachment.

```bash
curl -L -X POST "https://gallery.sethpc.xyz/api/logo" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "SETHPC.XYZ",
    "shape": "square",
    "color": "#D35400",
    "format": "svg"
  }' \
  -o "sethpc.svg"
```

### 3) `format=png`

Returns generated PNG directly as attachment.

```bash
curl -L -X POST "https://gallery.sethpc.xyz/api/logo" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "SETHPC",
    "mode": "lockup",
    "shape": "square",
    "subtext": "GALLERY EXPO",
    "format": "png"
  }' \
  -o "sethpc.png"
```

## Error Responses

Common `400` errors:

- missing `text`
- invalid `mode` (must be `standard` or `lockup`)
- invalid `shape` (must be `normal` or `square`)
- invalid `format` (must be `json`, `svg`, or `png`)
- missing `subtext` when `mode=lockup`

Error shape:

```json
{
  "ok": false,
  "error": "text is required."
}
```
