Catalog overview
What the catalog covers: categories, then platforms, then jobs, each with provider, endpoint and runnable counts. No bearer token needed; every caller gets the same answer, rebuilt only when the catalog revision, a platform key or a fee changes.
It counts the rows the live public catalog lists (GET /v1/public-catalog when it serves the live catalog), with the same row rules and public record checks: hidden slugs, prohibited, mock, unpriced, inactive and disabled rows, and records the public schema refuses, are left out. A category is the vocabulary category of the job’s platform, or other when the platform is not in the vocabulary.
Every level (category, platform, job) carries providerCount (distinct providers), endpointCount, runnableCount (runnable without your own key: keyless, or a platform key exists), cheapestPerCall and cheapestPerResult. The two prices are the lowest provider price plus platform fee, null when nothing is priced that way, and never compared with each other.
The default is depth=summary: totals plus one entry per category, a few KB. depth=full is the whole document, about 490 KB. category or platform narrows the answer to one branch (default depth platforms; depth=jobs lists its jobs) and returns filter in place of totals. topic returns the matching jobs, at most 25. Each view has its own ETag; revalidate with If-None-Match.
/v1/catalog/overviewdepthanysummary (default): totals and per category counts. platforms: adds each category's platforms. jobs: adds each platform's jobs (a tree). full: each category's platforms[] and flat jobs[] with job.platform. Default platforms when category or platform is given; pass jobs to list the branch jobs. Not allowed with topic.
summaryplatformsjobsfullcategorystringA category id: answers only that category. Unknown: 404 unknown_category.
platformstringA platform id: answers the category holding it with only that platform. Unknown (or not in the given category): 404 unknown_platform.
topicstringWords such as email or phone: answers the jobs whose id, title, platform or category match (the job-first search matcher), best first, at most 25, with truncated. Combines with category and platform.
If-None-MatchstringCatalog overview view: a depth view, or a topic view when topic is given
revisionstringrequiredbuiltAtstring<date-time>requireddepthanyrequiredsummaryplatformsjobsfullfilterobjectPresent only on a narrowed view (category or platform given); such a view has no totals
Show propertiesHide properties
categorystringplatformstringtotalsobjectWhole catalog; only on a view that is not narrowed
Show propertiesHide properties
categoriesintegerrequiredplatformsintegerrequiredjobsintegerrequiredprovidersintegerrequiredendpointsintegerrequiredrunnableEndpointsintegerrequiredcategoriesobject[]requiredShow propertiesHide properties
objectidstringrequiredtitlestringrequiredplatformCountintegerrequiredjobCountintegerrequiredproviderCountintegerrequiredDistinct providers with at least one listed endpoint at this level
endpointCountintegerrequiredrunnableCountintegerrequiredEndpoints runnable without your own key (keyless, or a platform key exists)
cheapestPerCallnumber | nullrequiredLowest per-call price in dollars at this level (provider price plus platform fee); null when nothing is priced per call
cheapestPerResultnumber | nullrequiredLowest per-result price in dollars at this level (provider price plus platform fee); null when nothing is priced per result
platformsobject[]Depth platforms, jobs and full, and any view narrowed by platform
Show propertiesHide properties
objectidstringrequiredtitlestringrequiredjobCountintegerrequiredproviderCountintegerrequiredDistinct providers with at least one listed endpoint at this level
endpointCountintegerrequiredrunnableCountintegerrequiredEndpoints runnable without your own key (keyless, or a platform key exists)
cheapestPerCallnumber | nullrequiredLowest per-call price in dollars at this level (provider price plus platform fee); null when nothing is priced per call
cheapestPerResultnumber | nullrequiredLowest per-result price in dollars at this level (provider price plus platform fee); null when nothing is priced per result
jobsobject[]Depth jobs only: this platform's jobs
Show propertiesHide properties
objectidstringrequiredtitlestringrequiredproviderCountintegerrequiredDistinct providers with at least one listed endpoint at this level
endpointCountintegerrequiredrunnableCountintegerrequiredEndpoints runnable without your own key (keyless, or a platform key exists)
cheapestPerCallnumber | nullrequiredLowest per-call price in dollars at this level (provider price plus platform fee); null when nothing is priced per call
cheapestPerResultnumber | nullrequiredLowest per-result price in dollars at this level (provider price plus platform fee); null when nothing is priced per result
jobsobject[]Depth full only: the category's jobs, each naming its platform
Show propertiesHide properties
objectidstringrequiredtitlestringrequiredplatformstringrequiredproviderCountintegerrequiredDistinct providers with at least one listed endpoint at this level
endpointCountintegerrequiredrunnableCountintegerrequiredEndpoints runnable without your own key (keyless, or a platform key exists)
cheapestPerCallnumber | nullrequiredLowest per-call price in dollars at this level (provider price plus platform fee); null when nothing is priced per call
cheapestPerResultnumber | nullrequiredLowest per-result price in dollars at this level (provider price plus platform fee); null when nothing is priced per result
revisionstringrequiredbuiltAtstring<date-time>requiredtopicstringrequiredThe topic as matched: lowercased, punctuation folded to spaces
filterobjectPresent only on a narrowed view (category or platform given); such a view has no totals
Show propertiesHide properties
categorystringplatformstringmatchCountintegerrequiredJobs that match before the cap
truncatedbooleanrequiredTrue when matchCount is over the 25 jobs answered
jobsobject[]requiredShow propertiesHide properties
objectidstringrequiredtitlestringrequiredproviderCountintegerrequiredDistinct providers with at least one listed endpoint at this level
endpointCountintegerrequiredrunnableCountintegerrequiredEndpoints runnable without your own key (keyless, or a platform key exists)
cheapestPerCallnumber | nullrequiredLowest per-call price in dollars at this level (provider price plus platform fee); null when nothing is priced per call
cheapestPerResultnumber | nullrequiredLowest per-result price in dollars at this level (provider price plus platform fee); null when nothing is priced per result
categorystringrequiredplatformstringrequiredView unchanged since If-None-Match
validation_error: error.field names the argument (depth, category, platform or topic) and error.message says what to send
unknown_category (error.categories lists the ids) or unknown_platform; error.field names the argument
catalog_loading: no catalog snapshot is loaded yet; retry after retry-after seconds. production_runtime_unavailable: this deployment serves no v2 catalog