AI Content Drop Drops API

A drop is one piece of work that runs from research through concepts, a plan, generation and assembly without the caller moving it between endpoints. Available to accounts enabled for drops; every path here answers `404 not_found` on an account that is not, so an unlisted caller cannot tell the surface apart from one that does not exist. **One verb.** POST /v1/engine/chat is the only endpoint that does work: research, concepts, a storyboard, a board, a render or a scheduled post are all asked for in words, and the engine picks the phase itself. The rest read a drop or a reference, answer a question, decide a spend, act on one thing a drop made, or stop it. **Nothing spends without a decision.** A step that would charge credits is priced with a signed quote and parked until POST /v1/engine/runs/{id}/approve answers it. The quote fixes the credit ceiling and lapses after a few minutes; a lapsed quote is refused and the engine prices the step again by itself, so read the drop for the current `quote_id` rather than asking for the step a second time. Credits are charged only when a step succeeds. A request that could release a charge needs an API key with the `generations:create` scope, and one without it is answered 403 `INSUFFICIENT_SCOPE`. Starting a drop needs the Professional plan or higher (402 `PLAN_REQUIRED`), and messages and new drops are counted per account per day (429 `DAILY_LIMIT`, with `reset_at`). `X-Sandbox: true` is refused on every path here with 400 `SANDBOX_UNSUPPORTED`: opening a drop costs nothing by itself, so there is nothing to rehearse. **From a reference.** POST /v1/engine/analyze reads an image or a clip the caller has the rights to into words: the shots, the cast, the look, any lines, and a reference class. It costs no credits, is capped per account per day, needs `canvas:write` on an API key, and never returns the media (the file is deleted once it is read); GET /v1/engine/references/{id} reads the words back. An image or a clip of up to 30 seconds is answered with the words; a longer clip is answered 202 and read in the background, and GET /v1/engine/references/{id} reaches `ready`, or `failed` with `error_message`, by itself. To make something from it, send the first message to POST /v1/engine/chat with `brief.reference` set to `{"kind": "upload", "url": }`: the drop takes the reading as its first step, at no charge. A drop started while a long clip is still being read waits for that reading, and reads the clip itself if the background reading was lost. Sending the `facts` back as `brief.reference_facts` skips that step; both `brief.reference_class` and `brief.reference_facts` are dropped while reference reading is off for the account. `features.reference_intake` on GET /v1/engine/lanes says whether this account may send references. **Reviewed pieces.** Where `features.judge` is on, each finished video, image and ad carries `review`: a 0-100 score, a verdict, the reasons and the notes. A retry the review proposes is an ordinary step in `tasks`, with `retry_of` naming the step it makes again; it waits for POST /v1/engine/runs/{id}/approve with its own quote like every other step, and `review.retry_task_id` names it. When there is no retry step, `review.offer` names another model by its product label, and the piece's `actions` list carries the matching `try-model-…` action for POST /v1/engine/runs/{id}/actions/{actionId}. **Live narration.** Two routes answer `text/event-stream` and are not listed as JSON operations, because a function-calling client built from this document would wait on them forever: POST /v1/engine/chat with any Accept other than `application/json`, and GET /v1/engine/runs/{id}/stream, which re-attaches to a drop already in flight and closes by itself after 30 minutes. Both emit the same events (`started`, `phase`, `thinking`, `status`, `tool_start`, `tool_progress`, `tool_complete`, `artifact_ready`, `answer_delta`, `answer_reset`, `questions`, `approval_required`, `followups`, `error`, `done`); a lost connection never cancels a drop. A browser can follow a drop live at GET /v1/engine/runs/{id}/stream (text/event-stream); agents send `Accept: application/json` to POST /v1/engine/chat and poll getDrop (GET /v1/engine/runs/{id}).

Operations 19

