error code and an HTTP status. Validation failures may also include issues with field paths.
Use a stable
requestId for each successful feature action. Retrying /v1/track with the same customer, feature, and request ID returns idempotent: true; reusing that ID for another feature returns request_id_conflict. For plan upgrades, generate one Idempotency-Key per intended upgrade and reuse it only for retries of that upgrade.
A paid plan can be created before Stripe is connected. The item remains durable and stripeSync: awaiting_connection indicates that a later Stripe connection must sync it. If sync fails, inspect the plan’s stripeSyncStatus and retry after fixing the Stripe connection.
409 live_not_ready on dashboard activation includes a missing list: api_key, stripe_connection, webhook, checkout_urls, or catalog_sync. Complete those setup steps in Live and try activation again. 400 environment_mismatch on whole-catalog publishing means the body environment does not match the API key. See Sandbox and live environments.