Skip to content

API ReferenceBilling & Webhooks

Create a Stripe Checkout session for an active subscription plan.

POST
/v1/billing/subscribe
curl --request POST \
--url https://data.predictefy.com/v1/billing/subscribe \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "planId": "example", "interval": "month" }'

Key-authed and WEIGHT 0 (starting a subscription never debits credits). The returned URL is Stripe-hosted; credit grants land later via the webhook's invoice.paid handler, from the plan's monthly_credit_grant. interval picks the billing interval: month (the default) bills monthly and grants one month of credits per paid invoice; year bills annually at twelve times the monthly price (no discount) and grants TWELVE months of credits up-front when the annual invoice is paid. A plan with no annual price answers 404 PLAN_NOT_FOUND for year. ONE LIVE subscription per account — 409 SUBSCRIPTION_EXISTS while an active, trialing, past_due, unpaid or paused subscription exists. An abandoned checkout does NOT lock the account out: while the previous Checkout session for the same plan and interval is still open, subscribing again RESUMES it and returns that same URL (never a second session); a different plan or interval replaces it, and an expired one is dropped for a fresh session. Only active rows with self_serve=true are purchasable; Enterprise is contract-only. 503 BILLING_UNAVAILABLE until the STRIPE_* env is configured.

Media typeapplication/json
object
planId
required

An ACTIVE, PRICED, self-serve plans id.

string
interval

Billing interval. year charges the plan's annual price (12 x monthly) and grants twelve months of credits up-front on the paid annual invoice. Any other value is a 400.

string
default: month
Allowed values: month year

The hosted Stripe Checkout URL.

Media typeapplication/json
object
success
required
boolean
data
object
url
required
string | null
Examplegenerated
{
"success": true,
"data": {
"url": "example"
}
}
X-Credits-Charged
required
integer format: int64

Net credits charged for this metered response after any error refund.

X-Credits-Remaining
integer format: int64

Post-charge account balance. Present only when the existing debit/refund operation made it available; the service never adds a database read solely for this header.

VALIDATION_ERROR — planId missing/invalid, or interval not 'month' / 'year'

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}
X-Credits-Charged
required
integer format: int64

Net credits charged for this metered response after any error refund.

X-Credits-Remaining
integer format: int64

Post-charge account balance. Present only when the existing debit/refund operation made it available; the service never adds a database read solely for this header.

UNAUTHORIZED — platform lane (READS_ENABLE_AUTH)

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}

SCOPE_MISSING — API key lacks the route's required scope (RBAC v1)

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}

PLAN_NOT_FOUND — unknown, inactive, or unpriced plan, or no annual price for interval=year

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}
X-Credits-Charged
required
integer format: int64

Net credits charged for this metered response after any error refund.

X-Credits-Remaining
integer format: int64

Post-charge account balance. Present only when the existing debit/refund operation made it available; the service never adds a database read solely for this header.

SUBSCRIPTION_EXISTS — account already has a live subscription, a completed checkout awaiting provisioning, or an in-flight checkout that could not be resumed

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}
X-Credits-Charged
required
integer format: int64

Net credits charged for this metered response after any error refund.

X-Credits-Remaining
integer format: int64

Post-charge account balance. Present only when the existing debit/refund operation made it available; the service never adds a database read solely for this header.

RATE_LIMITED — per-key rps limit

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}

Unexpected internal error after pricing. Retryable.

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}
X-Credits-Charged
required
integer format: int64

Net credits charged for this metered response after any error refund.

X-Credits-Remaining
integer format: int64

Post-charge account balance. Present only when the existing debit/refund operation made it available; the service never adds a database read solely for this header.

BILLING_UNAVAILABLE (Stripe env absent) or PLATFORM_UNAVAILABLE (rate limiting down — a free side-effecting route fails CLOSED)

