Clay · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Clay Public API

10 actions 10 updates update extends openapi/clay-com-public-api-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Clay's API. It is a proposal applied on top of the contract, not a document Clay publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-agentic-consequencex-apievangelist-notex-apievangelist-cautionx-apievangelist-providerx-apievangelist-harvestedx-apievangelist-sourcex-apievangelist-ownership-checkx-apievangelist-maturity

Targets 8

$.info
$
$.paths['/routines/{routine_id}/run'].post
$.paths['/routines/{routine_id}/run-batch/start'].post
$.paths['/search/filters-mode/fields'].get
$.paths['/search/query-mode/reference'].get
$.paths['/tables/query'].post
$.components.securitySchemes.ClayApiKey

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Clay Public API
  version: 1.0.0
extends: openapi/clay-com-public-api-openapi.json
x-generated: '2026-08-14'
x-method: generated
x-source: >-
  Derived from artifacts in this repo — conventions/, errors/, rate-limits/, lifecycle/,
  scopes/, mcp/ and data-model/. Captures API Evangelist annotations WITHOUT mutating the
  harvested spec, which is saved verbatim as fetched from
  https://developers.clay.com/openapi.json.
actions:
- target: $.info
  update:
    x-apievangelist-provider: clay-com
    x-apievangelist-harvested: '2026-08-14'
    x-apievangelist-source: https://developers.clay.com/openapi.json
    x-apievangelist-ownership-check: >-
      Verified as Clay's own contract: info.title "Clay Public API", info.contact.url
      https://www.clay.com, servers[] https://api.clay.com/public/v0, and the security
      scheme describes a key created "under Settings → Account in the Clay app". All four
      self-descriptions point at clay.com.
    x-apievangelist-maturity: v0
    x-apievangelist-notes: >-
      info.version is literally "0" and API keys are labelled beta in the Clay UI. Treat
      this as an unstable surface.
- target: $.info
  update:
    x-agent-surfaces:
      mcp: https://api.clay.com/v3/mcp
      mcp_auth: oauth2 scope `mcp`
      cli: clay (v0.3.0, github.com/clay-run/agent-plugins)
      agent_card: https://developers.clay.com/.well-known/agent-card.json
      agent_skills: 22 provider-published skills harvested to skills/
      llms_txt: https://developers.clay.com/llms.txt
- target: $
  update:
    x-conventions:
      pagination: [cursor, stateful-iterator]
      pagination_note: 'Stateful iterators (has_more) are not replayable — a retried page loses records.'
      idempotency: none
      idempotency_note: >-
        No Idempotency-Key is published. Retrying a timed-out POST /routines/{id}/run can
        execute and charge the routine twice.
      error_envelope: '{ "message": "..." } — not RFC 9457, no stable error codes'
      async: '202-then-poll; the terminal status set is explicitly open-ended'
      rate_limit_headers: [Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset]
      rate_limit_numbers_published: false
      artifact: conventions/clay-com-conventions.yml
- target: $
  update:
    x-metering:
      units: [actions, data credits]
      exhaustion_status: 402
      note: >-
        Requests are billed against the workspace's monthly actions and data-credit meters,
        not as API requests. HTTP 402 on the search operations means the meter is exhausted,
        not that the request was malformed.
      artifact: plans/clay-com-plans-pricing.yml
- target: $.paths['/routines/{routine_id}/run'].post
  update:
    x-apievangelist-caution: >-
      Consequence-bearing and metered. This operation spends credits and has no idempotency
      key, so an agent must not blind-retry it on timeout. Poll getRunResults with the run
      id instead.
    x-agentic-consequence: write
- target: $.paths['/routines/{routine_id}/run-batch/start'].post
  update:
    x-apievangelist-caution: >-
      Fans out a routine over an entire uploaded JSONL file. The highest-consequence,
      highest-cost operation in the API. Documented ceiling is 50,000 rows.
    x-agentic-consequence: write
- target: $.paths['/search/filters-mode/fields'].get
  update:
    x-apievangelist-note: >-
      Schema-discovery operation. Clay documents calling this BEFORE createFilters to learn
      the legal filter fields, their types, allowed values and usage guidance for a source
      type — an unusually agent-friendly design worth highlighting.
    x-agentic-consequence: read
- target: $.paths['/search/query-mode/reference'].get
  update:
    x-apievangelist-note: >-
      Returns the Clay advanced-search query grammar as markdown, over the API. An agent can
      learn the query language at runtime rather than being trained on it.
    x-agentic-consequence: read
- target: $.paths['/tables/query'].post
  update:
    x-apievangelist-note: >-
      Enterprise-only. Non-Enterprise workspaces receive 403. Scans return rows in
      least-recently-updated-first order and reflect writes that land mid-pagination.
    x-agentic-consequence: read
- target: $.components.securitySchemes.ClayApiKey
  update:
    x-apievangelist-note: >-
      Long-lived personal key with no scoping and no expiry, tied to a user and that user's
      workspace access. Distinct from the OAuth surface (scope `mcp`) that gates the CLI and
      MCP server — see scopes/clay-com-scopes.yml.