Execute a Batch of Agent Operating Procedures
Start many Agent Operating Procedure (AOP) runs under one batch handle. Each run is queued exactly like POST /aop/execute-async; the response returns a batch_id so the caller polls GET /aop/batches/{batch_id} once per batch instead of once per thread. Pass the batch_id back to append more runs to the same batch. Runs are launched independently: a run that fails to launch is reported with an error and does not stop the others. Runs are idempotent within a batch: a run whose idempotency_key (or, when omitted, client_ref) was already launched into the same batch with the same parameters is not started again; its original outcome is replayed with deduplicated: true.
Authentication
Headers
Request
Runs to launch (1-100 per request). Launch more into the same batch by repeating the call with the returned batch_id.
Default AOP asset ID for runs that omit their own asset_id
Existing batch to append these runs to (returned by a previous execute-batch call). Omit to start a new batch.
Execute every run in dry-run mode: side-effectful tool calls are validated and captured instead of executed.
Per-run spend cap (max_model_calls / max_cost_usd) applied to every run in the request.
Response
Batch accepted; see per-run outcomes
Per-run launch outcome, in request order
Batch handle. Poll GET /aop/batches/{batch_id} for the whole batch instead of every thread, and pass it back to POST /aop/execute-batch to append more runs. Null when a new batch launched no runs: there is nothing to poll or append to, so no handle is issued.
Runs in this request that replayed an earlier launch (same idempotency_key / client_ref in this batch) instead of starting
