Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.devtune.ai/llms.txt

Use this file to discover all available pages before exploring further.

The DevTune API uses standard HTTP status codes and returns structured JSON error responses.

Error Response Format

All errors follow this structure:
{
  "error": "error_code",
  "message": "Human-readable description of the error.",
  "status": 400
}
FieldDescription
errorMachine-readable error code (e.g., unauthorized, bad_request)
messageHuman-readable explanation
statusHTTP status code

Error Codes

400 Bad Request

{
  "error": "bad_request",
  "message": "Invalid query parameters: ...",
  "status": 400
}
Cause: One or more query parameters failed validation. The message includes details about which parameters are invalid. Fix: Check the endpoint documentation for valid parameter values and formats.

401 Unauthorized

{
  "error": "unauthorized",
  "message": "Invalid or missing API key",
  "status": 401
}
Cause: The Authorization header is missing, malformed, or contains an invalid key. Fix: Ensure your request includes Authorization: Bearer dtk_live_... with a valid, active API key.

403 Forbidden

{
  "error": "forbidden",
  "message": "API access requires a Plus plan or higher",
  "status": 403
}
Cause: Either your plan does not include API access, or the API key does not have access to the requested project. Fix: Upgrade to a Plus plan or higher. If you already have a qualifying plan, verify the API key is scoped to the correct project.
Note: A 403 can also occur when using a project-scoped API key to access a different project’s resources.

404 Not Found

{
  "error": "not_found",
  "message": "The requested resource was not found",
  "status": 404
}
Cause: The resource (project, webhook, etc.) does not exist or the API key does not have access to it. Fix: Verify the resource ID in the URL. If using a project-scoped key, ensure the project ID matches the key’s scope.

429 Too Many Requests

{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded. Please try again later.",
  "status": 429
}
Cause: You’ve exceeded the rate limit for your plan tier. Fix: Wait until the X-RateLimit-Reset timestamp (in the response headers) before retrying. See Rate Limits for details.

500 Internal Server Error

{
  "error": "internal_error",
  "message": "An unexpected error occurred",
  "status": 500
}
Cause: Something went wrong on our end. Fix: Retry after a short delay. If the error persists, contact support.

Troubleshooting Tips

  • Getting 401 on every request? Check that you’re using the Bearer prefix: Authorization: Bearer dtk_live_...
  • Getting 403 with a valid key? The project ID in the URL must match the project the key was created for.
  • Getting 400 on date parameters? Dates must be in YYYY-MM-DD format (e.g., 2026-01-15).
  • Getting 429 unexpectedly? Rate limits are per-minute. If you’re making many requests in a loop, add a short delay between calls.