Onboarding your customers
There is exactly one thing in this whole program you cannot do on your customer's behalf, and this page is about that one thing.
Why it cannot be you
Calls go out in your customer's name. That makes your customer the caller under every calling rule that matters, and it makes them the party who must be able to say, on the day someone asks, that they had the right to contact the businesses on their list and that they honour do-not-call requests.
A confirmation you ticked for them is not that. It is a box in your database with your own name on it. So Kleos collects it directly from them, once, in writing, with their name against it — and refuses live calls until it exists.
The link
POST /v1/customers/crm-8842/onboarding_linkYou get back a URL. Send it however you already talk to your customers — your email, your dashboard, your onboarding checklist. Kleos does not send it for you, because the message it arrives in should sound like you.
The URL comes back once. We store only a hash of it, exactly as we do with API keys, so a leaked backup is not a set of working links into other people's customers. Lost it? Mint another — and note that doing so revokes the previous one, because a customer holding two live links is a customer who can accept the same terms twice from two inboxes.
What your customer sees
Your name. Your logo. Your colour. Your support address. Kleos is not mentioned, and neither is anyone else in the chain — set your branding before you send the first one, and set domain too if you want the link to sit on your own hostname rather than ours.
The page itself is deliberately plain: two confirmations, a name field, one button. Nothing is pre-ticked and the button stays dead until both boxes are ticked and a name is typed. A confirmation nobody had to deliberately give is not worth collecting.
Checking whether they did it
GET /v1/customers/crm-8842/onboarding_linkReturns the links you have minted, newest first, with status, completed_at and accepted_by — the name the person typed. Readiness reports the same fact as customer_not_attested, so you can drive a checklist off either one.