One call, one file, one result
The conversion API fits in two endpoints: a conversion, and the table of served pairs. Free, no key, no account — protected by a burst limit.
Try it now
Send any file up to 10 MB as multipart HTTP, with the target in `to`:
curl -X POST https://api.convertchester.com/v1/convert \ -F "file=@logo.png" \ -F "to=jpeg"
JSON response structure
A structural refusal returns HTTP 200 OK with status: "refused" and a reason: the verdict is in the body. HTTP 4xx errors only concern the request itself — empty file, too large, unknown target.
{
"status": "converted",
"document": {
"sha256": "30f35a4b89f071a82f57ed9834fd77df...",
"bytes": 80
},
"source": "png",
"target": "jpeg",
"result": {
"filename": "logo.jpg",
"media_type": "image/jpeg",
"sha256": "6a7570d4efd75f9f3d9780e044240c88...",
"bytes": 644,
"content": "/9j/4AAQSkZJRgABAgAAAQAB…"
}
}Available endpoints
| Method | Path | Role |
|---|---|---|
| POST | /v1/convert | Convert a file to the requested format |
| GET | /v1/formats | The table of served pairs — computed, never written by hand |
| GET | /v1/usage | Current account usage (key required) |
| GET | /v1/openapi | The OpenAPI specification, served by the API itself |
Useful headers
Accept-Language picks the language of human-readable messages (fr or en) — codes never translate. Idempotency-Key binds a key to the fingerprint of the submitted file: replaying it with the same file is harmless, replaying it with another returns 409 idempotency_conflict.
What gets counted
With an API key, the billed unit is the distinct file, identified by its SHA-256 — not the HTTP call. Resubmitting the same file is free for seven days, and a refusal is never counted: only what was produced counts.