Integrate file conversion into your applications with the ConvertX REST API and official SDKs.
https://goconvertfile.comAPI keys are available on the Pro and Business plans. Once subscribed, go to your account settings to generate a key. Keys use the format gcf_live_<64hex>.
Pass your API key in the Authorization header as a Bearer token:Authorization: Bearer gcf_live_<your_64_hex_key>
Upload a file, create a conversion job, and poll for the result:
curl -X POST https://goconvertfile.com/api/uploads/presign \
-H "Authorization: Bearer gcf_live_..." \
-F "file=@document.pdf"@convertx/sdk-node
npm install @convertx/sdk-nodeconvertx-sdk
pip install convertx-sdkUpload a file then create a conversion job
curl -X POST https://goconvertfile.com/api/jobs \
-H "Authorization: Bearer gcf_live_..." \
-H "Content-Type: application/json" \
-d '{
"fileKey": "uploads/1700000000-document.pdf",
"sourceFormat": "pdf",
"targetFormat": "docx",
"category": "DOCUMENT"
}'Poll or stream job status updates
curl https://goconvertfile.com/api/jobs/job_abc123 \
-H "Authorization: Bearer gcf_live_..."View your recent conversion jobs
curl https://goconvertfile.com/api/jobs?limit=10 \
-H "Authorization: Bearer gcf_live_..."Generate a new API key programmatically
curl -X POST https://goconvertfile.com/api/api-keys \
-H "Authorization: Bearer gcf_live_..." \
-H "Content-Type: application/json" \
-d '{ "name": "My Dev Key" }'/api/uploads/presignUpload a file for conversion. Accepts multipart/form-data with a file field. Returns a fileKey for use in job creation.
Bearer token or Turnstile (anonymous)
multipart/form-data with "file" field
{ success, uploadUrl, fileKey, publicUrl, expiresIn, category, format }
/api/download-urlDownload a file from a remote URL and prepare it for conversion.
Bearer token or Turnstile (anonymous)
{ "url", "sourceFormat", "turnstileToken" }
{ success, fileKey }
/api/jobsCreate a conversion job. After uploading or downloading a file, submit this to start processing.
Bearer token or Turnstile (anonymous)
{ "fileKey", "sourceFormat", "targetFormat", "category", "options"? }
{ success, jobId, status }
/api/jobs/:idGet the current status and result of a conversion job.
Bearer token
—
{ success, job: { id, sourceFormat, targetFormat, category, status, resultUrl, errorMessage, createdAt, completedAt } }
/api/jobs/:id/streamSSE endpoint that streams job status updates until completion or failure.
None (public)
—
text/event-stream with JSON status updates
/api/jobsList recent jobs for the authenticated user.
Bearer token
—
{ success, jobs: Job[] }
/api/api-keysCreate a new API key with the given name and optional permissions.
Bearer token
{ "name", "permissions"? }
{ success, apiKey: { id, prefix, fullKey } }
/api/api-keysList all active API keys for the authenticated user.
Bearer token
—
{ success, keys: ApiKey[] }
/api/api-keys/:idRevoke an API key by its ID.
Bearer token
—
{ success }
/api/files/:fileKeyDownload a converted or uploaded file by its file key.
None (public)
—
Binary file with Content-Disposition header
All endpoints are rate-limited per API key and IP address. Limits vary by endpoint and plan:
| Endpoint | Free / Anonymous | Pro / Business |
|---|---|---|
| POST /api/uploads/presign | 10 req / 60s | 60 req / 60s |
| POST /api/jobs | 20 req / 60s | 120 req / 60s |
| GET /api/jobs | 60 req / 60s | 300 req / 60s |
| GET /api/files/:fileKey | 120 req / 60s | 600 req / 60s |
For occasional use
For daily drivers
For teams
| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Missing or invalid parameters |
| 401 | UNAUTHORIZED | Invalid or missing API key |
| 402 | PAYMENT_REQUIRED | Insufficient credits |
| 404 | NOT_FOUND | Job or API key not found |
| 429 | RATE_LIMITED | Rate limit exceeded or daily conversion cap reached |
| 500 | SERVER_ERROR | Internal server error |
Uploaded and converted files are automatically deleted after 24 hours. A cleanup process runs periodically to remove expired files from storage.
Converted files are stored in temporary storage. Download your results before they expire. Each job response includes a resultUrl field for downloading.