2xx, client errors return 4xx, and server errors return 5xx.
Success codes
| Code | Meaning | When |
|---|---|---|
200 | OK | Successful GET request (job status, job list) |
201 | Created | Successful POST request (new import or agent job created) |
Client error codes
400 Bad Request
The request body is malformed or missing required fields.- Missing required fields (
project_namefor imports,promptfor agent edits) - Invalid JSON in the request body
- Invalid field values or types
401 Unauthorized
The API token is missing, invalid, or expired.Authorization header is formatted as Bearer YOUR_TOKEN and the token is valid. Generate a new token in Descript settings if needed.
402 Payment Required
Your account has insufficient media minutes or AI credits.403 Forbidden
The token doesn’t have access to the requested resource. Usually a Drive scoping issue.- The API token is scoped to Drive A, but the project is in Drive B
- Attempting to edit another team member’s project in a different Drive
- The project has been moved or deleted
404 Not Found
The requested resource doesn’t exist.- Invalid
job_idorproject_id - Job has expired (older than 30 days)
- Project has been deleted
429 Too Many Requests
You’ve exceeded the rate limit.| Header | Description |
|---|---|
Retry-After | Seconds to wait before retrying |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Consumed | Requests consumed in the current window |
| Endpoint | Limit |
|---|---|
Import (POST /jobs/import/project_media) | 10 requests per minute |
Agent edit (POST /jobs/agent) | 10 requests per minute |
Job status (GET /jobs/{job_id}) | 20 requests per second per user |
Retry-After before retrying. Implement exponential backoff in production code. Don’t retry immediately — this can compound the issue.
Server error codes
500 Internal Server Error
An unexpected error on Descript’s servers. Fix: Retry after a short delay (5-10 seconds). If persistent, check the Descript status page and report via Discord.502 Bad Gateway
A transient server issue, occasionally seen during agent edit processing. Fix: Retry the request after a 10-30 second delay. This is usually resolved automatically.Error handling best practices
- Always check the response status code before parsing the body
- Implement retry logic for 429 and 5xx errors with exponential backoff
- Log error responses including the full response body for debugging
- Don’t retry 4xx errors (except 429) — they indicate a problem with the request that won’t change on retry
- Use the
Retry-Afterheader on 429 responses instead of a fixed delay