Font Conversion API¶
Base path: /fonts/api/v1/
Endpoints¶
| Method | Path | Purpose |
|---|---|---|
POST |
/upload/ |
Upload font file → returns s3_key |
POST |
/convert/ |
Convert from s3_key → 202 { id, status } |
GET |
/conversion/{id}/ |
Poll conversion status |
GET |
/{id}/download/ |
Redirect to presigned URL |
POST |
/validate/ |
Check if conversion is supported without executing |
Supported formats¶
19 formats, 342 routes, served by 2 engines:
| Engine | Inputs | Outputs |
|---|---|---|
fonttools (fast) |
ttf, otf, woff, woff2 | ttf, otf, woff, woff2 |
fontforge (full) |
+ eot, svg, pfa, pfb, ufo, dfont, ttc, bdf, pt3, t42, cff, sfd, fon, fnt, otb | same set |
fonttools is tried first when the route is supported; falls back to fontforge for anything else.
Limits¶
- Free: 10 conversions / IP / 30 days, 5 MB max input.
- Paid: 1 credit per conversion, plan-dependent size cap.
Worked example¶
```bash
1. Upload¶
curl -X POST https://indox.org/fonts/api/v1/upload/ \ -H "Authorization: Bearer eyJ…" \ -F "[email protected]"
→¶
2. Convert¶
curl -X POST https://indox.org/fonts/api/v1/convert/ \ -H "Authorization: Bearer eyJ…" \ -H "Content-Type: application/json" \ -d '{"s3_key":"production/input/2026/05/11/ttf/...","target_format":"woff2"}'
→¶
3. Poll, 4. Download¶
```