Where you can sell
Ask before you quote. A country Kleos has not opened is a fact you can have in a hundred milliseconds, and it costs a quote — the same fact discovered at the first dial costs your word in front of your own customer.
curl https://api.kleos.click/v1/coverage \
-H "Authorization: Bearer $KLEOS_API_KEY"No permission is needed beyond a valid key, and the answer is the same for every reseller — it describes Kleos, not your account. Pass ?country=BE for one country.
The five answers
status | What to do |
|---|---|
live | Sell it. Everything Kleos owes in that country is done. |
not_yet | Do not sell it yet. The outstanding work is ours, and the blockers say which part. You can still create customers there and build your pipeline. |
blocked | Do not sell it. Something outside Kleos is in the way and no date exists. The blocker carries the day we recorded it. |
unknown | We could not read our own coverage just then. This is not a statement that the country is closed — ask again. |
unsupported | Not a market Kleos opens. It will not become one. Creating a customer there is refused. |
sellable is the single boolean to branch on. It is true only for live.
Blockers
Every blocker says who has to move: kleos, carrier, or nobody. That last one is the useful one — it means waiting will not help.
| Code | Waiting on | Meaning |
|---|---|---|
country_not_supported | nobody | Not a market Kleos opens. It will not become one. |
calling_rules_not_cleared | Kleos | The calling rules for that country are not cleared for live traffic yet. |
human_speech_gate_closed | Kleos | Kleos has not certified its own delivery in that country's calling language. |
no_calling_language | Kleos | No calling language is mapped for that country yet. |
number_provisioning_on_hold | our carrier | Numbers cannot be obtained on that route at all right now. No date. |
number_requires_local_registration | Kleos | That country needs a local registration before a number can be bought. Kleos does it once, for the country. |
no_number_in_country | Kleos | Kleos holds no number there and cannot order one automatically yet. |
coverage_unknown | Kleos | A source could not be read. This says nothing about the country — ask again. |
Two of these codes — human_speech_gate_closed and no_number_in_country — are the same codes the readiness endpoint returns for a single customer. Deliberately: if you already branch on them there, you handle them here for free. The only difference is when you find out.
You get it on create, too
POST /v1/customers returns the coverage of that customer's country on the customer it just created. Creating a customer in a country that is not open yet is allowed and normal — pipelines are built before markets open. It just does not happen quietly.
A country Kleos does not open at all is the one case that is refused outright, with country_not_supported, on the create call. That is a promise you would otherwise make on our behalf that we could never keep.
Why the honest answer is short
Most of the map is not open yet, and this endpoint says so rather than implying otherwise. A coverage list that quietly reads as availability is worth less than nothing: it converts a conversation you could have had at quoting time into a refund you have to have later.