Skip to content

Delivery quote

POST
/v1/quote
curl --request POST \
--url https://dev-api.infiniteaudience.ai/v1/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "audience_id": "example", "destination": "download", "template_id": "example", "field_list": [ "example" ], "include_unmatched": true, "output_format": "csv", "output_compression": "none" }'

Returns a price estimate for a proposed delivery without executing it. Provide the audience ID, destination, and optionally field_list or template_id (mutually exclusive) to receive a structured cost breakdown and credit balance information. If neither is provided, the Standard IAG attribute set is used. No commitment is made and nothing is stored. Download is the currently active destination; LiveRamp and Narrative return 503 before a quote or billable record is created until their partner pushes are implemented. Requires ‘discovery’ scope.

Media typeapplication/json
object
audience_id
required

ID of the audience to quote a delivery for.

string
destination
required

Intended destination. liveramp and narrative currently return DELIVERY_DESTINATION_UNAVAILABLE without billing.

string
Allowed values: download liveramp narrative
template_id

Enrichment template ID. Only standard_iag is valid. Mutually exclusive with field_list. If neither is provided, the Standard IAG attribute set (all attributes with product_usage containing audience) is used.

string | null
field_list

Explicit attribute list — every attribute must be a valid audience attribute (see GET /v1/catalog/fields). Mutually exclusive with template_id. If neither is provided, the Standard IAG attribute set is used.

Array<string> | null
include_unmatched

Include unmatched input rows in matched-audience output.

boolean
default: true
output_format

Artifact format being quoted, independent of matched-input format.

string
default: csv
Allowed values: csv avro json jsonl
output_compression

Gzip is supported for csv/json/jsonl. Avro uses native DEFLATE and rejects outer gzip.

string
default: none
Allowed values: none gzip

Price quote — no commitment made.

Media typeapplication/json
object
audience_id
required
string
subtype
required
string
Allowed values: filter matched similarity propensity
destination
required
string
template_id
required
string | null
field_list
required
Array<string> | null
output_format
required
string
Allowed values: csv avro json jsonl
output_compression
required
string
Allowed values: none gzip
already_delivered
required

true if this billing identity (audience composition and segment revisions, resolved fields, unmatched-row policy, and destination) has already been delivered. Artifact format/compression are deliberately excluded, so changing only those axes permits a free re-export.

boolean
quote_id
required

ID of the persisted quote backing this estimate — fetch it later via GET /v1/campaigns/{id}/quotes for a campaign-linked audience. null when already_delivered is true (a free re-delivery has no pending cost, so nothing is persisted).

string | null
cost_estimate
required
object
base_cost
required

Base audience-delivery cost.

number
match_cost
required

One-time deferred file-match cost included only until the underlying run is first delivered.

number
field_cost
required

Total surcharge for requested attributes.

number
destination_cost
required

Destination surcharge (0 for download).

number
total_cost
required

Sum of all cost components.

number
unit_price
required

Effective cost per record.

number
billing_count
required

Number of records that will be billed.

integer
record_count
required

Current audience size.

integer
match_count
required

Matched subtype only — resolved rows from most recent delivery.

integer | null
billing_model
required

Resolved from the org’s own billing_model, or ‘postpay’ for parent_billed (agency) orgs. Determines which of available_balance/shortfall vs. budget_ceiling/accrued_balance is populated below.

string
Allowed values: prepay postpay
available_balance
required

Prepay only — effective credit balance after holds. Null for postpay/agency orgs, which have no credit balance.

number | null
sufficient_balance
required

Prepay: whether available_balance ≥ total_cost. Postpay/agency: whether this delivery would stay within the org’s/agency’s optional budget ceiling (always true when no ceiling is set).

boolean
shortfall
required

Prepay only — credits needed beyond current balance (0 when sufficient). Null for postpay/agency.

number | null
budget_ceiling
required

Postpay/agency only — the org’s configured budget ceiling in USD. Null if unset (unlimited) or for prepay.

number | null
accrued_balance
required

Postpay/agency only — accrued USD spend so far this cycle. Null for prepay.

number | null
Example
{
"audience_id": "aud_abc123",
"subtype": "filter",
"destination": "download",
"template_id": "standard_iag",
"field_list": null,
"output_format": "csv",
"output_compression": "none",
"already_delivered": false,
"quote_id": "q_abc123",
"cost_estimate": {
"base_cost": 0.08,
"match_cost": 0,
"field_cost": 0.04,
"destination_cost": 0,
"total_cost": 0.12,
"unit_price": 0.0015,
"billing_count": 80000
},
"record_count": 80000,
"match_count": null,
"billing_model": "prepay",
"available_balance": 5,
"sufficient_balance": true,
"shortfall": 0,
"budget_ceiling": null,
"accrued_balance": null
}

Invalid request — malformed body, missing required attribute, or failed validation. See error and message for details.

Media typeapplication/json
object
error
required

Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.

string
message

Human-readable explanation of the error.

string
code

Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.

string
request_id

Opaque support/debug identifier when available.

string
key
additional properties
any
Examples
Examplevalidation_error
{
"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).

Media typeapplication/json
object
error
required

Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.

string
message

Human-readable explanation of the error.

string
code

Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.

string
request_id

Opaque support/debug identifier when available.

string
key
additional properties
any
Examples
{
"error": "Unauthorized: Missing or invalid Authorization header"
}

Token is valid but lacks the required scope for this endpoint. Check the endpoint description for the required scope (discovery, purchase, or account).

Media typeapplication/json
object
error
required

Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.

string
message

Human-readable explanation of the error.

string
code

Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.

string
request_id

Opaque support/debug identifier when available.

string
key
additional properties
any
Examples
Examplemissing_scope
{
"error": "SCOPE_REQUIRED",
"message": "This endpoint requires the purchase scope."
}

Resource not found or not accessible to the calling org.

Media typeapplication/json
object
error
required

Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.

string
message

Human-readable explanation of the error.

string
code

Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.

string
request_id

Opaque support/debug identifier when available.

string
key
additional properties
any
Examples
Examplenot_found
{
"error": "Audience not found"
}

A required billing provider integration is temporarily unavailable.

Media typeapplication/json
object
error
required

Stable machine-readable error code (e.g. INVALID_STATUS_TRANSITION, BILLING_INSUFFICIENT_BALANCE). Always present.

string
message

Human-readable explanation of the error.

string
code

Alternate machine-readable code — present on some endpoints as an alias for error for backward compatibility.

string
request_id

Opaque support/debug identifier when available.

string
key
additional properties
any
Examplegenerated
{
"error": "example",
"message": "example",
"code": "example",
"request_id": "example"
}