# OpenAPI: which products publish a spec AI agents can read

104 of 151 products we drove publish an OpenAPI document. What it is, which products have one, and how to publish yours for agents.

Source: https://agentdrives.com/standards/openapi · Updated 2026-10-24 · as data: https://agentdrives.com/standards/openapi.json · licence CC BY 4.0

An OpenAPI document describes every route of an API: its address, what to send and what comes back. An agent reads it to call the API without guessing.

## The numbers

From our drives of 151 products, 1–24 Oct 2026 (https://agentdrives.com/data/facts?via=md):

- Publish an OpenAPI document: 104 of 151 (https://agentdrives.com/data/facts?via=md#surface.openapi)
- Have a public API: 146 of 151 (https://agentdrives.com/data/facts?via=md#surface.api)

## What it is

The OpenAPI Specification is a JSON or YAML format for describing HTTP APIs. The latest release is 3.2.1 [1]; the released lines are 2.0, 3.0, 3.1, 3.2 [1].

Tools turn it into clients, docs and tests. An agent uses it the same way: it reads the routes, the fields and the errors, then makes the call.

## How many products publish one

104 of 151 products we drove publish an OpenAPI document. 146 of 151 have a public API.

## How to add it

1. **Publish it at a stable address.** For example `/openapi.json`, without a sign-in. Agent payment discovery reads it from that address too. [2]

2. **Describe the errors as well as the success.** List each error answer with a field that says what to do next. An agent that knows the fix doesn't need a person.

3. **Include sign-up and keys.** If an agent can create an account or an API key over the API, put those routes in the document. They are the first an agent needs.

4. **Link it from your docs and llms.txt.** An agent looks there first.

## Check it yourself

1. **Fetch it from a server.** It should parse as JSON or YAML and name its version.

   ```
   curl -s https://example.com/openapi.json | head -c 300
   ```

2. **Find your key route in it.** Search the document for the route that creates an API key. If it isn't there, an agent can't find it either.

## Products that publish an OpenAPI document

- [ActiveCampaign](https://agentdrives.com/tools/activecampaign.md?via=md): L1 Needs a person
- [Acuity Scheduling](https://agentdrives.com/tools/acuityscheduling.md?via=md): L1 Needs a person
- [AgentMail](https://agentdrives.com/tools/agentmail.md?via=md): L4 Runs on its own
- [Amplitude](https://agentdrives.com/tools/amplitude.md?via=md): L1 Needs a person
- [Anchor Browser](https://agentdrives.com/tools/anchorbrowser.md?via=md): L4 Runs on its own
- [Apify](https://agentdrives.com/tools/apify.md?via=md): L1 Needs a person
- [Asana](https://agentdrives.com/tools/asana.md?via=md): L1 Needs a person
- [Attio](https://agentdrives.com/tools/attio.md?via=md): L4 Runs on its own
- [Basecamp](https://agentdrives.com/tools/basecamp.md?via=md): L1 Needs a person
- [Baserow](https://agentdrives.com/tools/baserow.md?via=md): L1 Needs a person
- [beehiiv](https://agentdrives.com/tools/beehiiv.md?via=md): L1 Needs a person
- [BigCommerce](https://agentdrives.com/tools/bigcommerce.md?via=md): L1 Needs a person
- [Box](https://agentdrives.com/tools/box.md?via=md): L1 Needs a person
- [Brave Search API](https://agentdrives.com/tools/brave.md?via=md): L1 Needs a person
- [Brevo](https://agentdrives.com/tools/brevo.md?via=md): L1 Needs a person
- [Browse AI](https://agentdrives.com/tools/browse.md?via=md): L1 Needs a person
- [Browserbase](https://agentdrives.com/tools/browserbase.md?via=md): L2 Gets in
- [Browserless](https://agentdrives.com/tools/browserless.md?via=md): L4 Runs on its own
- [Buttondown](https://agentdrives.com/tools/buttondown.md?via=md): L4 Runs on its own
- [Cal.com](https://agentdrives.com/tools/cal.md?via=md): L1 Needs a person
- [Calendly](https://agentdrives.com/tools/calendly.md?via=md): L1 Needs a person
- [Canva](https://agentdrives.com/tools/canva.md?via=md): L1 Needs a person
- [Chatwoot](https://agentdrives.com/tools/chatwoot.md?via=md): L1 Needs a person
- [ClickHouse Cloud](https://agentdrives.com/tools/clickhouse.md?via=md): L4 Runs on its own
- [ClickUp](https://agentdrives.com/tools/clickup.md?via=md): L1 Needs a person
- [Close](https://agentdrives.com/tools/close.md?via=md): L1 Needs a person
- [Coda](https://agentdrives.com/tools/coda.md?via=md): L3 Does the work
- [Craft](https://agentdrives.com/tools/craft.md?via=md): L4 Runs on its own
- [DocuSeal](https://agentdrives.com/tools/docuseal.md?via=md): L4 Runs on its own
- [DocuSign](https://agentdrives.com/tools/docusign.md?via=md): L1 Needs a person
- [Exa](https://agentdrives.com/tools/exa.md?via=md): L2 Gets in
- [Fathom Analytics](https://agentdrives.com/tools/usefathom.md?via=md): L1 Needs a person
- [Figma](https://agentdrives.com/tools/figma.md?via=md): L1 Needs a person
- [Fillout](https://agentdrives.com/tools/fillout.md?via=md): L4 Runs on its own
- [Firecrawl](https://agentdrives.com/tools/firecrawl.md?via=md): L4 Runs on its own
- [Fly.io](https://agentdrives.com/tools/fly.md?via=md): L2 Gets in
- [folk](https://agentdrives.com/tools/folk.md?via=md): L1 Needs a person
- [Formbricks](https://agentdrives.com/tools/formbricks.md?via=md): L4 Runs on its own
- [Front](https://agentdrives.com/tools/front.md?via=md): L1 Needs a person
- [GitHub](https://agentdrives.com/tools/github.md?via=md): L1 Needs a person
- [GitLab](https://agentdrives.com/tools/gitlab.md?via=md): L1 Needs a person
- [GoCardless](https://agentdrives.com/tools/gocardless.md?via=md): L4 Runs on its own
- [Gorgias](https://agentdrives.com/tools/gorgias.md?via=md): L1 Needs a person
- [Heap](https://agentdrives.com/tools/heap.md?via=md): L1 Needs a person
- [HubSpot](https://agentdrives.com/tools/hubspot.md?via=md): L1 Needs a person
- [Intercom](https://agentdrives.com/tools/intercom.md?via=md): L3 Does the work
- [Invoice Ninja](https://agentdrives.com/tools/invoiceninja.md?via=md): L1 Needs a person
- [Jira](https://agentdrives.com/tools/atlassian.md?via=md): L1 Needs a person
- [Kit](https://agentdrives.com/tools/kit.md?via=md): L1 Needs a person
- [Klaviyo](https://agentdrives.com/tools/klaviyo.md?via=md): L1 Needs a person
- [Mailchimp](https://agentdrives.com/tools/mailchimp.md?via=md): L1 Needs a person
- [Mailgun](https://agentdrives.com/tools/mailgun.md?via=md): L1 Needs a person
- [Mailtrap](https://agentdrives.com/tools/mailtrap.md?via=md): L1 Needs a person
- [Make](https://agentdrives.com/tools/make.md?via=md): L1 Needs a person
- [Mattermost](https://agentdrives.com/tools/mattermost.md?via=md): L3 Does the work
- [Memos](https://agentdrives.com/tools/usememos.md?via=md): L1 Needs a person
- [Mixpanel](https://agentdrives.com/tools/mixpanel.md?via=md): L3 Does the work
- [Mollie](https://agentdrives.com/tools/mollie.md?via=md): L1 Needs a person
- [monday.com](https://agentdrives.com/tools/monday.md?via=md): L4 Runs on its own
- [Moneybird](https://agentdrives.com/tools/moneybird.md?via=md): L1 Needs a person
- [MongoDB Atlas](https://agentdrives.com/tools/mongodb.md?via=md): L1 Needs a person
- [Neon](https://agentdrives.com/tools/neon.md?via=md): L3 Does the work
- [Netlify](https://agentdrives.com/tools/netlify.md?via=md): L2 Gets in
- [Nifty](https://agentdrives.com/tools/niftypm.md?via=md): L4 Runs on its own
- [NocoDB](https://agentdrives.com/tools/nocodb.md?via=md): L4 Runs on its own
- [Notion](https://agentdrives.com/tools/notion.md?via=md): L1 Needs a person
- [PandaDoc](https://agentdrives.com/tools/pandadoc.md?via=md): L1 Needs a person
- [Parallel](https://agentdrives.com/tools/parallel.md?via=md): L4 Runs on its own
- [Perplexity API](https://agentdrives.com/tools/perplexity.md?via=md): L1 Needs a person
- [Pinata](https://agentdrives.com/tools/pinata.md?via=md): L1 Needs a person
- [Pipedream](https://agentdrives.com/tools/pipedream.md?via=md): L4 Runs on its own
- [Pipedrive](https://agentdrives.com/tools/pipedrive.md?via=md): L4 Runs on its own
- [Plane](https://agentdrives.com/tools/plane.md?via=md): L4 Runs on its own
- [Polar](https://agentdrives.com/tools/polar.md?via=md): L1 Needs a person
- [PostHog](https://agentdrives.com/tools/posthog.md?via=md): L1 Needs a person
- [Postiz](https://agentdrives.com/tools/postiz.md?via=md): L2 Gets in
- [Postmark](https://agentdrives.com/tools/postmarkapp.md?via=md): L1 Needs a person
- [Publer](https://agentdrives.com/tools/publer.md?via=md): L1 Needs a person
- [Railway](https://agentdrives.com/tools/railway.md?via=md): L3 Does the work
- [Render](https://agentdrives.com/tools/render.md?via=md): L1 Needs a person
- [Resend](https://agentdrives.com/tools/resend.md?via=md): L1 Needs a person
- [SendGrid](https://agentdrives.com/tools/sendgrid.md?via=md): L1 Needs a person
- [Shortcut](https://agentdrives.com/tools/shortcut.md?via=md): L4 Runs on its own
- [SignWell](https://agentdrives.com/tools/signwell.md?via=md): L4 Runs on its own
- [Slack](https://agentdrives.com/tools/slack.md?via=md): L1 Needs a person
- [Smartsheet](https://agentdrives.com/tools/smartsheet.md?via=md): L1 Needs a person
- [Steel](https://agentdrives.com/tools/steel.md?via=md): L2 Gets in
- [Stripe](https://agentdrives.com/tools/stripe.md?via=md): L3 Does the work
- [Supabase](https://agentdrives.com/tools/supabase.md?via=md): L1 Needs a person
- [Tally](https://agentdrives.com/tools/tally.md?via=md): L4 Runs on its own
- [Taskade](https://agentdrives.com/tools/taskade.md?via=md): L1 Needs a person
- [Tavily](https://agentdrives.com/tools/tavily.md?via=md): L3 Does the work
- [TidyCal](https://agentdrives.com/tools/tidycal.md?via=md): L3 Does the work
- [Todoist](https://agentdrives.com/tools/todoist.md?via=md): L1 Needs a person
- [Trello](https://agentdrives.com/tools/trello.md?via=md): L1 Needs a person
- [Turso](https://agentdrives.com/tools/turso.md?via=md): L1 Needs a person
- [Twenty](https://agentdrives.com/tools/twenty.md?via=md): L4 Runs on its own
- [Typefully](https://agentdrives.com/tools/typefully.md?via=md): L1 Needs a person
- [UploadThing](https://agentdrives.com/tools/uploadthing.md?via=md): L1 Needs a person
- [Vercel](https://agentdrives.com/tools/vercel.md?via=md): L2 Gets in
- [Webflow](https://agentdrives.com/tools/webflow.md?via=md): L2 Gets in
- [Wrike](https://agentdrives.com/tools/wrike.md?via=md): L1 Needs a person
- [Zapier](https://agentdrives.com/tools/zapier.md?via=md): L1 Needs a person
- [Zendesk](https://agentdrives.com/tools/zendesk.md?via=md): L1 Needs a person

## Questions

**JSON or YAML?**

Either works. JSON is the easier of the two for an agent to fetch and parse.

**Do I need the newest version?**

No. A correct and complete document matters more to an agent than the newest version.

## Sources

1. [OpenAPI Specification versions](https://spec.openapis.org/oas/)
2. [MPP payment discovery](https://paymentauth.org/draft-payment-discovery-01)

## More standards

- [MCP](https://agentdrives.com/standards/mcp.md): A server that turns a product's actions into tools an agent can call.
- [llms.txt](https://agentdrives.com/standards/llms-txt.md): A Markdown map of a product's docs, written for language models.
- [Web Bot Auth](https://agentdrives.com/standards/web-bot-auth.md): An agent signs each request; a site's bot check can verify who sent it.
- [Signed agents](https://agentdrives.com/standards/signed-agents.md): Agents a bot-check vendor has verified, which a site can let through.
- [robots.txt for AI agents](https://agentdrives.com/standards/robots-txt-ai.md): The file that tells crawlers and agents which pages to leave alone.
- [x402](https://agentdrives.com/standards/x402.md): A 402 answer an agent pays in a stablecoin, request by request.
- [MPP](https://agentdrives.com/standards/mpp.md): A 402 payment challenge an agent pays by card or stablecoin.
