Browse the API docs
Guide

OpenAPI specification

The Crayo API publishes an OpenAPI 3.1 document at crayo.ai/docs/openapi.json that describes all 68 endpoints with their parameters, request bodies, example responses and error codes. Import it into an API client or a code generator to get a typed SDK.

Download the specification

The document is generated from the same endpoint registry that renders these pages and the API console in the Crayo app, so it always matches what is documented here. It is served as plain JSON.

curl
curl -o crayo-openapi.json "https://crayo.ai/docs/openapi.json"
  • Format: OpenAPI 3.1.0, title Crayo API, server https://api.crayo.ai.
  • Security: one bearerAuth HTTP bearer scheme applied to every operation. Supply a key that starts with crayo_sk_.
  • Coverage: 68 operations across 12 tags, one tag per endpoint group in these docs.

What each operation contains

Operations are keyed by path and lower-case method. Each one carries the endpoint id as operationId, the description and notes from these docs, path and query parameters with enums and defaults, a JSON request body schema with an example where the endpoint takes a body, and a 200 response schema inferred from the example response.

excerpt
{
  "/v1/projects/{id}/export": {
    "post": {
      "operationId": "export-project",
      "summary": "Export project",
      "tags": [
        "Projects"
      ],
      "x-credits": "1 export credit per second of finished video",
      "x-rate-limit": {
        "tier": "heavy",
        "requests_per_second": 2,
        "requests_per_minute": 10
      }
    }
  }
}
  • x-credits is the plain-language cost string shown on every endpoint page.
  • x-rate-limit names the tier and its requests per second and per minute, the same numbers as the rate limit tables.
  • Error responses are listed per status with example bodies keyed by code. The shared 401, 429 and 500 responses are present on every operation.

Shared schemas

components.schemas defines the Error envelope and the objects that View Tracker responses and webhooks reuse everywhere they appear. A field we do not have is null, never omitted.

SchemaDescription
ProfileAn account on any platform. The same shape comes back from a live lookup, a tracker's latest reading, a feed's profile and a webhook. Fields a platform does not expose are null, never omitted.
PostA single video, reel, photo post or tweet. Counts are the platform's numbers at observed_at. video_url is always null: this API never returns media download links. Use thumbnail_url and images for visuals. A stored post also carries null for fields we never keep (images, and owner on profile feeds).
CommentA comment on a post.
ProfileSnapshotOne stored reading of a profile.
PostSnapshotOne stored reading of a post.
TrackedPostA post inside a profile tracker: the post object plus when we first and last saw it and whether it has been removed.
TrackerA managed target: a profile or a single post that we refresh on your cadence and keep every reading of.
TrackerEventSomething that changed on a tracked target between two refreshes. Kept for 90 days.
UsageYour tracker credits, projected spend and target count.
InsightsOptional math over a profile tracker's stored readings. Every field is null until there is enough history.
AccountAboutThe public bio and headline stats of an account.
AccountSummaryOne entry in a followers or following list.
BatchItemThe result for one target in a batch create, in the order you sent them.
PaginationEvery list answers with the same pagination object. Pass next_cursor back unchanged as cursor to get the next page; stop when has_more is false. A cursor is an opaque signed token bound to your account and to the request that produced it. Sending it with a different target, route or account is 400 VALIDATION_ERROR (invalid cursor).
TranscriptSegmentOne timed line of a transcript.

Tags

TagEndpointsReference
Account1/docs/account
Assets and Uploads7/docs/assets
Generation6/docs/generation
Catalogs4/docs/catalogs
Transcripts1/docs/transcripts
Projects6/docs/projects
Exports2/docs/exports
AutoClip3/docs/autoclip
Speech Enhancer5/docs/speech-enhancer
View Tracker: Raw (manage it yourself)15/docs/view-tracker-raw
View Tracker: Managed (our scheduler)14/docs/view-tracker-managed
Webhooks4/docs/webhooks
New to the Crayo API? See what it is forUse cases, pricing and the console walkthrough live on the API feature page.

FAQs

Frequent questions

OpenAPI 3.1.0. The info block names the API Crayo API, the servers list points at the production base URL, and the security scheme is HTTP bearer authentication.

Every operation has an x-credits string describing what the call costs and an x-rate-limit object with its tier, requests per second and requests per minute. Tags match the endpoint groups in these docs.

Yes. components.schemas holds an Error schema plus 15 shared objects such as Profile, Post, Comment, ProfileSnapshot, each with field descriptions and an example.

Each operation lists its error statuses with example bodies keyed by code, including the shared 401 MISSING_API_KEY and UNAUTHORIZED, 429 RATE_LIMITED and 500 SERVER_ERROR responses.

Still have questions?

Contact our 24/7 support team for any concerns or inquiries.

Get in touch