Skip to content

Concepts

Auth

  • Requests authenticate with Authorization: Bearer <external_token>, or the web app's HttpOnly session cookie (backend auth is cookie-or-bearer).
  • The free tier needs no credentials, anonymous requests are served within the free quota.
  • external_tokens are issued by Google/Apple sign-in or OIDC. Identity flows (signup, login, password reset) are served by allauth headless at /_allauth/app/v1/, see Auth.

Conversions are asynchronous

Every conversion is a 3-step flow:

  1. Submit, POST /api/v1/<service>/convert/ returns 202 with the conversion id.
  2. Poll, GET /api/v1/<service>/conversion/{id}/ returns { status, … }.
  3. Download, GET /api/v1/<service>/{id}/download/ streams the file, or redirects to it.

Statuses: pending → processing → completed | partial | failed.

Polling cadence

  • Document conversions: poll every 2-5 s.
  • Font conversions: poll every 1-2 s (most finish in <2 s).

Use exponential backoff if a conversion is still processing after 60 s.

Credits

  • Free tier: 10 credits per day, counted per device.
  • Paid: each operation is priced by the live rate card.

Locales & RTL

The API is language-agnostic. Client UIs support en, fa, ar. RTL is handled client-side (dir="rtl" on fa/ar).