Report that a matched segment's client-side re-upload failed
const url = 'https://dev-api.infiniteaudience.ai/v1/segments/example/upload-failed';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"audience_id":"example","reason":"example"}'};
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://dev-api.infiniteaudience.ai/v1/segments/example/upload-failed \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "audience_id": "example", "reason": "example" }'Called when a matched segment’s re-upload (kicked off by POST /v1/segments/{id}/refresh or POST /v1/audiences/{id}/refresh) fails client-side before ever reaching storage — e.g. a browser-side network or CORS failure on the presigned upload PUT. The async pipeline that would normally fail the segment never starts in that case, since no upload ever arrived, so without this call the segment (and any linked audience) would otherwise stay pending until a much slower backstop eventually catches it.
Idempotent — a no-op (already_resolved: true) if the segment has already moved past pending (e.g. the upload actually succeeded). Only valid for matched-subtype segments.
Requires ‘purchase’ scope.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Segment document ID.
Request Body
Section titled “Request Body”object
Optional linked audience to also mark failed, in addition to the segment’s own linked audience (if any).
Human-readable failure reason.
Examplegenerated
{ "audience_id": "example", "reason": "example"}Responses
Section titled “Responses”Segment (and any linked audience) marked failed, or already resolved.
object
True if the segment had already moved past pending before this call.
Example
{ "ok": true, "already_resolved": false}NOT_A_MATCHED_UPLOAD — only matched-subtype segments have an upload to report as failed.
object
Example
{ "error": "Bad Request", "code": "NOT_A_MATCHED_UPLOAD", "message": "Only matched-subtype segments have an upload to report as failed."}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.
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.
Examples
{ "error": "SCOPE_REQUIRED", "message": "This endpoint requires the purchase scope."}Resource not found or not accessible to the calling org.
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.
Examples
{ "error": "Audience not found"}