UAIDO API Documentation

Public information API v1: authentication, endpoints, errors, and rate limits.

Endpoints and authentication

Base URL: https://uaido.io. GET /api/v1/product returns name, description, status, website, and documentation. GET /api/v1/resources returns a resources array of title and URL pairs. Both support HEAD. No API key is required; do not attach private credentials. The schema at /openapi.json has unique operation IDs and typed response schemas.

curl -i -H 'Accept: application/json' https://uaido.io/api/v1/resources

Rate limits and retries

The public API allows approximately 60 requests per 60 seconds per client IP at each Cloudflare location. Shared networks share a quota. The limiter is eventually consistent, not a billing counter. Every API response advertises RateLimit-Policy: "public";q=60;w=60, using draft-ietf-httpapi-ratelimit-headers-10 structured fields. This specification is a draft, not an RFC.

A rejected request returns HTTP 429, Retry-After: 60, and RateLimit: "public";r=0;t=60. Wait at least that long before retrying with jitter. Successful responses omit the remaining-quota field because the platform does not expose a reliable count. HTTP 503 means the limiter is unavailable; retry after 60 seconds.

Errors and negotiation

Errors are JSON objects with a string error property. Unknown API paths return 404. Unsupported methods return 405 with Allow: GET, HEAD, OPTIONS. Unsupported Accept values return 406. OPTIONS supports anonymous cross-origin read access. Content pages support HTML and Markdown with Vary: Accept, Accept-Encoding; API endpoints serve application/json.

Versioning and deprecation

Read /docs/versioning for the v1 compatibility policy and the Deprecation and Sunset signals. This contract covers only the public website information API. Private-preview control-plane contracts have a separate lifecycle.