---
title: "Save registration details, start checkout or check reserved submission availability (billing:write, business owner only)."
method: POST
path: "/v1/text-registration"
---

# Save registration details, start checkout or check reserved submission availability (billing:write, business owner only).

`POST /v1/text-registration`

## Request

- Base URL: `https://www.kaicalls.com/api`
- URL: `https://www.kaicalls.com/api/v1/text-registration`
- Auth: HTTP bearer

action 'save' mirrors save_text_registration_details: pass only the fields the owner gave; the rest is filled from what is on file, and while questions remain the response lists saved_steps, missing and next_question (code needs_answers). action 'start_checkout' mirrors start_text_registration_checkout: it returns checkout_url for the owner to pay (nothing is charged here), or included_in_plan and filed when the plan includes registration. The EIN is never accepted over the API (400 ein_not_accepted); the owner types it on setup_url. Writes need the key user to be the business owner (403 owner_required). start_checkout requires confirm_submission true; included plans file immediately. submit is disabled with 503 submission_unavailable pending shared durable reservation and reconciliation; it performs no filing. Correcting saved details does not resubmit rejected provider objects, which need operator reconciliation. Poll GET for state: submission is not approval. No document contents, credentials or legal attestations are accepted.

## Request body

- object
  - `action` 'save' | 'start_checkout' | 'submit', required
  - `business_id` string, required
  - `confirm_submission` boolean: Required true for start_checkout or submit after explicit owner confirmation.
  - `expected_updated_at` string: submit only: registration.updatedAt from a fresh status read.
  - `legal_business_name` string
  - `business_type` string
  - `industry` string
  - `website_url` string
  - `street` string
  - `city` string
  - `state` string
  - `postal_code` string
  - `contact_first_name` string
  - `contact_last_name` string
  - `contact_email` string
  - `contact_phone` string
  - `contact_job_position` string
  - `contact_title` string
  - `text_types` 'service' | 'service_and_sales'

## Response `200`

Saved or checkout result (not approval)

## Other responses

- `400`: invalid_request, invalid_details or ein_not_accepted
- `403`: Missing billing:write scope, no access, or owner_required
- `409`: Not ready, confirmation required or saved revision changed
- `502`: checkout_failed
- `503`: submission_unavailable: external submission disabled; do not retry through another entry point

---

[API](https://skmtc.dev/kaicalls/apis/kaicalls-public-api.md) · [All operations](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/revisions/e607fc6cf36e?raw)