POST /v1/engine/chat Say the next thing to a drop #
GET /v1/engine/lanes List the recipes a drop can follow #
POST /v1/engine/analyze Read a reference into words #
POST /v1/engine/references Store and read a reference #
GET /v1/engine/references/{id} Read what was seen in a reference #
GET /v1/engine/runs List the account's drops #
POST /v1/engine/runs Start a drop #
POST /v1/engine/runs/propose Read a page into a proposed brief #
GET /v1/engine/runs/{id} Read one drop in full #
PATCH /v1/engine/runs/{id} Rename a drop or change its credit ceiling #
DELETE /v1/engine/runs/{id} Delete a drop #
POST /v1/engine/runs/{id}/answer Answer the questions a drop asked #
POST /v1/engine/runs/{id}/approve Answer the decision a drop is waiting on #
POST /v1/engine/runs/{id}/interject Steer a drop that is already working #
POST /v1/engine/runs/{id}/actions/{actionId} Run one action on something a drop made #
POST /v1/engine/runs/{id}/stop Stop a drop #
POST /v1/engine/runs/{id}/reference-class Change a drop's reference class #
POST /v1/engine/runs/{id}/share Mint a public link for a drop #
DELETE /v1/engine/runs/{id}/share Revoke a drop's public link #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aicontentdrop-com:aicontentdrop-com-drops-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aicontentdrop-com-drops-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AI Content Drop Drops API
  version: 2.7.0
  summary: Generate AI video and images programmatically, and read AI Content Drop's public content as plain text, markdown, or XML.
  description: 'The public REST API of https://aicontentdrop.com — generate AI video and images programmatically on your own account.


    **Authentication**: an API key created in your dashboard (Settings → Integrations). Keys look like `acd_live_…` and are sent as `Authorization: Bearer`. The index and the model catalogue need no key at all; everything that touches an account or spends credits does.


    **Generation is submit-and-poll**: POST returns a record immediately with status `generating`, then GET /v1/videos/{id} until `completed`. Credits are flat per model and are only charged on success — safety blocks, provider failures, and timeouts cost nothing.


    **Rate limits**: 120 requests/minute. Every response carries `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset`; a 429 additionally sends `Retry-After` (seconds).


    **Errors** are always structured JSON, never HTML. /v1 read endpoints return `{"error": {"code", "message"}}`; the generation endpoints (shared with the website) return `{"error": "", "code"?: ""}`.


    **Versioning**: the version is in the URL path (`/v1`). A breaking change ships as a new path segment; the previous version keeps working for at least 180 days and is announced with `Deprecation` and `Sunset` response headers (RFC 9745 / RFC 8594) before it is removed. Policy: https://aicontentdrop.com/developers#versioning


    **Other protocols over the same capabilities**: MCP (Streamable HTTP) at POST /mcp, manifest at /.well-known/mcp.json; A2A (JSON-RPC 2.0) at POST /a2a; NLWeb at POST /ask. The read-only text/markdown content surface is documented separately at https://aicontentdrop.com/openapi-content.json.


    **Batch**: `POST /v1/batch` runs up to 20 read operations in one request; `POST /v1/models/cost` quotes up to 50 model/quantity pairs. Generation is never batched — see the endpoint description for why.


    **Sandbox**: send `X-Sandbox: true` on either generation endpoint, with or without a key, to rehearse the call for free.


    **GraphQL**: the same data is served at `POST https://aicontentdrop.com/graphql` with open introspection, Relay connections, and typed errors. SDL at https://aicontentdrop.com/graphql/schema.graphql, documentation at https://aicontentdrop.com/docs/graphql.'
  contact:
    name: AI Content Drop support
    email: support@aicontentdrop.com
    url: https://aicontentdrop.com/contact
  license:
    name: Content usage terms
    url: https://aicontentdrop.com/terms-of-use
servers:
- url: https://aicontentdrop.com
  description: Production
tags:


# --- truncated at 32 KB (123 KB total) ---
# Full source: https://artifacts.apis.io/aicontentdrop-com/openapi/aicontentdrop-com-drops-api-openapi.yml