API Reference
The DomainOps REST API lets you manage all resources programmatically — domains, endpoints, portfolios, liveness configs, exposure scans, notifications, and renewals.
Base URL
https://api.domainops.io/api/v1The full machine-readable spec is published as OpenAPI 3.0 — import it into Postman, Insomnia or any code-generator to scaffold a typed client.
Authentication
All API requests must be authenticated. Generate a token from Settings → API Tokens. Three methods are supported:
1. Query parameter
GET https://api.domainops.io/api/v1/domains?api_key=YOUR_TOKEN2. Bearer header
curl https://api.domainops.io/api/v1/domains \
-H "Authorization: Bearer YOUR_TOKEN"3. Request body
{
"api_key": "YOUR_TOKEN"
}Keep your API token secret. Never expose it in client-side code or public repositories.
Rate limiting
The API allows 100 requests per minute per team. When the limit is exceeded, the API returns HTTP 429. Implement exponential backoff before retrying.
Error format
All errors are returned as JSON with a consistent structure:
{
"error": "Domain already exists in your account",
"code": "DOMAIN_EXISTS",
"timestamp": "2026-03-28T09:00:00.000Z",
"path": "/api/v1/domains"
}The code field is optional and present only when a machine-readable error code is available.
HTTP status codes
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | Missing or invalid request parameters |
| 401 | Unauthorized | Missing or invalid API token |
| 402 | Payment Required | Feature requires a higher plan or limit reached |
| 403 | Forbidden | Token lacks permission for this action |
| 404 | Not Found | Resource does not exist |
| 409 | Conflict | Resource already exists or is in a conflicting state |
| 429 | Too Many Requests | Rate limit exceeded — retry after the indicated delay |
| 500 | Server Error | Unexpected server-side error |
| 503 | Service Unavailable | Service temporarily down for maintenance |