Skip to main content
Every endpoint in the TestDino Public API follows the same conventions for authentication, response shape, errors, and pagination.

Quick reference

Authentication

All endpoints require a Bearer token in the Authorization header:
Create a PAT from User Settings → Personal Access Tokens. A PAT carries no permission scopes: you grant it access to specific organizations and projects when you create it. See Generate API keys.
NoteTokens can be rotated or revoked from User Settings → Personal Access Tokens at any time. A revoked token stops working immediately and returns 401 TOKEN_REVOKED.

Rate limits

Every response includes standard rate-limit headers: When you exceed a limit, the API returns 429 RATE_LIMIT_EXCEEDED. PDF-specific 429 responses also include a Retry-After header indicating how many seconds to wait.
TipFor batch work, back off to 1 request/second (60/min) to leave headroom. If you need more, throttle on RateLimit-Remaining and pause when it drops below 10.

Response format

Every successful response uses this envelope:
Every error response uses this envelope:

Errors

Branch your client on error.code, not HTTP status alone. Codes are stable; messages may change.
TipRetry only on 429 and 5xx. Use exponential backoff starting at 1 second, capped at 30 seconds, with jitter. Never retry 400, 401, 403, or 404.

Pagination

List endpoints accept page and limit. limit is not an arbitrary 1–100 range. Most run/analytics lists only accept 10, 25, 50, or 100 (default 10). Sending 20 returns 400 INVALID_LIMIT: Pagination metadata is included in the response:
Iterate all pages in Node.js:
NoteA few endpoints use offset + limit instead of page + limit (e.g. GET /test-cases/history). The parameter name is documented on each endpoint’s reference page.

Date filtering

There is no global date-filter convention. Each endpoint documents its own parameters: Test runs do not accept period, dateRange, or camelCase startDate/endDate. Use snake_case start_date/end_date. Rolling windows (days on explorer/specs/analytics): values other than 7, 30, or 90 are snapped to the nearest allowed window (default 30 when absent or invalid). String presets like dateRange=7d are not supported on analytics. Pass days=7 instead.
NoteSending undocumented query keys on public routes is stripped at the gateway, not forwarded silently. Check each endpoint’s reference page for the exact allowlist.