POST /mpp/classify. An agent that holds a payment credential but no FastDrop account can classify a video by paying for it directly — no signup, no key to store, no human in the loop.
This is a separate surface from the keyed developer API. If you have an fd_live_... key, use POST /v1/classify instead; it is cheaper per credit and gives you the whole API rather than one endpoint.
One endpoint, but not one capability.
/mpp/classify accepts the same
capabilities array as the keyed API — classify, thumbnails,
diagnostics, duplicates, clips, transcribe and the full_pipeline
bundle — so a transcription-only call is just
{"capabilities": ["transcribe"]}. Batches and search still require a key.What you get for a payment
FastDrop sells credits in packs, not individual calls. One classification costs 2-6 credits depending on the processing tier, which works out to roughly 0.36 — below Stripe’s $0.50 minimum for a shared payment token, so charging per call is not possible on the card rail at these prices. A pack is 10 credits for $0.60. You spend what the call costs and keep the rest, held against the agent identity in your payment token. A returning agent with leftover balance is served with no payment step at all — the credential still identifies you, but no money moves.The exchange
1. Ask, and get quoted
Send the classification request with noAuthorization header:
402 Payment Required with an MPP challenge in WWW-Authenticate and a body that names the price:
x-payment-info extension — and skip this round trip entirely.
2. Pay, and get served
Retry with a Stripe shared payment token in anAuthorization: Payment credential built from the challenge:
202 Accepted comes back with a Payment-Receipt header and:
paid_this_request is false when the call was covered by credits left over from an earlier pack. The receipt is attached either way — a request served from balance was still paid for, just earlier.
Collecting the result
Keep the
job_token. It is the only credential that will get you this
result — a machine-payments caller is never issued an API key, so the keyed
GET /api/v1/classify/{job_id} is closed to you.status (queued, downloading, processing, completed, failed), progress, and — once status is completed — the full results object. On failed you get an error with the reason, and the credits are returned to your balance automatically.
Alternatively, set webhook_url on the request and FastDrop posts the finished classification to it instead of making you poll. The payload and signature are identical to the keyed API’s; see Webhooks.
Identity and rate limits
Your Stripe token carries an agent profile, and FastDrop keys everything to it: your credit balance, your usage history, and a rate limit of 120 requests per minute. Two calls with tokens from the same agent platform share one balance. This happens server-side — there is nothing for you to register or manage.Errors
Nothing in the
400 group costs you a payment: the body is validated, the token inspected, and the spend ceiling checked before settlement is attempted.
Not the MCP server
/mpp and /mcp are one transposed letter apart and unrelated. /mcp is the Model Context Protocol tool server, which authenticates with an API key. /mpp is machine payments. Paying for MCP tool calls the same way is prototyped but disabled — the JSON-RPC error code MPP uses for payment challenges collides with one the MCP specification assigns to something else, and that needs resolving upstream before it can be turned on.