The batch framework is fully wired — authentication, scope enforcement, rate limiting, quota metering, idempotency, and plan-capped size limits are all active. Per-item business logic for the currently available batch endpoints is in active development; live requests return stub responses.
Available batch endpoints
| Endpoint | Scope | Status |
|---|---|---|
POST /api/v1/intelligence/batch | intelligence.read | Available (stub) |
POST /api/v1/signals/batch | signals.read | Available (stub) |
POST /api/v1/enrichment/batch | enrichment.read | Available (stub) |
Request shape
Every batch endpoint accepts the same JSON body structure. Therequests field is an array of item objects — the shape of each item is endpoint-specific, but the envelope is always the same.
| Body field | Type | Notes |
|---|---|---|
requests | array | One or more item objects. Count is capped by your plan’s max_batch_size. |
Response shape
The HTTP status code tells you the overall outcome of the batch:200 OK— every item in the batch succeeded.207 Multi-Status— at least one item failed. The top-level HTTP status is207regardless of how many items succeeded or failed.
data array corresponds to one item from your requests array, in the same order. Successful items carry a status: 200 and a data object; failed items carry a status code and an error object.
meta.batch summary gives you total, succeeded, and failed counts so you can detect partial failures without inspecting every item.
Batch size limits
Your plan determines the maximum number of items you can include in a single batch request.| Plan | Max batch size |
|---|---|
| Free | 10 |
| Starter | 50 |
| Pro | 100 |
| Enterprise | 250 |
422 batch_too_large. Split your payload into smaller chunks and retry each one separately.
Idempotent batch requests
You can make any batch request safely retryable by sending anIdempotency-Key header with a unique value — typically a UUID generated client-side. If your request fails at the network level before you receive a response, you can replay the exact same key and body to retrieve the original result without risk of double-processing.
Idempotency-Replayed: true.
Important behaviors to know:
- Replaying the same key with a different payload returns
422 idempotency_key_reuse. The key is bound to the original body. - If the original request is still in flight, a replay returns
409 idempotency_conflict. Wait and retry. - Stored results expire after 24 hours. After expiry, the key can be reused freely.
Metering
Each item in therequests array counts as one API usage unit toward your monthly quota. A batch of 50 items consumes 50 units — the same as 50 individual requests. Batching reduces round-trips and latency, but does not reduce quota consumption.
If your batch is rejected at the request level — for example, with
422 batch_too_large or 403 insufficient_scope — no items are metered and your quota is not charged.Next steps
Idempotency
How idempotency keys work across the full API, including expiry and conflict handling.
Plans and Limits
Full breakdown of rate limits, monthly quotas, and batch size caps per plan.
Signals API Reference
Reference for the
/signals category endpoints, including the batch operation.Intelligence API Reference
Reference for the
/intelligence category endpoints, including the batch operation.