Skip to main content
This guide walks through creating a Test API key in the Console, creating your first Quote with POST /v1/quotes, and reading the Receipt.

Before you start

  • A Kordless Workspace with a Project (Test and Live Environments are provisioned with it).
  • A Business connected to that Project with a Book published to the Test Environment.
  • The Business ID and Book ID — visible in the Console and Business Portal.
Quoting always runs against a published Book Version. If nothing is published in the key’s Environment, the quote completes with a terminal failed Receipt (no_published_version) instead of a price.

Create a Test API key

  1. Open your Workspace in the Console and go to Developers.
  2. Select your Project and the Test Environment.
  3. Name the key (for example, Quickstart test) and choose Create Test secret.
  4. Copy the secret immediately — it is shown exactly once and stored only as a SHA-256 digest.
The secret starts with sk_test_, which binds it to the Test Environment. Test traffic is never billed and never touches Live data.

Create your first quote

Call POST /v1/quotes with the Business, Book, offering, and factor selections:
The response is 201 with the created Quote Intent and its Receipt:
All amounts are integer minor units (cents). The Receipt pins the exact Book Version used, so the quote stays reproducible even after you publish a newer version.

Or use the SDK

@kordless/sdk is a dependency-free client for the same two routes:
The result is the same Intent and Receipt as the curl call above, with the three outcomes (succeeded, requires_input, failed) carried on quoteReceipt.outcome. Retrieve later with await kordless.quotes.retrieve(quoteIntent.id). API failures throw typed errors (AuthenticationError, NotFoundError, IdempotencyConflictError, RateLimitedError, …) that carry the envelope code and requestId.

Read the receipt outcomes

Every create returns a Receipt with one of three outcomes: A requires_input or failed result is a successful API call (HTTP 201) with an unpriced Receipt — handle it in your integration logic, not your error handling.

Retrieve the quote later

Returns { "data": { "intent": …, "receipt": … }, "requestId": … } scoped to the same key.

Prefer no code? Use the hosted path

If you do not want to call the API at all, the hosted path lets a Business publish and share a quote link directly from the Business Portal — see Hosted quote path. Anonymous end customers can also be quoted programmatically through POST /v1/public_quotes, which resolves the Business’s Live Environment server-side.

Next steps