---
title: "Supported Fonts"
description: "List the fonts and weights available for the Image Translate endpoint, plus the source-language codes the OCR step accepts."
---

## Endpoint

```
GET /v1/image-translate/supported-fonts
```

Returns the live registry of valid values for the [`/translate`](./translate) endpoint:

- which fonts cover each target language,
- the default font per target language,
- every `font_weight` value the renderer accepts,
- every `source_language` code the OCR step accepts.

API-key authentication is required. This endpoint is free; it is not billed.

Call it on startup and cache the result — fonts and weights rarely change, but new ones are added over time.

## Request

No parameters. Just send your API key.

## Response

```json
{
  "success": true,
  "requestId": "550e8400e29b41d4a716446655440000",
  "data": {
    "fontsByLanguage": {
      "ko":    ["Pretendard", "BMHANNAPro", "NotoSansKR"],
      "zh-CN": ["NotoSansSC"],
      "zh-TW": ["NotoSansSC"],
      "ja":    ["NotoSansKR", "NotoSansSC", "Pretendard"],
      "en":    ["Pretendard", "NotoSansKR", "NotoSansSC"]
    },
    "defaultByLanguage": {
      "ko":    "Pretendard",
      "zh-CN": "NotoSansSC",
      "ja":    "NotoSansKR",
      "en":    "Pretendard"
    },
    "allFonts": ["Pretendard", "BMHANNAPro", "NotoSansKR", "NotoSansSC"],
    "allWeights": [
      "auto", "Thin", "Light", "Regular", "Medium",
      "SemiBold", "Bold", "ExtraBold", "Black"
    ],
    "supportedSourceLanguages": [
      "auto", "ch", "zh", "zh-CN", "zh-TW", "chinese_cht",
      "ja", "japan", "en"
    ]
  }
}
```

| Field | Type | Description |
|-------|------|-------------|
| `fontsByLanguage` | object | Per-target-language list of fonts whose glyph coverage is sufficient for that language. The first entry is the default. |
| `defaultByLanguage` | object | Convenience map: target language → default font (first entry of `fontsByLanguage[target]`). |
| `allFonts` | string[] | Every valid value of the `font` parameter on `/translate`. |
| `allWeights` | string[] | Every valid value of the `font_weight` parameter on `/translate`. |
| `supportedSourceLanguages` | string[] | Every valid value of the `source_language` parameter on `/translate` and `/ocr`. `auto` detects the language. |

Targets not listed in `fontsByLanguage` may render with reduced fidelity — pick a target that appears in the live response for best results.

## Examples

### cURL

```bash
curl -H "x-api-key: $APINOA_API_KEY" \
  https://gateway.apinoa.com/v1/image-translate/supported-fonts
```

### Python — pick the default font for the user's target language

```python
import requests

cfg = requests.get(
    "https://gateway.apinoa.com/v1/image-translate/supported-fonts",
    headers={"x-api-key": "YOUR_API_KEY"},
    timeout=10,
).json()["data"]

target = "ko"
font = cfg["defaultByLanguage"].get(target, cfg["allFonts"][0])
print(f"Use font={font!r} for target_language={target!r}")
```

### Node.js / TypeScript — validate user input before calling /translate

```typescript
const cfg = await fetch(
  "https://gateway.apinoa.com/v1/image-translate/supported-fonts",
  { headers: { "x-api-key": process.env.APINOA_API_KEY! } },
).then((r) => r.json());

const { allFonts, allWeights, supportedSourceLanguages } = cfg.data;

function pickFont(target: string, requested?: string): string {
  if (requested && allFonts.includes(requested)) return requested;
  return cfg.data.defaultByLanguage[target] ?? allFonts[0];
}
```

## Errors

| Code | HTTP | When |
|------|------|------|
| `UNAUTHORIZED` | 401 | Missing or invalid API key |

## Pricing

Free; not billed.

<ApiTester endpoint="/v1/image-translate/supported-fonts" method="GET" description="Test this endpoint with your API key" />
