Bulk deliver multiple audiences
const url = 'https://api.infiniteaudience.ai/v1/deliveries/bulk';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"audience_ids":["aud_abc123","aud_def456"],"destination":"download","template_id":"standard_iag"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.infiniteaudience.ai/v1/deliveries/bulk \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "audience_ids": [ "aud_abc123", "aud_def456" ], "destination": "download", "template_id": "standard_iag" }'Accepts a list of audience IDs and shared delivery parameters. Fires N parallel delivery jobs and returns per-audience results as HTTP 207 Multi-Status. Partial failure is acceptable — failed items do not roll back succeeded ones. Download is the currently active destination; LiveRamp and Narrative return 503 before any item or billable record is created. An item whose audience count is unknown and cannot be computed fails with code AUDIENCE_COUNT_UNAVAILABLE. Requires ‘creator’ scope.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
IDs of audiences to deliver. Max 25 per request.
Shared destination. liveramp and narrative currently return DELIVERY_DESTINATION_UNAVAILABLE without billing.
Attribute template ID applied to every audience in the batch. standard_iag is valid; standard_enrichment is valid for pure matched exports and matching. Mutually exclusive with field_list. If neither is provided, the enrichment set is used for pure matched output; otherwise the audience set is used.
Explicit attribute list applied to every audience in the batch — every attribute must be a field allowed for that audience. Mutually exclusive with template_id. If neither is provided, the enrichment set is used for pure matched output; otherwise the audience set is used.
Shared download artifact format for the batch.
Shared artifact compression. gzip is supported for csv/json/jsonl; Avro uses native DEFLATE and rejects gzip.
Chat session ID for push notification routing.
Campaign context for notification routing.
Example
{ "audience_ids": [ "aud_abc123", "aud_def456" ], "destination": "download", "template_id": "standard_iag"}Responses
Section titled “Responses”Multi-Status — per-audience results. Each entry contains audience_id, delivery_id (if created), status, and error (if failed). Billing capacity errors also expose the same machine-readable code and USD-denominated capacity details as the single-audience delivery endpoint.
object
object
Present when a delivery was created or found.
Error message when status is ‘error’.
Machine-readable billing code when billing prevents this item.
Conservative USD requirement for a prepay billing failure.
Effective USD availability for a prepay billing failure.
USD shortfall for a prepay billing failure.
Projected USD spend for a postpay ceiling failure.
Configured USD ceiling for a postpay ceiling failure.
Artifact format when an existing or new download delivery is returned.
Artifact compression when an existing or new download delivery is returned.
Example
{ "results": [ { "audience_id": "aud_abc123", "delivery_id": "dlv_xyz001", "status": "processing" }, { "audience_id": "aud_def456", "status": "error", "error": "Audience expired on 2026-05-01. Run a refresh first." } ]}Invalid request — malformed body, missing required attribute, or failed validation. See error and message for details.
object
Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.
Human-readable explanation of the error.
Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.
Opaque support/debug identifier when available.
Public action for correcting the request or retrying later.
object
JSON path to the invalid filter field or value.
Examples
{ "error": "Bad Request", "code": "MISSING_SEGMENTS", "message": "segment_ids is required for filter audiences."}Missing or invalid Bearer token. Obtain one via POST /v1/auth/token. When a token was supplied but rejected, code distinguishes TOKEN_EXPIRED (the token’s lifetime has passed — request a new one via POST /v1/auth/token and retry) from TOKEN_INVALID (malformed or revoked — re-authenticate).
object
Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.
Human-readable explanation of the error.
Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.
Opaque support/debug identifier when available.
Public action for correcting the request or retrying later.
object
JSON path to the invalid filter field or value.
Examples
{ "error": "Unauthorized: Missing or invalid Authorization header"}{ "error": "Unauthorized", "code": "TOKEN_EXPIRED", "message": "Your session has expired. Please sign in again."}Token is valid but lacks the required scope for this endpoint. Check the endpoint description for the required scope (discovery, purchase, or account).
object
Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.
Human-readable explanation of the error.
Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.
Opaque support/debug identifier when available.
Public action for correcting the request or retrying later.
object
JSON path to the invalid filter field or value.
Examples
{ "error": "SCOPE_REQUIRED", "message": "This endpoint requires the creator scope."}A required billing provider partnership is temporarily unavailable.
object
Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.
Human-readable explanation of the error.
Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.
Opaque support/debug identifier when available.
Public action for correcting the request or retrying later.
object
JSON path to the invalid filter field or value.
Example
{ "issues": [ { "code": "INVALID_FILTER_SHAPE" } ]}