Media typeapplication/json
object
success
required
boolean
error
required
object
message
required
string
code
required
string
Allowed values: VALIDATION_ERROR NOT_SUPPORTED ACCOUNTS_UNSUPPORTED VENUE_NOT_AVAILABLE EXCHANGE_NOT_AVAILABLE MARKET_NOT_FOUND EVENT_NOT_FOUND TRADERS_UNSUPPORTED TRADER_NOT_FOUND CLUSTER_NOT_FOUND OUTCOME_NOT_FOUND SNAPSHOT_NOT_FOUND CATALOG_UNAVAILABLE CATALOG_QUERY_TOO_BROAD HISTORY_UNAVAILABLE SPORTS_SCREEN_UNAVAILABLE SPORTS_FIXTURE_NOT_FOUND SPORTS_BLOCK_NOT_FOUND ROUTE_NOT_FOUND INTERNAL AUTHENTICATION_ERROR PERMISSION_DENIED RATE_LIMIT_EXCEEDED NETWORK_ERROR NOT_FOUND BAD_REQUEST BRIDGE_UNSUPPORTED BRIDGE_NO_ROUTE BRIDGE_UPSTREAM BRIDGE_PROVIDER_UNAVAILABLE BRIDGE_TRANSACTION_NOT_FOUND BRIDGE_SESSION_NOT_FOUND TRANSFER_PLAN_UNSUPPORTED UNAUTHORIZED SCOPE_MISSING PLAN_REQUIRED INSUFFICIENT_CREDITS RATE_LIMITED GEO_BLOCKED VENUE_REGION_BLOCKED IDEMPOTENCY_KEY_REQUIRED RESERVED_IDEMPOTENCY_KEY IDEMPOTENCY_CONFLICT ARTIFACT_VERSION_CONFLICT SPEND_CAP_EXCEEDED RESERVATION_REQUIRED RESERVATION_CONSUMED RESERVATION_MISMATCH RESERVATION_EXPIRED RESERVATION_RELEASED ARTIFACT_BOUNDS_VIOLATION ARTIFACT_INTEGRITY_MISMATCH CLAIM_GENERATION_UNDETERMINED VENUE_NOT_SUPPORTED EXECUTION_NOT_FOUND EXECUTION_TERMINAL CONDITIONAL_NOT_FOUND CONDITIONAL_NOT_ARMED CONDITIONAL_ATTEMPT_CONFLICT CONDITIONAL_ARMED CONDITIONAL_CLOSED_NOT_SUBMITTED OCO_GROUP_CLOSED HOSTED_FIRE_NOT_ELIGIBLE HOSTED_FIRE_UNAVAILABLE NOT_IMPLEMENTED VENUE_CREDENTIAL_REJECTED VENUE_CREDENTIAL_BREAKER_OPEN GEMINI_TIME_NONCE_REQUIRED GEMINI_HEARTBEAT_KEY_UNSUPPORTED VENUE_RELAY_FAILED EXEC_UNAVAILABLE RAIN_INVALID_OPTION RAIN_INVALID_SIDE RAIN_INVALID_PRICE RAIN_INVALID_AMOUNT RAIN_SLIPPAGE_REQUIRED RAIN_INVALID_DEADLINE RAIN_PHASE_NOT_OPEN RAIN_ORDER_LIMIT_REACHED RAIN_POOL_SAFETY_CHECK_FAILED PLATFORM_UNAVAILABLE PACK_NOT_FOUND BILLING_UNAVAILABLE BILLING_CUSTOMER_REQUIRED PLAN_NOT_FOUND SUBSCRIPTION_EXISTS WEBHOOK_NOT_FOUND INVALID_SIGNATURE PAPER_INSUFFICIENT_CASH PAPER_POSITION_TOO_SMALL PAPER_MARKET_CLOSED PAPER_WORKING_ORDER_CAP PAPER_NO_LIVE_BOOK PAPER_ORDER_NOT_FOUND PAPER_ORDER_NOT_OPEN SQL_QUERY_FAILED SQL_TIMEOUT FEED_NOT_FOUND FEEDS_UNAVAILABLE FEED_UPSTREAM MATCHES_UNAVAILABLE ARBITRAGE_UNAVAILABLE
retryable
required
boolean
requestId
required

Always present on errors; quote this id when reporting a failed request.

string
exchange

Present only when a venue error is attributed to a specific exchange.

string
Example
{
"success": false,
"error": {
"code": "VALIDATION_ERROR"
}
}
X-Credits-Charged
required
integer format: int64

Net credits charged for this metered response after any error refund.

X-Credits-Remaining
integer format: int64

Post-charge account balance. Present only when the existing debit/refund operation made it available; the service never adds a database read solely for this header.