Base URLs
The kurnl API has two separate surfaces:
All partner integration work uses the
/partner base. Examples in this reference use that base unless the page is explicitly marked as internal (/api/v1).
All endpoints are HTTPS only. The partner API operates on your live account; there is no separate sandbox API key. For safe exploration, use the in-dashboard sandbox.
Authentication
See Authentication for the full guide. Quick reference:Rate limits
Rate limit headers are included in every response:
429 Too Many Requests. Retry after the X-RateLimit-Reset timestamp.
Response format
All responses are JSON. Successful responses vary by endpoint. Error responses always follow this structure:Common HTTP status codes
Idempotency
Several endpoints are idempotent by design:POST /external-checkout/complete— the samesession_id(oremail + plan_version_idin the explicit-fields flow) returns the existing subscriptionPOST /external-checkout/anonymous-complete— the sameexternal_subscription_id(orsession_id) returns the existing subscriptionPOST /provisioning/bulk— resubmitting the same subscriber email returns the existing subscriptionPOST /provisioning/provider-initiated— same as above
Pagination
List endpoints support cursor-based pagination:total, page, page_size, and has_more fields alongside the results array.