Skip to main content

Base URL

https://api.uplint.dev
For local development:
http://localhost:8000

Authentication

All endpoints require authentication via the Authorization header. Pass an API key or JWT token:
Authorization: Bearer ul_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
See the Authentication guide for details on API key scopes, lifecycle, and security best practices.

Response format

All responses follow a consistent envelope format: Success:
{
  "status": "SUCCESS",
  "message": "Human-readable description",
  "data": { ... },
  "timestamp": "2026-02-10T12:00:00Z"
}
Error:
{
  "status": "ERROR",
  "message": "Human-readable error description",
  "errors": ["Specific error detail"],
  "timestamp": "2026-02-10T12:00:00Z"
}
Paginated lists include a pagination object:
{
  "status": "SUCCESS",
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total": 47,
    "total_pages": 3
  }
}

API groups

Rate limits

API-level rate limits apply per tenant. Context-level rate limits apply per file context and are configured when creating or updating a context. When a rate limit is exceeded, the API returns a 429 status code.

Status codes

CodeDescription
200Success
201Resource created
400Bad request — validation failed or file rejected
401Unauthorized — missing or invalid credentials
404Resource not found
409Conflict — resource already exists or invalid state transition
422Validation error — request body failed schema validation
429Rate limit exceeded