Skip to main content
When a run extracts from a live source whose connector still needs secrets, the managed agent pauses and asks for them. The run reports status: "blocked" with blocked_reason: "credentials", and this endpoint is the only way to answer it.
Never send credentials as a message answer — the messages endpoint rejects a credential-blocked run with 409 for exactly this reason. Secrets sent here go straight to a secured vault and never enter the agent thread, the run row, or logs; the agent resumes with a sanitized confirmation only.
{migration_id} and {run_id} come from starting and polling the run.

Authentication

Requires an x-api-key header. See Authentication.

What you’re answering

A credential-blocked poll response tells you exactly what to collect:
Render a form from credential_request.schema, show the guidance, and post the collected values back.

Request body

credentials
object
required
The secret values, keyed to match the request’s schema (e.g. { "client_id": "…", "client_secret": "…" }). Must be a non-empty object.
connection_id
string
Optional guard. If sent, it must match the credential_request.connection_id the run asked about, or the call returns 409. The connection is always taken from the run itself — a key can only ever fill the connection the agent actually requested.

Response

200 OK
The secrets are stored and the run resumes. Keep polling until it’s terminal. If the connector rejects the credentials, the run blocks for credentials again — re-submit through this same endpoint (it overwrites the stored secret) and the agent retries the extractor.

Errors

Example

Next