Region

Europe

Serving

The first region, and the anchor for Europe, Africa and the Middle East. Everything else was brought up against what this one proved.

What runs here

SIP edge eu.sip.telenaas.com Kamailio signalling only
Media plane media-eu.telenaas.com mediasoup no transcoding
Serves Europe, Africa, the Middle East

Emergency calling

AE no provider yet GB no provider yet IE no provider yet SA no provider yet

Recognising an emergency number is not the same as reaching a dispatcher. Where no certified provider is contracted, the call is refused with a reason rather than attempted and lost.

Region

Africa

Served from Europe

African traffic is anchored in Europe, and that is a decision rather than an oversight. Egress to Africa is billed at several times the European rate and infrastructure there is thin, so the trade is tens of milliseconds against a large multiple on every gigabyte.

What runs here

SIP edge eu.sip.telenaas.com Kamailio signalling only
Media plane media-eu.telenaas.com mediasoup no transcoding
Serves Africa

Emergency calling

EG no provider yet KE no provider yet NG no provider yet ZA no provider yet

Recognising an emergency number is not the same as reaching a dispatcher. Where no certified provider is contracted, the call is refused with a reason rather than attempted and lost.

Region

Asia

Planned

Configured and not yet serving. The hosts below are reserved; until the region is turned on, traffic for Asia is anchored in the nearest healthy one.

What runs here

SIP edge as.sip.telenaas.com Kamailio signalling only
Media plane media-as.telenaas.com mediasoup no transcoding
Serves Asia, Oceania

Emergency calling

AU no provider yet CN no provider yet IN no provider yet JP no provider yet NZ no provider yet SG no provider yet

Recognising an emergency number is not the same as reaching a dispatcher. Where no certified provider is contracted, the call is refused with a reason rather than attempted and lost.

Region

North America

Planned

Configured and not yet serving. The hosts below are reserved; until the region is turned on, traffic for North America is anchored in the nearest healthy one.

What runs here

SIP edge na.sip.telenaas.com Kamailio signalling only
Media plane media-na.telenaas.com mediasoup no transcoding
Serves North America

Emergency calling

CA no provider yet MX no provider yet US no provider yet

Recognising an emergency number is not the same as reaching a dispatcher. Where no certified provider is contracted, the call is refused with a reason rather than attempted and lost.

Region

Latin America

Planned

Configured and not yet serving. The hosts below are reserved; until the region is turned on, traffic for Latin America is anchored in the nearest healthy one.

What runs here

SIP edge la.sip.telenaas.com Kamailio signalling only
Media plane media-la.telenaas.com mediasoup no transcoding
Serves Latin America

Emergency calling

BR no provider yet

Recognising an emergency number is not the same as reaching a dispatcher. Where no certified provider is contracted, the call is refused with a reason rather than attempted and lost.

Telenaas API

One platform, one key format. Authenticate with Authorization: Bearer <key> and use the path prefix of the product you want. Create a key in the console, under Developers.

One prefix per product

A URL says which product it belongs to, and so does the name of every agent tool. /api/v1/telechat/… and telenaas_telechat_* are the same product reached two ways, and a key scoped to one product cannot wander into another.

Scopes are checked on reads too

A key is deliberately narrower than a person's membership. One scoped to meetings cannot read the call history, even though both belong to the same tenant. Every route below names the scope it needs.

Repeating a request is safe

Send an Idempotency-Key header on anything that writes. Repeating the request with the same key returns the first response instead of doing the work twice, which is what makes retrying after a timeout safe.

TeleCall

One-to-one audio, in the app.

Personal Business

A call between two people over WebRTC, with nothing in the middle. Audio only and direct, so it costs a fraction of a video room and connects in well under a second.

For business: Put a call button in your marketplace, your app or your listing, so a buyer reaches a seller without either of them giving out a number.

Endpoints

Method Path What it does Scope
GET /api/v1/telecall/calls List TeleCall calls

In-app audio calls this key can see, most recent first.

voice:read
POST /api/v1/telecall/calls Place an in-app call

Rings another account over WebRTC. No number is dialled and no carrier is involved, so there is no per-minute charge; pass `to_user_id`. For a call to a telephone, use TeleVoip instead.

voice:call

Agent tools

Tool What it does Scope
telenaas_telecall_place needs approval Ring another account over the app. No number is dialled and no carrier is involved; for a telephone, use telenaas_televoip_call_place. voice:call
telenaas_telecall_history In-app calls this person was in. Not the telephone log. voice:read

TeleMeet

Video meetings, 4 people to 400.

Personal Business

Scheduled or instant, with a waiting room, screen sharing, dial-in by telephone and the AI agents beside it. Only the active speakers are forwarded, which is what makes a large room affordable rather than theoretical.

For business: Branded rooms, your own domain, service levels, and a room size that matches the town hall rather than the stand-up.

Endpoints

Method Path What it does Scope
GET /api/v1/telemeet/meetings List meetings

Meetings for this tenant, most recent first.

meeting:read
POST /api/v1/telemeet/meetings Create a meeting

Room size is capped by the tenant's plan. Asking for more is refused rather than quietly reduced.

meeting:manage
GET /api/v1/telemeet/meetings/{id} Get a meeting

One meeting, with its join code and dial-in PIN.

meeting:read
DELETE /api/v1/telemeet/meetings/{id} Cancel a meeting

Marks it cancelled. Anyone already in the room is not thrown out.

meeting:manage

Agent tools

Tool What it does Scope
telenaas_telemeet_create needs approval Schedule a meeting and return its join code. meeting:manage
telenaas_telemeet_list List meetings for this tenant. meeting:read
telenaas_telemeet_peers Who is in a room right now — peer id, name, role, admitted or waiting — and what each is publishing on the SFU. meeting:manage
telenaas_telemeet_peer_remove needs approval Take someone out of a room. Their media stops at once and their socket closes; a grant token cannot reopen it. meeting:manage
telenaas_telemeet_peer_mute needs approval Mute or unmute someone's audio or video. Enforced on the SFU and in their channel, not requested of their browser. meeting:manage
telenaas_telemeet_recording needs approval Start (recording: true) or stop (recording: false) server-side recording of a room. Refused, with the reason, unless the tenant, plan and meeting all allow it. meeting:record
telenaas_telemeet_invite_link The link and dial-in PIN for a meeting, to send to somebody outside. meeting:read

TeleExpo

Show the thing, live.

Business

A public room where somebody demonstrates a product in real time and anybody can walk in from a link — no account, no application. Viewers ask questions beside the video, and the presenter can take one of them on camera.

For business: A live shop window. Run a demo from a product page, a marketplace listing or a campaign, and let anybody who is curious watch it happen.

Endpoints

Method Path What it does Scope
DELETE /api/v1/teleexpo/demos/{id}/live End a demo

Closes the room. The recording, if there was one, still has to be claimed.

demo:host
POST /api/v1/teleexpo/demos/{id}/live Go live

Opens the room and tells everybody watching the directory that it has started.

demo:host
GET /api/v1/teleexpo/demos/{id} Get a demo

One demo, with its audience count.

demo:read
GET /api/v1/teleexpo/demos List demos

Scheduled, live and finished product demonstrations.

demo:read
POST /api/v1/teleexpo/demos Schedule a demo

Creates the demo and its public page. Viewers join by slug and need no account; a demo is a broadcast with a question queue, not a meeting everybody talks in.

demo:host
GET /api/v1/teleexpo/requests Demo requests

People who asked for a demonstration and have not had one yet.

demo:read
GET /api/v1/teleexpo/demos/{id}/questions Questions asked

The audience's questions, most upvoted first, with the answers given.

demo:read

Agent tools

Tool What it does Scope
telenaas_teleexpo_schedule needs approval Schedule a live product demonstration and return its public link. Viewers need no account. demo:host
telenaas_teleexpo_list Demos in this tenant: scheduled, live and finished. demo:read
telenaas_teleexpo_go_live needs approval Open the room for a demo and announce it to everybody watching the directory. demo:host
telenaas_teleexpo_questions What the audience asked, most upvoted first — the useful thing to summarise after a demo. demo:read

TeleVoip

Real numbers on the real telephone network.

Personal Business

Numbers, inbound and outbound calls, queues and emergency calling. The part that reaches somebody who has never heard of us and is holding an ordinary telephone.

For business: Numbers per country, call centre queues, recording where the law allows it, and emergency calling handled properly.

Endpoints

Method Path What it does Scope
POST /api/v1/televoip/numbers/{id}/assign Assign a number

Give a number to a person in this tenant, or to a TeleAssistant so that it answers instead.

number:assign
GET /api/v1/televoip/calls List calls

Telephone call history for this tenant.

voice:read
POST /api/v1/televoip/calls Place a call

An emergency number takes a different path: never billed, never rate-limited, and refused outright if there is no dispatchable location.

voice:call
GET /api/v1/televoip/numbers List numbers

Numbers this tenant holds.

number:read

Agent tools

Tool What it does Scope
telenaas_televoip_call_place needs approval Place a call. Emergency numbers require an address on file. voice:call
telenaas_televoip_call_history Recent calls for this tenant. voice:read
telenaas_televoip_number_list Phone numbers this tenant holds. number:read
telenaas_televoip_number_request Ask for a phone number on behalf of the person this key acts for. number:request

TeleChat

Live chat, between anybody.

Personal Business

Conversations with presence, typing, replies and announcements. Message bodies are encrypted per organisation, so the platform carries them without being able to read them.

For business: Drop the widget into your website and a visitor is talking to your team in one line of script — the same conversation your staff already answer in the console.

Endpoints

Method Path What it does Scope
GET /api/v1/telechat/attachments/{id} Fetch a file

A short-lived download link for a file message: the provider's own when it can sign one, ours otherwise.

chat:read
GET /api/v1/telechat/widgets List chat widgets

The website widgets this tenant has, with their public keys and allowed origins.

chat:read
POST /api/v1/telechat/widgets Create a chat widget

Returns a public key for the `<script>` tag. The key is not a secret — `allowed_origins` is what keeps the widget to your own sites, and an empty list refuses every origin.

chat:moderate
POST /api/v1/telechat/conversations/{id}/contact Send a contact card

`name`, plus a `phone` or an `email`. The card is encrypted whole in the message body rather than spread across metadata, because it is somebody's number.

chat:write
GET /api/v1/telechat/conversations/{id}/archive Archived days

Days moved out of the hot window into the organisation's storage, newest first.

chat:read
GET /api/v1/telechat/conversations List conversations

Chat threads this key can see, including those started from a website widget.

chat:read
POST /api/v1/telechat/conversations/{id}/attachments Send a file

Multipart `file`, or JSON `name` and base64 `data`. Stored in the organisation's own storage; the message carries only the name and a reference.

chat:write
POST /api/v1/telechat/conversations/direct Start a direct conversation

Between the calling person and `user_id`; reuses the existing one.

chat:write
GET /api/v1/telechat/conversations/{id}/messages Read recent messages

The hot window, newest last, decrypted for the caller. Older days are in the archive.

chat:read
POST /api/v1/telechat/conversations/{id}/messages Send a message

Posts into a conversation. Bodies are encrypted at rest per tenant.

chat:write
POST /api/v1/telechat/conversations/{id}/voice Send a voice message

A recording, with `seconds` from whatever recorded it. Audio only: anything else is refused rather than stored as something no client can play.

chat:write
GET /api/v1/telechat/conversations/{id}/archive/{day} Read an archived day

The messages of one archived day, fetched from the organisation's storage and decrypted for the caller.

chat:read
GET /api/v1/telechat/attachment-policy What may be attached

Allowed content types and extensions, the size ceiling per class, and how long a voice message may run. Published so an integration can refuse a file before uploading it.

chat:read

Agent tools

Tool What it does Scope
telenaas_telechat_message_send Send a message to a conversation. chat:write
telenaas_telechat_conversation_list Conversations visible to this key. chat:read
telenaas_telechat_message_list Recent messages of a conversation, oldest first, decrypted for this key. chat:read
telenaas_telechat_direct_start Start (or find) the direct conversation with a person. chat:write
telenaas_telechat_contact_send Send somebody's details into a conversation as a contact card. Needs a name and either a number or an address. chat:write
telenaas_telechat_attachment_policy What may be attached to a message, how big it may be, and how long a voice message may run. chat:read
telenaas_telechat_widget_list The website chat widgets this tenant has, with the origins each one is allowed to load from. chat:read

TeleDesk

A help desk that knows about the call.

Business

Tickets, queues with real routing rules, service levels computed from timestamps rather than tracked by a flag, and a knowledge base that knows what may be sent to a customer and what may not.

For business: One thread per problem, whether it started on the telephone, in chat or in a meeting.

Endpoints

Method Path What it does Scope
GET /api/v1/teledesk/knowledge Search the knowledge base

Pass `audience=public` to get only articles that may be sent to a customer.

helpdesk:read
GET /api/v1/teledesk/tickets/{id} Get a ticket

With its messages. Internal notes are included only for a key holding helpdesk:respond.

helpdesk:read
POST /api/v1/teledesk/tickets/{id}/replies Reply to a ticket

Set `internal` to true for a note to colleagues, which is not sent to the requester.

helpdesk:respond
GET /api/v1/teledesk/tickets List tickets

Help desk tickets for this tenant.

helpdesk:read
POST /api/v1/teledesk/tickets Open a ticket

Routed to a queue by the same rules a ticket opened by a person would be.

helpdesk:respond

Agent tools

Tool What it does Scope
telenaas_teledesk_ticket_open Open a help desk ticket. Routed to a queue by the same rules a person's would be. helpdesk:respond
telenaas_teledesk_ticket_list Tickets in this tenant, newest first. helpdesk:read
telenaas_teledesk_ticket_reply needs approval Reply to a ticket. An internal note is not sent to the person who raised it. helpdesk:respond
telenaas_teledesk_knowledge_search Search the knowledge base. Ask for audience 'public' to get only what may be sent to a customer. helpdesk:read

TeleAssistant

What answers when you cannot.

Personal Business

A virtual assistant in front of a TeleVoip number: a greeting, a menu, voicemail, out-of-hours handling, and an agent that can take a message or route the call.

For business: Per number, per queue, per time of day — with the AI agents transcribing the voicemail and telling you what it was about.

Endpoints

Method Path What it does Scope
GET /api/v1/teleassistant/assistants List assistants

The assistants in this tenant and the numbers they answer.

assistant:read
POST /api/v1/teleassistant/assistants Create an assistant

A greeting, business hours, and what to do outside them: take a message, offer a menu, forward, or hand over to an AI agent.

assistant:manage
GET /api/v1/teleassistant/voicemails List voicemails

Who called, when, and the transcript. The audio is not here: like every recording, it is delivered to a device or to Burmeel Storage and never kept in our database.

assistant:read
GET /api/v1/teleassistant/assistants/{id} Get an assistant

One assistant, with its menu and its schedule.

assistant:read

Agent tools

Tool What it does Scope
telenaas_teleassistant_list Assistants in this tenant: what they answer, and what they do out of hours. assistant:read
telenaas_teleassistant_voicemails Messages left for this tenant, with transcripts. The audio is not here and never was: recordings leave to a device or to Burmeel Storage, and are not kept. assistant:read

TeleMarketing

Campaigns by text, to people who agreed to hear from you.

Business

An audience, a message with their name in it, and a send that obeys the opt-out and the hour of day. Consent is checked before every message, not at the upload.

For business: Upload a list, write one message, and reach all of it — with the people who said stop taken out for you, and nobody woken at four in the morning.

Endpoints

Method Path What it does Scope
GET /api/v1/marketing/campaigns List campaigns

Marketing campaigns and their state.

campaign:read
POST /api/v1/marketing/campaigns Create a campaign

A message and an audience. Marketing insists on opt-in and obeys quiet hours unless you say otherwise; `{{name}}` and anything else you stored about a person is filled in per message, and a message with a gap nothing fills is not sent to that person.

campaign:manage
POST /api/v1/marketing/campaigns/{id}/send Send it

The audience is fixed at this moment; people added later are not caught up in it.

campaign:manage
POST /api/v1/marketing/campaigns/{id}/cancel Cancel

Stops it for good.

campaign:manage
GET /api/v1/marketing/campaigns/{id} A campaign and its numbers

Sent, delivered, failed, skipped, replied.

campaign:read
POST /api/v1/marketing/campaigns/{id}/pause Pause

What has gone has gone; what has not, will not until it is sent again.

campaign:manage
GET /api/v1/marketing/campaigns/{id}/recipients Who it reached

Per person: what happened, and if they were skipped, why.

campaign:read

Agent tools

Tool What it does Scope
telenaas_telemarketing_campaign_send needs approval Send a marketing campaign to an audience. Obeys opt-out and quiet hours; people who opted out are skipped and reported. campaign:manage
telenaas_telemarketing_campaign_list Campaigns this tenant has sent, with what became of them. campaign:read

TeleSurvey

Ask by text, one question at a time.

Business

Questions go out as messages and answers come back as answers: a number in range, a yes or a no, one of the choices offered, or whatever they typed. Anything that does not fit is asked again rather than counted wrong.

For business: The response rate of a text message, with the results added up for you — no link to click, no form to load.

Endpoints

Method Path What it does Scope
GET /api/v1/surveys/{id}/results Results

Numbers averaged, choices counted, free text left alone — an average of somebody's sentences is not a finding.

campaign:read
GET /api/v1/surveys/{id}/responses Every response

Per person: where they got to, and what they said.

campaign:read
GET /api/v1/surveys List surveys

The questionnaires this tenant has written.

campaign:read
POST /api/v1/surveys Create a survey

Questions are asked one message at a time. A question may be `scale` (a number in range), `yes_no`, `choice` (answered by word or by position) or `text`.

campaign:manage
POST /api/v1/surveys/campaigns Send a survey

Asks the first question of everybody on the audience; the rest follow as they answer.

campaign:manage

Agent tools

Tool What it does Scope
telenaas_telesurvey_results What a survey found: averages, counts, and what people typed. campaign:read

TeleAlert

The message that has to arrive now.

Business

Raised and sent in one call, at any hour, with an acknowledgement recorded when somebody replies. The only product here that ignores quiet hours, because that is the entire point of it.

For business: Wire it to your monitoring: one POST raises the alert, and you can see who has acknowledged it.

Endpoints

Method Path What it does Scope
GET /api/v1/alerts List alerts

What has been raised.

campaign:read
POST /api/v1/alerts Raise an alert

Sent at any hour — an alert is the one thing that ignores quiet hours. With `ack_required`, a reply is recorded as an acknowledgement and you can see who has answered.

campaign:manage
GET /api/v1/alerts/{id} An alert and its numbers

Including who acknowledged it.

campaign:read
GET /api/v1/alerts/{id}/recipients Who was alerted

And who has replied to say they are on it.

campaign:read

Agent tools

Tool What it does Scope
telenaas_telealert_raise needs approval Raise an alert now, at any hour. With acknowledgement required, replies are recorded as acknowledgements. campaign:manage

TeleEcommerce

Order updates your customers actually read.

Business

Post an order and its status; the customer hears about the parts you wrote a rule for. Sending the same status twice tells nobody twice, by text or by WhatsApp.

For business: Placed, paid, shipped, delivered — each with its own message, on whichever channel your customer uses.

Endpoints

Method Path What it does Scope
GET /api/v1/ecommerce/orders List orders

What we are tracking, and its state.

campaign:read
POST /api/v1/ecommerce/orders Record or update an order

Keyed on your own reference, so sending the same order twice updates it rather than duplicating it. The customer is told only when the status actually changes, and only where a rule says to.

campaign:manage
GET /api/v1/ecommerce/rules List rules

What gets said when an order reaches a state.

campaign:read
PUT /api/v1/ecommerce/rules Set a rule

One message per status. `channel` may be `sms` or `whatsapp`; a WhatsApp rule needs an approved template, and `fallback_channel` says what to do when WhatsApp cannot carry it — without one, nothing is sent rather than quietly switching channel.

campaign:manage
GET /api/v1/ecommerce/orders/{reference} One order

Including the history of what it has been.

campaign:read

Agent tools

Tool What it does Scope
telenaas_teleecommerce_order_update needs approval Record or move an order along. The customer is told only when the status actually changes, and only where a rule says to. campaign:manage

TeleLogistics

Where the parcel is, said out loud.

Business

Collected, in transit, out for delivery, delayed, delivered — each a message with the tracking link in it, by text or WhatsApp, and a fallback when WhatsApp cannot carry it.

For business: Fewer "where is my parcel" calls, because the parcel says where it is.

Endpoints

Method Path What it does Scope
GET /api/v1/logistics/shipments List shipments

What is in flight.

campaign:read
POST /api/v1/logistics/shipments Record or update a shipment

The same shape as an order: your reference, the customer, the status, and anything else — a tracking link, an ETA — which the message can refer to by name.

campaign:manage
GET /api/v1/logistics/rules List rules

What gets said at each stage.

campaign:read
PUT /api/v1/logistics/rules Set a rule

By text or WhatsApp, with a fallback when WhatsApp cannot carry it.

campaign:manage
GET /api/v1/logistics/shipments/{reference} One shipment

And its history.

campaign:read

Agent tools

Tool What it does Scope
telenaas_telelogistics_shipment_update needs approval Record or move a shipment along, telling the customer where a rule says to. campaign:manage

TeleSMS

Appointments, confirmed and remembered.

Business

A booking goes in, the customer gets a confirmation and a reminder, and a reply of YES or NO confirms or cancels it — which the clinic, the garage or the salon sees as a status rather than as a text to read.

For business: The no-show rate falls when people can confirm by replying to a message they already have open.

Endpoints

Method Path What it does Scope
GET /api/v1/service/bookings/{reference} One booking

And its history.

campaign:read
GET /api/v1/service/rules List rules

Confirmations, reminders and cancellations.

campaign:read
PUT /api/v1/service/rules Set a rule

A negative `delay_minutes` is a reminder: -1440 is the day before. A reminder re-reads the booking before it goes, so one cancelled in the meantime is not reminded about.

campaign:manage
GET /api/v1/service/bookings List bookings

Appointments and their state.

campaign:read
POST /api/v1/service/bookings Record or update a booking

`at` is when the appointment is. A customer who replies YES confirms it and one who replies NO cancels it, which you read back here as a status rather than as a message to interpret.

campaign:manage

Agent tools

Tool What it does Scope
telenaas_telesms_booking_update needs approval Record or change an appointment. A customer replying YES confirms it and NO cancels it. campaign:manage

TeleTransit

Text the stop, hear when the bus comes.

Business

A rider texts the code on the pole and gets the next departures — the operator's own latest times where they differ from the timetable, which is the number somebody standing in the rain actually wants.

For business: Works on every phone ever made, with no app to install and no data connection — which is exactly the rider your app never reaches.

Endpoints

Method Path What it does Scope
GET /api/v1/transit/stops List stops

Every stop, by the code riders text.

textin:read
PUT /api/v1/transit/stops Upload stops

Keyed on the code printed at the stop. Bad rows are named and the rest are written — a timetable from somebody else's system should not fail whole because of one stop.

textin:manage
GET /api/v1/transit/services List text lines

The numbers and keywords this operator answers on.

textin:read
POST /api/v1/transit/services Set up a text line

Bind a service to one of your numbers, optionally behind a keyword so one number can run several: "BUS 4412" and "TRAIN 4412".

textin:manage
GET /api/v1/transit/stops/{code}/departures What is due

The next departures from one stop, as a rider texting it would be told.

textin:read
PUT /api/v1/transit/departures Upload departures

Keyed on stop, line and timetabled time, so pushing the same board every thirty seconds updates it rather than duplicating it. `expected_at` is what you now believe, and is what riders are told.

textin:manage

Agent tools

Tool What it does Scope
telenaas_teletransit_departures The next departures from a stop, as a rider texting its code would be told. textin:read

TeleFly

Text a flight number, get its times.

Business

Status, gate, terminal and the times as they now stand. One message out, one back, while the passenger is walking through the terminal with no signal to spare.

For business: Fewer people at the desk asking the same question, and an answer that reaches somebody whose roaming data is off.

Endpoints

Method Path What it does Scope
GET /api/v1/flights Today's flights

What we can answer about.

textin:read
PUT /api/v1/flights Upload flights

Keyed on number and date, because BA123 is a different aeroplane every morning. Send the whole board as often as you like.

textin:manage
GET /api/v1/flights/services List text lines

Where TeleFly answers.

textin:read
POST /api/v1/flights/services Set up a text line

Bind TeleFly to a number.

textin:manage

Agent tools

Tool What it does Scope
telenaas_telefly_flight A flight's times, gate and status for today. textin:read

TeleCrime

Report it by text, and get a reference.

Business

Somebody texts what happened and gets a reference back; the report is encrypted and a ticket is raised for whoever works the queue. It can be configured to take reports anonymously, in which case the number is never written down at all. It is not an emergency service, and every reply says so.

For business: A quiet way to report something for people who will not ring, with the reports in one queue and a reference they can quote.

Endpoints

Method Path What it does Scope
GET /api/v1/reports/services List text lines

Where TeleCrime answers.

report:read
POST /api/v1/reports/services Set up a reporting line

`config.anonymous` makes it anonymous, in which case the reporter's number is never written down. `config.emergency_number` is the number every reply tells people to ring if they are in danger.

report:read
GET /api/v1/reports Reports received

Behind its own permission: setting up a line and reading what was confided to it are different things.

report:read
GET /api/v1/reports/{reference} One report

Including what was written.

report:read
POST /api/v1/reports/{reference} Move a report along

received, acknowledged, investigating, closed.

report:read

Agent tools

Tool What it does Scope
telenaas_telecrime_reports Reports made by text. Anonymous ones carry no number, because none was kept. report:read

TeleAuth

The second factor, sent and checked.

Business

Send a code to a telephone number and ask us, a moment later, whether what somebody typed matches. The code is hashed the way a password is and never stored, a wrong id and a wrong code take the same time to refuse, and a code works exactly once. Sending is the guarded half: second factors are the favourite target of SMS pumping, so every code goes through the same policy that stops toll fraud on calls, and through rate limits held per destination as well as per account.

For business: Two calls — send, then check — and the parts that are easy to get wrong are already wrong-proof: no plaintext codes, no replay, no timing tell, and no open door for pumped traffic.

Endpoints

Method Path What it does Scope
GET /api/v1/verify/verifications Recent verifications

Status only — never the code, which we do not keep.

verify:read
POST /api/v1/verify/verifications Send a code

Six digits to a telephone number, hashed here the way a password is and never stored in the clear. Defaults: ten minutes, five attempts. `message` may carry your own wording with `{{code}}` in it; `reference` is your own identifier for whatever you are protecting, handed back to you. Asking again for the same number cancels the previous code.

verify:send
GET /api/v1/verify/verifications/{id} One verification

Its state and how long is left of it.

verify:read
GET /api/v1/verify/verifications/stats How it is going

Sent, approved, expired and failed over the last week, with the success rate. Watch the expired count: codes sent and never checked are people who never received them.

verify:read
POST /api/v1/verify/verifications/{id}/check Check a code

Answers 200 with `approved` or `denied` and a reason — a wrong code is an answer, not a failed request. A code works once; an approved verification cannot be approved again.

verify:check
POST /api/v1/verify/check Check by number

The same check against whatever is outstanding for a telephone number, for callers who know the number rather than our id.

verify:check

Agent tools

Tool What it does Scope
telenaas_teleauth_stats How second factors are going: sent, approved, and how many were never checked. Read-only — sending a code is something a person asks for, not something an agent decides. verify:read

TeleGuard

When something is forced, the guards know in seconds.

Personal Business

Sensors, doors and panels report here; the people on the rota are texted at once, and if nobody answers within five minutes the next people are. An alarm nobody acknowledged is recorded as exactly that rather than disappearing.

For business: Wire your existing panel to one endpoint. Rotas, escalation and acknowledgements come with it, and a device that stops reporting is itself an alarm.

Endpoints

Method Path What it does Scope
GET /api/v1/guard/events/{id} One event

Including what the device reported.

device:read
GET /api/v1/guard/devices List devices

Sensors, doors and panels, and which have gone quiet.

device:read
PUT /api/v1/guard/devices Register a device

Keyed on your own reference. `heartbeat_minutes` is how often it promises to report; silence past twice that is itself an alarm, because a cut sensor cannot announce that it has been cut.

device:manage
GET /api/v1/guard/devices/silent Devices gone quiet

The ones to go and look at.

device:read
GET /api/v1/guard/events Events

Raised, notified, acknowledged, resolved — or expired, which means nobody ever answered.

device:read
POST /api/v1/guard/events Report something

The call a panel makes at two in the morning, so it is the simplest one here. A repeat of something already ringing updates it rather than raising a second alarm and waking the rota twice.

device:report
POST /api/v1/guard/events/{id}/resolve Close it

With a note about what it was.

device:manage
GET /api/v1/guard/responders Who gets told

In the order they are told.

device:read
PUT /api/v1/guard/responders Add somebody to the rota

`step` is the escalation order: everybody on step one is told at once, step two only if nobody answered within five minutes.

device:manage

Agent tools

Tool What it does Scope
telenaas_teleguard_events Security events: what is ringing, what was answered, and what nobody answered. device:read

TeleHealth

A fall, a missed dose, a reading out of range — somebody is told.

Personal Business

Health devices report here and the right people are texted: family are told that something happened, where, and who to ring; clinicians may be told the reading. The payload is encrypted and a family member is never sent a measurement, because a text message is not the place for somebody's medical detail.

For business: Escalation that reaches a person rather than a dashboard nobody is watching at three in the morning, with disclosure decided by role rather than by whoever wrote the template.

Endpoints

Method Path What it does Scope
GET /api/v1/health/events Events

And what became of each.

device:read
POST /api/v1/health/events Report something

A fall, a missed dose, a reading out of range. Anything in `reading` is encrypted at rest and is never put in a message to family.

device:report
POST /api/v1/health/events/{id}/resolve Close it

With a note.

device:manage
GET /api/v1/health/devices/silent Devices gone quiet

A monitor that has stopped reporting is not a monitor.

device:read
GET /api/v1/health/devices List devices

Health devices and which have gone quiet.

device:read
PUT /api/v1/health/devices Register a device

The same shape as TeleGuard: your reference, what it is, where it is.

device:manage
GET /api/v1/health/responders Who gets told

With their role, which decides what they may be told.

device:read
PUT /api/v1/health/responders Add somebody

`role` matters here: a clinician may be told the reading, family are told that something happened, where, and who to ring. That line is not a template setting.

device:manage
GET /api/v1/health/events/{id} One event

With the reading, for somebody allowed to see it.

device:read

Agent tools

Tool What it does Scope
telenaas_telehealth_events Health device events. Readings are not returned: what a family member may be told is decided by role, and an agent is not a role. device:read

TeleAI

Agents that can text, ring and open a room — on a leash.

Business

A session gives an agent a person to talk to, the channels it may use, the actions it may take and what it may spend. Every action is checked before it happens and written down afterwards, including the ones it was refused — because "it never rang them" and "it tried and was not allowed to" are different facts.

For business: Let something autonomous touch a telephone network on your account and still be able to say exactly what it did, what it cost, and what stopped it.

Endpoints

Method Path What it does Scope
GET /api/v1/agents/sessions Sessions

What agents are running, and what they have spent.

agent:read
POST /api/v1/agents/sessions Open a session

Give the agent one person to talk to, the channels it may use, the actions it may take and what it may spend. An agent with no `allowed_actions` can only listen.

agent:run
POST /api/v1/agents/sessions/{id}/act Do something

`send_message`, `place_call`, `open_room` or `hand_over`. Checked in that order: may it, can it afford it, is the destination allowed — the same dial policy a person is held to.

agent:run
GET /api/v1/agents/sessions/{id} One session

Its leash and what is left of the budget.

agent:read
POST /api/v1/agents/sessions/{id}/close End the session

Nothing further may be done on it.

agent:run
GET /api/v1/agents/sessions/{id}/actions Everything it did

Including what it tried and was refused, with the reason — "it never rang them" and "it tried and was not allowed to" are different facts.

agent:read

Agent tools

Tool What it does Scope
telenaas_teleai_sessions Agent sessions, what they were allowed to do, and what they have spent. agent:read

TeleMarket

The hardware, already paired with the platform.

Personal Business

Door contacts, panels, trackers and fall sensors, sold with the thing they talk to. Every item says which products it works with, so nobody buys a sensor that cannot reach the alarm — and what arrives is registered to the account rather than to a manual nobody reads.

For business: Fit out a site without spending a week checking which hub speaks to which protocol: the catalogue only lists what we have already made work.

Endpoints

Method Path What it does Scope
GET /api/v1/telemarket/items The catalogue

What this account may buy, which is not the whole shop: a household is not offered the 24-zone panel and a business is not offered the single-flat starter kit. `works_with` names the products an item talks to; `requires` names what must already be on a bundle before it can be added to one. A `stock` of `null` means made to order rather than sold out.

market:read
GET /api/v1/telemarket/orders/{reference} One order

Including the delivery address, which is encrypted at rest.

market:read
GET /api/v1/telemarket/orders Your orders

Newest first, with their lines.

market:read
POST /api/v1/telemarket/orders Place an order

`items` is a list of `{sku, quantity}`. Nothing else is read from it — a price sent in the request is ignored, and every line is priced from the catalogue inside the same transaction that takes it out of stock. One line that cannot be sold refuses the whole basket, because a hub without its sensors is an alarm that cannot ring.

market:buy

Agent tools

Tool What it does Scope
telenaas_telemarket_items What TeleMarket sells this account: devices, what each one works with, what it costs and whether we hold any. Read-only — spending money is not something an agent decides. market:read

TeleHome

A number, texting and an alarm — as one thing, for one home.

Personal

A telephone number, text messages, TeleGuard watching the door, and the devices to do it with. One monthly price, and anything else from TeleMarket can be added to it later at its own price.

Endpoints

Method Path What it does Scope
DELETE /api/v1/telehome/addons/{sku} Take a line off

What the bundle came with cannot be taken off it — cancel or change the bundle instead.

bundle:manage
GET /api/v1/telehome/addons What can be added

With what each one needs.

bundle:read
POST /api/v1/telehome/addons Add a paid line

An accessory is refused unless the bundle already includes what it needs; an upgrade requires nothing, because buying it is what adds the product.

bundle:manage
GET /api/v1/telehome/bundle Your bundle

What is on it, what it costs a month, and — if there is none — which bundle this account could take.

bundle:read
DELETE /api/v1/telehome/bundle Give it up

The row stays, with the date. The charging stops.

bundle:manage
POST /api/v1/telehome/bundle Take TeleHome

Refused for a company account: TeleHome is a household and TeleBusiness is premises, and selling either to the other is selling the wrong shape of thing.

bundle:manage

Agent tools

Tool What it does Scope
telenaas_telehome_bundle The household bundle this account is on, what is included, what was added and what it costs a month. bundle:read

TeleBusiness

The same bundle, sized for premises and staff.

Business

Numbers, texting and TeleGuard across your sites, with add-ons for the products a business actually uses — campaigns, a help desk, more devices, more numbers. One subscription, itemised, and every line can be taken off it again.

For business: One subscription instead of seven line items, and an itemised bill that still says which product earned which pound.

Endpoints

Method Path What it does Scope
GET /api/v1/telebusiness/bundle Your bundle

As TeleHome, for a company.

bundle:read
DELETE /api/v1/telebusiness/bundle Give it up

The charging stops.

bundle:manage
POST /api/v1/telebusiness/bundle Take TeleBusiness

Refused for a personal account, for the same reason in reverse.

bundle:manage
DELETE /api/v1/telebusiness/addons/{sku} Take a line off

From next month.

bundle:manage
GET /api/v1/telebusiness/addons What can be added

Seats, sites, campaigns, storage and numbers.

bundle:read
POST /api/v1/telebusiness/addons Add a paid line

Charged from the month it is added.

bundle:manage

Agent tools

Tool What it does Scope
telenaas_telebusiness_bundle The company bundle this account is on, its lines and its monthly total. The same tool as TeleHome's under a different name, because an account has one of the two and a person asking should not have to know which. bundle:read

TeleCash

The text that arrives the moment money moves.

Business

For transfer agencies, remittance operators and lenders: post each movement as it happens and the account holder is told in seconds — sent, received, paid in, taken out — with the history in their own Telenaas app afterwards. We are not the ledger. You hold the money and the truth about it; a balance here is the one you reported, stamped with when you reported it, and a movement posted twice is one movement rather than two texts about somebody's money.

For business: Transaction alerts that are yours rather than your core banking vendor's: your words, your sender ID, your own record of what was sent and what arrived.

Endpoints

Method Path What it does Scope
GET /api/v1/telecash/transactions Movements

Newest first, filterable by account, kind and status.

cash:read
POST /api/v1/telecash/transactions Post a movement

The call to make the moment money moves. `reference` is your own and is the idempotency key: post the same movement again — after a timeout, say — and you get 200 with `duplicate: true` and the holder is not texted a second time. Amounts are positive integers in minor units; which way the money went follows from `kind`, so a negative amount is refused rather than read as a direction.

cash:post
GET /api/v1/telecash/pin-calls PIN calls

Newest first, filterable by your `reference`. How each call ended, never what was typed.

cash:read
POST /api/v1/telecash/pin-calls Ring for a PIN

`in_reply_to` is the id of a text the customer sent in the last 15 minutes, and `reference` your own name for what is being approved. We ring the sender from the number they texted and ask for their PIN on the keypad. The digits are posted once, signed like any webhook, to your endpoint subscribed to `telecash.pin.entered`; answer `{"result": "approved" | "retry" | "refused"}` and the caller hears it. **The digits are never stored, logged or retried** — there is no delivery record of them to replay. How the call ended arrives as `telecash.pin_call.ended`. Three calls per number per 15 minutes; your dial policy applies.

cash:post
POST /api/v1/telecash/messages/{id}/reply Answer a text

`text` (up to 480 characters) goes to the number that sent the message, from the number it was sent to. Only within 30 minutes of it arriving and at most five times per message: a TeleCash key answers people who wrote to you, it cannot text anybody else.

cash:post
GET /api/v1/telecash/accounts/{reference} One account

As you last reported it.

cash:read
GET /api/v1/telecash/pin-calls/{id} One PIN call

Its status: ringing, answered, approved, refused, unavailable, not_answered, abandoned or timed_out.

cash:read
GET /api/v1/telecash/accounts Accounts

The accounts you have registered, with the balance you last reported and when you reported it.

cash:read
PUT /api/v1/telecash/accounts Register an account

Keyed on your own reference. `holder` is the telephone that gets the alert, and it is also how the account holder's own Telenaas app finds this account. A `balance_minor` here is recorded as reported now — we never compute one, because a balance worked out from messages we might have missed is how somebody is told they have money they have not got.

cash:manage
GET /api/v1/telecash/messages/{id} A text a customer sent

The words of an inbound text, by the `message_id` in an `sms.received` webhook. The webhook names the message and never carries its words, because deliveries are stored and replayable while message bodies are kept encrypted. Readable for 30 minutes after it arrived; older texts are the console's business.

cash:read
GET /api/v1/telecash/summary Today

What moved in the last day, and how many alerts have not gone out.

cash:read
GET /api/v1/telecash/transactions/{reference} One movement

Including the counterparty, which is encrypted at rest.

cash:read

Agent tools

Tool What it does Scope
telenaas_telecash_accounts Accounts registered with TeleCash: kind, holder, currency, and the balance the institution last reported — with the moment it said so, because the number goes stale rather than being kept current by us. Account numbers come back masked. cash:read
telenaas_telecash_transactions Movements posted to TeleCash: what moved, which way, when, and whether the holder was told. Read-only, and deliberately so — posting a movement sends a real person a message about their money, and that is not a decision anything autonomous makes. cash:read

TeleBooking

Booked, arriving, leaving — said before they have to ask.

Personal Business

For hotels, clinics, venues and anybody who keeps a room or a slot: the confirmation when it is booked, the message the evening before, the code at check-in and the reminder at check-out. A reminder counts back from the arrival rather than from the booking, which is the difference between "tomorrow" meaning tomorrow and meaning the moment somebody pressed book.

For business: One line in your property system becomes every message a guest gets, in your words and from your sender ID.

Endpoints

Method Path What it does Scope
GET /api/v1/booking/stays/{reference} One stay

With its history.

campaign:read
GET /api/v1/booking/stays List stays

What is booked, and where each one is up to.

campaign:read
POST /api/v1/booking/stays Record or update a stay

Keyed on your own reference. `at` is the arrival — a rule with a negative delay counts back from it, so the evening before is the evening before the guest arrives rather than the evening before they booked.

campaign:manage
GET /api/v1/booking/rules List rules

What is said at each state of a stay.

campaign:read
PUT /api/v1/booking/rules Set a rule

One message per status, per channel.

campaign:manage

Agent tools

Tool What it does Scope
telenaas_telebooking_stay_update needs approval Record a stay or move it along — booked, confirmed, checked in, checked out — telling the guest where a rule says to. `at` is the arrival, which is what a reminder counts back from. campaign:manage

TeleBilling

The bill, before it is late.

Personal Business

Subscription billing, utility billing, anything that comes round again: issued, due, paid, overdue. Set it once as an automation and it runs on the first of the month without anybody pressing send — and stops the day somebody pays.

For business: Fewer late payments for the price of a text message, and a customer who was told rather than chased.

Endpoints

Method Path What it does Scope
GET /api/v1/billing/bills List bills

Issued, due, paid, overdue.

campaign:read
POST /api/v1/billing/bills Record or update a bill

`at` is when it falls due, which is what the reminder counts back from. Marking it paid stops the chasing: rules fire on a change of status, and paid is a status.

campaign:manage
GET /api/v1/billing/bills/{reference} One bill

With its history.

campaign:read
GET /api/v1/billing/rules List rules

What is said at each state of a bill.

campaign:read
PUT /api/v1/billing/rules Set a rule

Including the reminder before the due date and the chase after it.

campaign:manage

Agent tools

Tool What it does Scope
telenaas_telebilling_bill_update needs approval Record a bill or move it along: issued, due, paid, overdue. `at` is when it falls due. campaign:manage

TeleInvoices

Sent, seen, due, paid — and the one that is late.

Business

An invoice's whole life as four messages, each with the link to pay in it. The late one is the product: an invoice nobody chased is an invoice nobody paid, and chasing is the part everybody puts off.

For business: Your ledger stays where it is. What changes is that being owed money stops depending on somebody remembering to ask for it.

Endpoints

Method Path What it does Scope
GET /api/v1/invoices/rules List rules

What is said at each state.

campaign:read
PUT /api/v1/invoices/rules Set a rule

Including the one that chases a late invoice.

campaign:manage
GET /api/v1/invoices/invoices/{reference} One invoice

With its history.

campaign:read
GET /api/v1/invoices/invoices List invoices

Sent, viewed, due, paid, late.

campaign:read
POST /api/v1/invoices/invoices Record or update an invoice

Put the payment link in `attributes` and name it in the rule's body — the message that gets paid is the one somebody can pay from.

campaign:manage

Agent tools

Tool What it does Scope
telenaas_teleinvoices_invoice_update needs approval Record an invoice or move it along: sent, viewed, due, paid, late. campaign:manage

TeleReminder

The message that arrives in time to be useful.

Personal Business

An exam, an interview, a train, a payment, an appointment: give it a time and what to say, and the reminder counts back from the thing itself. One that would arrive after the event is not sent, because a reminder about something that already happened is just noise from a machine.

For business: Fewer people who simply forgot — which is most of the people who do not turn up.

Endpoints

Method Path What it does Scope
GET /api/v1/reminders/rules List rules

When to remind, and what to say.

campaign:read
PUT /api/v1/reminders/rules Set a rule

A negative `delay_minutes` counts back from `at`; a positive one follows up after.

campaign:manage
GET /api/v1/reminders/reminders List reminders

What is waiting to be sent.

campaign:read
POST /api/v1/reminders/reminders Set a reminder

`at` is when the thing happens — the exam, the interview, the train, the payment. A rule with `delay_minutes: -1440` sends the day before. A reminder whose moment has already passed is not sent, because a reminder about something that has happened is noise.

campaign:manage
GET /api/v1/reminders/reminders/{reference} One reminder

With its history.

campaign:read

Agent tools

Tool What it does Scope
telenaas_telereminder_reminder_update needs approval Set a reminder or close one. `at` is when the thing itself happens — the exam, the interview, the train — and the reminder counts back from it. One whose moment has passed is not sent. campaign:manage

TeleMarkets

A text when the market moves, not a newsletter next week.

Personal Business

Movement, shortage, high demand, disruption, a recession, a recovery: somebody registers the markets they have money or stock in, and hears the moment one of them changes. Businesses and investors both — a shopkeeper watching cement and a fund watching Brent are the same product. A signal that repeats yesterday's condition is not sent. An alerting product that cries the same thing twice teaches people to ignore it.

For business: Your own market watch on your own list of things, going out in your name — rather than your customers finding out from somebody else's alert.

Endpoints

Method Path What it does Scope
GET /api/v1/markets/rules List rules

What is said at each condition.

campaign:read
PUT /api/v1/markets/rules Set a rule

One message per condition, per channel.

campaign:manage
POST /api/v1/markets/signals A market moved

`condition` is one of steady, movement, high_demand, shortage, disruption, recession, recovery. Everybody watching that market is told, under their own rules and their own quiet hours. **A signal repeating the condition somebody was last told is not sent to them** — an alerting product that cries the same thing twice teaches people to ignore it — and the answer says how many were told and how many were already there.

campaign:manage
GET /api/v1/markets/markets Markets

Everything anybody here is watching.

campaign:read
GET /api/v1/markets/watchers Who is watching what

One row per person per market, with the condition each was last told about.

campaign:read
PUT /api/v1/markets/watchers Register a watch

`market` is the thing — an instrument, a commodity, a supply line — and `customer` is the telephone that hears about it. Idempotent per person per market, so a client retrying a sign-up does not create two.

campaign:manage

Agent tools

Tool What it does Scope
telenaas_telemarkets_signal needs approval Tell everybody watching a market that it has moved: steady, movement, high_demand, shortage, disruption, recession or recovery. Anybody already at that condition is not told again. This sends real messages to real people about their money, so it asks first. campaign:manage
telenaas_telemarkets_watchers Who is watching which market, and the condition each was last told about. campaign:read

TeleInternet

Broadband, fibre, fixed wireless and satellite — from whoever reaches the address.

Personal Business

Internet is sold to a place rather than to a person: a fibre plan exists only if somebody already laid fibre down that street. So this asks the one question the rest of the platform never has to — can it be delivered here — and refuses to take the order until the answer is yes. Where a partner publishes a qualification API, the address is checked while the customer waits. Where they do not, the order is placed and stays visibly unsent until a person has checked, because a line sold to an address that cannot have one is a customer who cancelled their old provider for nothing.

For business: Sell connectivity alongside your own services — your price, your invoice, and your brand where the carrier's programme permits it.

Endpoints

Method Path What it does Scope
GET /api/v1/teleinternet/plans/{id} One plan in full

Speeds, caps, contract length and what we pay for it — a key belonging to the reselling organisation may see the wholesale price and the margin, because they are the reseller.

resale:read
POST /api/v1/teleinternet/plans/{id}/coverage Can this address have it

Address in, availability out. Three answers: available, not available, or `available: null` — which means that partner publishes no qualification API and a person has to check. The third is not a failure and the plan stays orderable.

resale:read
GET /api/v1/teleinternet/plans Broadband plans in a country

`market` is required: a plan list without one is a list of things that may be impossible where the customer lives. Fibre, DSL, cable, fixed wireless and satellite, cheapest first, with the partner behind each one named.

resale:read
POST /api/v1/teleinternet/orders/{id}/refresh Ask the provider what has happened

Their word for the state is recorded as it came. Only unambiguous ones move our status: `completed` means live, `rejected` means failed, and anything else leaves ours alone rather than guessing.

resale:read
POST /api/v1/teleinternet/orders/{id}/submit Hand the order to the provider

`status` is ours, `partner_status` is theirs. A partner with no integration answers `awaiting_manual_submission`, which means **nothing has been sent yet** and a person must place it. Treating that as success is how a customer is told their line is ordered when it is not.

resale:sell
GET /api/v1/teleinternet/orders/{id} One order and its history

Every state change and every message from the partner, in order — because a line that took three weeks is a story somebody has to tell a customer.

resale:read
DELETE /api/v1/teleinternet/orders/{id} Cancel an order

The provider is asked first where they allow it, then the order is marked cancelled. A cancellation recorded but never received is a service that keeps being billed.

resale:sell
GET /api/v1/teleinternet/orders Internet orders

This organisation's orders for broadband, newest first.

resale:read
POST /api/v1/teleinternet/orders Order a line

Needs the installation address. Refused when there is no signed agreement with the partner, when the agreement does not cover that country, or when the address came back unavailable. The price is taken from the catalogue and frozen onto the order; a price in the request is ignored.

resale:sell

Agent tools

Tool What it does Scope
telenaas_teleinternet_plan_list Broadband, fibre, fixed-wireless and satellite plans sellable in one country. A market is required: a plan list without one may be a list of things impossible where the customer lives. resale:read
telenaas_teleinternet_coverage_check Whether a broadband plan can be delivered to an address. Answers available, not available, or unknown — unknown meaning that partner has no coverage API and a person must check. resale:read
telenaas_teleinternet_order_place needs approval Order a broadband line for an address. Refused without a signed agreement covering that country, and refused when the address came back unavailable. resale:sell

TelePhones

Handsets, routers, SIMs and eSIMs, with the line already on them.

Personal Business

A phone is a physical object with a serial number, a SIM is posted and activated, and an eSIM is a profile downloaded onto a device that must be named before it is issued. Three different things behind one shelf, and the distinctions are kept: stock is decremented inside the order, an IMEI is checked before it is believed, and an eSIM activation code is shown once because anybody holding it can use it. Devices come from distributors and manufacturers; the line that runs on them comes from a carrier or an eSIM aggregator. A customer buying both is placing one order.

For business: Put hardware and connectivity in the same basket as the rest of your account — including eSIMs somebody can use the moment they land.

Endpoints

Method Path What it does Scope
GET /api/v1/telephones/catalogue/{id} One item in full

Brand, model, storage, data allowance and validity, as the supplier stated them.

resale:read
POST /api/v1/telephones/orders/{id}/submit Hand the order to the supplier

As with every product here: `awaiting_manual_submission` means a person still has to place it with the distributor.

resale:sell
GET /api/v1/telephones/orders Device and SIM orders

This organisation's orders, newest first.

resale:read
POST /api/v1/telephones/orders Order a device, a SIM or an eSIM

A device order may carry an `imei`, which is checked against the Luhn rule before it is believed. An eSIM order carries the phone's `eid` where the supplier issues profiles to a named device. Stock is decremented inside the order, so two people cannot buy the last handset.

resale:sell
POST /api/v1/telephones/orders/{id}/refresh Ask the supplier what has happened

Their status, recorded as they said it.

resale:read
GET /api/v1/telephones/catalogue Handsets, routers, SIMs and eSIMs

`market` is required. `kind` narrows it to `handset`, `router`, `sim`, `esim` or `mobile_plan`. Stock is reported as `in_stock` rather than a count, because a count that is one behind is worse than a boolean.

resale:read
GET /api/v1/telephones/orders/{id} One order and its history

Every state change, in order.

resale:read
DELETE /api/v1/telephones/orders/{id} Cancel an order

Asked of the supplier, then recorded.

resale:sell

Agent tools

Tool What it does Scope
telenaas_telephones_catalogue Handsets, routers, SIMs and eSIMs for sale in one country, with what the supplier said about each. resale:read
telenaas_telephones_order_place needs approval Order a device, a SIM or an eSIM. An IMEI is checked before it is believed; an eSIM may need the phone's EID. resale:sell

TeleTV

Television and streaming packages, licensed for the country they are watched in.

Personal Business

Television is the most conservative thing on this platform, because what is sold is a licence to watch content in a territory rather than a service that can be delivered anywhere. Rights are granted per country, per channel and per window, so every package carries its own territories and they are checked on top of the partner's own market. The channel line-up is whatever the partner published. Where they published none, the package says so rather than showing a list that looks authoritative and is not.

For business: Add television to a broadband or mobile sale, inside the rights territory, under your own brand where the operator's programme allows rebranding.

Endpoints

Method Path What it does Scope
POST /api/v1/teletv/orders/{id}/refresh Ask the operator what has happened

Their status, recorded as they said it.

resale:read
GET /api/v1/teletv/orders Television orders

This organisation's orders, newest first.

resale:read
POST /api/v1/teletv/orders Order a package

Needs the watching country. Checked twice: against the partner's programme and against the package's own rights territories, because a partner can operate in a country where a particular package is not licensed.

resale:sell
GET /api/v1/teletv/packages Television packages licensed for a country

`market` is required and means the country the customer watches in. Television rights are granted per country, per channel and per window, so a package sellable in Ireland may not be sellable in France even from the same operator.

resale:read
GET /api/v1/teletv/packages/{id} One package in full

The channel line-up exactly as the operator published it, the rights `territories`, and whether rebranding is permitted. An empty channel list means they published none — not that the package is empty.

resale:read
POST /api/v1/teletv/orders/{id}/submit Hand the order to the operator

`awaiting_manual_submission` means nothing has been sent yet.

resale:sell
GET /api/v1/teletv/orders/{id} One order and its history

Every state change, in order.

resale:read
DELETE /api/v1/teletv/orders/{id} Cancel an order

Asked of the operator, then recorded.

resale:sell

Agent tools

Tool What it does Scope
telenaas_teletv_package_list Television and streaming packages licensed for one country. Rights are granted per country, so the market is what decides the list. resale:read
telenaas_teletv_order_place needs approval Order a television package for a customer in one country. Checked against the partner's programme and against the package's own rights territories. resale:sell

TeleCenter

A VoIP phone system for a call centre: queues, agents and the wallboard.

Business

Telenaas already carries calls and the help desk already holds tickets. Neither is a call centre. What makes one is a queue that knows who is available, hands a call to exactly one of them, and measures what happened — so this is that, and nothing else. Three things it does that a switch with a hunt group does not. Wrap-up is a real state, so somebody who has just taken a complaint gets the seconds they were promised before the next call. One call reaches one headset, enforced in the database rather than hoped for. And the service level is measured from what happened against a promise the customer chose, so nobody is reporting an average that flatters the afternoon.

For business: Run an inbound team on the same platform as your numbers, your chat and your help desk — one address book, one bill, and a wallboard that says what is happening now.

Endpoints

Method Path What it does Scope
POST /api/v1/telecenter/calls/{id}/abandon The caller hung up while waiting

Its own status and its own flag, because it is the number a centre is judged on and folding it into "ended" is how it disappears from a report.

center:work
POST /api/v1/telecenter/agents/me/status An agent says what they are doing

`center:work`, not `center:manage`: going on a break should not need a supervisor. `away` needs a reason. Refused while on a call, because the router would otherwise offer a second one.

center:work
POST /api/v1/telecenter/queues/{queue_id}/route Offer the longest wait to the next agent

Three distinct refusals: no such queue, nothing waiting, or nobody available — and a supervisor needs to know which.

center:work
POST /api/v1/telecenter/calls/{id}/end The call ended

The agent goes into wrap-up for as long as the queue promised. Talk time is metered here — a call nobody answered cost nothing to carry.

center:work
GET /api/v1/telecenter/wallboard The wallboard

Per queue: waiting, longest wait, agents by state, handled and abandoned today, and the service level measured from the last day's calls. `service_level` is **null** when nothing has been answered — not 100.

center:read
GET /api/v1/telecenter/calls The floor right now

Waiting, ringing and talking, oldest first, with live wait times.

center:read
POST /api/v1/telecenter/calls A call arrives in a queue

Answers with the assignment, already offered to somebody if anybody was free. The caller is queued the moment they arrive whether or not there is an agent.

center:work
POST /api/v1/telecenter/calls/{id}/wrap-up Wrap-up finished

Its own step on purpose. Collapsing it into the end of the call is the change that quietly removes wrap-up from the product.

center:work
GET /api/v1/telecenter/agents Who is on the floor

With what each is doing and for how long. `available` is the only state a call is offered to: wrap-up is not available, and neither is a break.

center:read
POST /api/v1/telecenter/agents Put somebody on the floor

Queues, skills, and whether they may supervise. Supervising is a capability on the agent rather than a role, so promoting somebody to administrator does not silently let them listen to calls.

center:manage
GET /api/v1/telecenter/queues The queues

Each with its strategy, its wrap-up seconds and its service-level promise as words.

center:read
POST /api/v1/telecenter/queues Create or change a queue

`strategy` is one of `longest_idle`, `round_robin`, `fewest_calls` or `skills` — named rules rather than a score, so a supervisor can predict who the next call goes to. A skills queue with no skills is refused, because that is a longest-idle queue wearing a confusing name.

center:manage
POST /api/v1/telecenter/calls/{id}/answer The agent picked up

The wait is measured here and stamped against the queue's own promise, once. Nothing recomputes a service level later from averages.

center:work

Agent tools

Tool What it does Scope
telenaas_telecenter_wallboard What is happening in every call queue right now: waiting calls, longest wait, agents by state, and today's service level. A queue that has answered nothing reports no service level rather than a perfect one. center:read
telenaas_telecenter_queue_list The call queues, with the strategy and the service level each one promises. center:read

TeleStream

Live streaming, and the shop beside it.

Business

Broadcast live to an unbounded audience — RTMP or WHIP in, low-latency HLS out — with live chat, moderation, and a product list you can put on screen one at a time. The API and the MCP tools are the product: build a live-shopping channel, a creator platform or an auction on them, and Telenaas carries the video. It is not a bigger meeting. A room forwards every speaker to every peer, so its cost rises with the square of the people in it; a broadcast is ingested once, transcoded once and served over HTTP, which is why a hundred thousand viewers is an ordinary number here and a research project there.

For business: Put live video and a live shop inside your own app. Your branding, your checkout, your domain — our ingest, transcode, edge and chat, reached over one REST API and one set of MCP tools.

Endpoints

Method Path What it does Scope
DELETE /api/v1/telestream/broadcasts/{id}/live End it

Meters two things, because they are two costs: `stream.ingest.minutes` is what the transcoder ran for whether or not anybody watched, and `stream.viewer.kminutes` is what the edge served, in thousands of viewer-minutes. Pass `received_video: false` to end it as `failed`.

stream:broadcast
POST /api/v1/telestream/broadcasts/{id}/live Go live

Refused with `already_live` when the channel already has one live — by a database index, not by a check two requests can both pass. Two ingests on one playback URL is what happens the first time an encoder reconnects early.

stream:broadcast
GET /api/v1/telestream/channels The channels

Each with its playback URLs, its latency mode and the last four characters of its ingest key. The key itself is not here and never will be.

stream:read
POST /api/v1/telestream/channels Create or change a channel

Creating one answers with the ingest key — **the only time it is returned**, because it is stored hashed. `handle` is in the playback URL and is unique across the platform. `latency_mode: "low"` costs more to serve and is what an auction or a live shop needs; `standard` is what a lecture needs.

stream:manage
GET /api/v1/telestream/broadcasts/{id} One broadcast

With both measured durations and both viewer figures — now and the peak. A falling "watching now" means nothing without the peak beside it.

stream:read
DELETE /api/v1/telestream/messages/{message_id}/hide Put it back

For when a moderator was wrong.

stream:moderate
POST /api/v1/telestream/messages/{message_id}/hide Hide a message

Hides; nothing deletes. The row keeps who hid it and why, so the author can be told and the moderator can be asked. Silently dropping a muted viewer's messages while still showing them their own is the most common dark pattern in live chat, and there is no endpoint for it here.

stream:moderate
POST /api/v1/telestream/channels/{id}/key Rotate the ingest key

Answers with the new key and invalidates the old one immediately. A rotation that leaves the old key working is not a rotation.

stream:manage
DELETE /api/v1/telestream/broadcasts/{id}/pin Take it off screen

Without putting anything else up.

stream:broadcast
GET /api/v1/telestream/broadcasts/{id}/products What is for sale

In the order the seller put them in, with whichever is pinned flagged.

stream:read
POST /api/v1/telestream/broadcasts/{id}/products Put something on sale

`price_cents` and `currency` are required. Live commerce runs on urgency, and urgency with the price hidden until checkout is a trap rather than a feature. Refused with `commerce_not_enabled` when the channel has no shop switched on.

stream:broadcast
POST /api/v1/telestream/broadcasts/{id}/products/{product_id}/pin Put one product on screen

One at a time, in one transaction, so there is no moment where the stream is showing two prices.

stream:broadcast
GET /api/v1/telestream/broadcasts/{id}/viewers The audience over time

The samples, so a chart can show whether people arrived and stayed or arrived and left. A peak alone cannot tell you which.

stream:read
POST /api/v1/telestream/broadcasts/{id}/viewers How many are watching

Reported by whoever is counting at the edge; the peak is stamped here as it is passed. Nothing estimates this number, because it is the one capacity is bought against.

stream:broadcast
GET /api/v1/telestream/broadcasts/{id}/messages The chat

Hidden lines are left out unless `moderator=true`, which needs `stream:moderate`.

stream:read
POST /api/v1/telestream/broadcasts/{id}/messages Say something

Needs only `stream:read`: a viewer is the point of a chat. Slow mode is enforced per author — a viewer with two tabs is one author — and a refusal says how many seconds are left rather than dropping the message.

stream:read
GET /api/v1/telestream/broadcasts/{id}/stats The numbers for one broadcast

Ingest seconds and viewer seconds are reported separately because they are billed separately, and an invoice should be checkable against this.

stream:read
GET /api/v1/telestream/broadcasts Broadcasts, newest first

Filter with `status` (`scheduled`, `live`, `ended`, `failed`) and `channel_id`. `failed` means it went live and no video ever arrived — distinct from `ended`, because "nobody watched" and "it was never on" call for opposite responses.

stream:read
POST /api/v1/telestream/broadcasts Schedule a broadcast

`record` is decided here, while nobody is watching, and is refused afterwards. A recording switch that can be flipped mid-stream records people who were told it was off.

stream:broadcast

Agent tools

Tool What it does Scope
telenaas_telestream_channel_list The live-streaming channels this organisation owns: handle, playback URLs, latency mode and whether chat and the shop are on. The ingest key is never included — it is stored hashed. stream:read
telenaas_telestream_broadcast_list Broadcasts, newest first. `status` narrows to scheduled, live, ended or failed — `failed` means it went live and no video ever arrived, which is a different problem from nobody watching. stream:read
telenaas_telestream_stats The numbers for one broadcast: who is watching now, the peak, how long the transcoder ran, and how many viewer-minutes were served. The last two are billed separately and are reported separately here. stream:read

Platform

What belongs to no single product: what a key can reach, what it has used, what it has been told, and the automations that wire the products together.

Endpoints

Method Path What it does Scope
GET /api/v1/assistants The assistants, one per product

Each product has its own: what it is for, what it can do, what it refuses, and the questions worth asking it first. Only products on this plan are listed.

ai:use
GET /api/v1/assistants/plan/{number} An assistant's plan for a dialled number

Infrastructure token. What the assistant in front of this number wants done with an incoming call: the greeting, the action, the forward or the menu. 404 with `no_assistant` means ring it normally.

infrastructure token
POST /api/v1/assistants/{product}/ask Ask a product's assistant

`question`, and `context` for what the caller already has on the screen. It answers and suggests; it never acts. Charged as one assistant message, half price on your own provider key, and every answer says a model wrote it.

ai:use
GET /api/v1/audiences List audiences

The lists this tenant writes to, and how many people are on each.

campaign:read
POST /api/v1/audiences Create an audience

A named list to send to.

campaign:manage
GET /api/v1/audiences/{id}/members List members

Everybody on a list, with whatever the business knows about them.

campaign:read
POST /api/v1/audiences/{id}/members Add members

Takes as many as you send, and answers with how many were added and which were rejected and why. A number that is not a number is named rather than failing the upload.

campaign:manage
DELETE /api/v1/audiences/{id}/members/{number} Remove a member

They stop being written to by anything that uses this list.

campaign:manage
GET /api/v1/audit Audit ledger

Hash-chained, append-only, and readable here.

audit:read
POST /api/v1/calls/events A call event from the switch

Infrastructure token. `started`, `answered` or `ended`, keyed on the switch's own call id. This is what turns a call into a record with a duration and a cost.

infrastructure token
GET /api/v1/emergency/route/{number} Emergency routing

Where an emergency call from this number goes, and with what address.

infrastructure token
GET /api/v1/greetings List greetings

Greetings for TeleCall, TeleVoip and TeleMeet: the caller's own and the organisation's shared one. `product` narrows it.

greeting:read
POST /api/v1/greetings Save a recorded greeting

Multipart `file`, or `name` and base64 `data`, plus `product`. Audio only, two minutes at most, and charged for nothing — it is somebody's own voice.

greeting:manage
POST /api/v1/greetings/spoken Write a greeting and have it read aloud

`script` and `product`, optionally a `voice`. Charged per thousand characters of speech, half price on your own provider key. Nothing is stored if the engine cannot speak: a greeting that plays silence is worse than none.

greeting:manage
DELETE /api/v1/greetings/{id} Delete a greeting

The audio is deleted from storage as well as the greeting retired. The audit trail keeps the record that it existed.

greeting:manage
POST /api/v1/greetings/{id}/default Make a greeting the one that plays

One default per person per product, enforced by a database index rather than by hope. The previous default is cleared in the same transaction.

greeting:manage
GET /api/v1/meetings/by-pin/{pin} Resolve a dial-in PIN

Used by the telephony switch. Authenticated with the infrastructure token, not an API key.

infrastructure token
POST /api/v1/meetings/{id}/phone-legs Join a meeting by telephone

Used by the conference bridge. Admits a caller and answers with the RTP addresses for their leg, or 202 when the host has not admitted them yet.

infrastructure token
DELETE /api/v1/meetings/{id}/phone-legs/{participant_id} End a telephone leg

Releases the media node's ports when the caller hangs up.

infrastructure token
GET /api/v1/partners The partner programmes we know about

Filterable by `market`, `domain`, `model` and `white_label=true` — the last being the shortlist of programmes documented as allowing our own brand on their service. `resale_permitted`, `markup_permitted` and `has_api` are separate fields on purpose: **API access is not resale authorisation**, and a provider with an excellent API whose terms forbid a markup is a supplier of capacity rather than a product.

partner:read
GET /api/v1/partners/agreements Agreements this organisation holds

What was actually signed, which is frequently not what the programme advertised. Credentials are never returned.

partner:read
GET /api/v1/partners/markets Every market a partner covers

With how many programmes are in each — the honest answer to "where could we launch", since a country with one agent and no API is not a country we can launch in.

partner:read
GET /api/v1/partners/resale/earnings What has been sold, by product

Orders, revenue and margin per product, computed from the orders rather than from the catalogue — the catalogue has changed since and the orders are what happened.

resale:read
GET /api/v1/partners/{key} One partner programme in full

Capabilities per function, the access tier as plain words, published commission terms where a company publishes them — and `null` where nobody does, rather than a plausible number somebody would quote back as fact.

partner:read
GET /api/v1/products The product line

The product line, what each one is for, which tiers it has, and which of them this tenant's plan actually includes. Read this rather than hard-coding the list.

tenant:read
GET /api/v1/realtime/ice ICE servers

STUN, plus a TURN credential minted for this request and valid for an hour. Fetch these per session rather than caching them: WebRTC that works in an office and fails on a phone is almost always a missing relay, and a stale credential fails the same way.

meeting:read
GET /api/v1/realtime/rooms/{room} Open an SFU room

Opens the room for one of this tenant's meetings on the media plane and returns the router's RTP capabilities — the first step of the mediasoup handshake. `room` is the meeting id; a meeting belonging to another tenant answers 404 exactly as a made-up id does. Signalling continues over the media socket. If no media plane is configured this answers 200 with `sfu: false`, so a caller can fall back to mesh instead of waiting.

meeting:manage
GET /api/v1/realtime/rooms/{room}/peers Who is in a room

Participant rows for one of this tenant's rooms — peer id, name, role, admitted or waiting — with what each is publishing on the SFU and whether it is paused. The roster a host control is aimed from.

meeting:manage
DELETE /api/v1/realtime/rooms/{room}/peers/{peer_id} Remove someone from a room

Releases their SFU peer at once, so their media stops before their browser is told, then closes their signalling channel. A grant socket token opens one socket, so the removed person cannot reconnect on the token they had.

meeting:manage
POST /api/v1/realtime/rooms/{room}/peers/{peer_id}/mute Mute or unmute someone

`kind` is `audio` (default) or `video`; `muted` defaults to true. Pauses their producer on the SFU and holds the mute in their channel, so opening a fresh producer of that kind is refused until a host unmutes them.

meeting:manage
DELETE /api/v1/realtime/rooms/{room}/recording Stop recording a room

Closes the recording; hand it over with the recordings API.

meeting:record
POST /api/v1/realtime/rooms/{room}/recording Start recording a room

Server-side recording. Refused with the reason unless the tenant enabled it, the plan includes it and the meeting was created with `record_server_side`.

meeting:record
POST /api/v1/realtime/socket-token Mint a socket token

A two-minute token that opens the signalling socket at /media/socket in place of the API key, so the key never appears in a WebSocket URL, a proxy log or a browser history. Pass it as the `token` connect parameter. Send `room` (and optionally `name`, `role` = participant | viewer, `publish` = [audio, video]) to mint a grant: one room, one vouched-for name, only the listed media, one socket.

meeting:read
GET /api/v1/share/accounts Connected accounts

The accounts connected for sending. Credentials are never returned.

share:read
POST /api/v1/share/accounts Connect an account

`provider` and the fields that channel asks for. Refused when the details are not enough to send with, rather than stored and discovered useless at the moment somebody shares something. The token is encrypted under the tenant's own credential key.

share:manage
DELETE /api/v1/share/accounts/{provider} Disconnect an account

The row goes and the token with it. Not disabled: a credential we were asked to stop holding is not kept in case somebody comes back.

share:manage
GET /api/v1/share/channels Channels a message can be handed to

WhatsApp, email, Telegram, Facebook, Instagram — each with the fields it needs and what it can and cannot carry. Instagram takes pictures only; a page post cannot carry a voice message.

share:read
POST /api/v1/share/messages/{id} Share a message outside Telenaas

`provider`, and `destination` where the channel addresses somebody. Words, a picture, a file, a voice message or a contact. Recorded whether it worked or not — and once it has gone, it has gone.

share:manage
GET /api/v1/status Platform status

What this key can reach, and whether the platform is healthy.

tenant:read
GET /api/v1/storage Where files and history live

The organisation's storage plane: Burmeel by default, or its own Amazon S3, Google Cloud Storage, Azure Blob or S3-compatible bucket. Never returns credentials.

tenant:read
PUT /api/v1/storage Choose the storage

`provider` (burmeel, s3, gcs, azure), `bucket`, `endpoint`, `region`, `account`, `prefix`, `key_id`, `secret`. Credentials are encrypted under the organisation's own key and only replaced when supplied.

tenant:manage
POST /api/v1/storage/verify Check the storage

Writes, reads back and deletes a probe object with the configured credentials.

tenant:manage
GET /api/v1/usage Usage

Metered usage for the current billing period.

billing:read
GET /api/v1/webhooks List webhook endpoints

Where we send events.

developer:read
POST /api/v1/webhooks Add a webhook endpoint

Returns the signing secret once. The timestamp is inside the signature, so a captured delivery cannot be replayed later.

developer:manage
GET /api/v1/webhooks/deliveries Delivery history

So "it never arrived" has an answer.

developer:read
GET /api/v1/workflow-runs Automation history

Every run, with the steps it took and the ones it was denied.

automation:read
GET /api/v1/workflows List automations

What runs on its own in this tenant.

automation:read
POST /mcp Model Context Protocol

A JSON-RPC dispatcher for agents. Tools are named for the product they belong to; each enforces its own permission, so an agent can never reach further than a REST client holding the same key.

any authenticated key

Agent tools

Tool What it does Scope
telecenter_agent_status Set your own state on the call-centre floor: available, away with a reason, or offline. Refused while you are on a call. center:work
telestream_schedule Schedule a broadcast on a channel. `record` is decided here and cannot be changed once it is live, because a recording switch flipped mid-stream records people who were told it was off. stream:broadcast
telestream_go_live Put a scheduled broadcast live. Refused when the channel already has one live: two ingests on one playback URL means the audience sees whichever won. stream:broadcast
telestream_end End a live broadcast and meter it. Pass `received_video: false` when no video ever arrived, so it is recorded as failed rather than as one that simply ended. stream:broadcast
telestream_product_pin Put one product on screen during a broadcast, or clear it by leaving `product_id` out. One at a time, so the stream is never showing two prices. stream:broadcast
telestream_message_hide Hide a line of live chat, with a reason. It hides and never deletes: the row keeps who hid it, so the author can be told and the moderator can be asked. stream:moderate
telenaas_partner_list Telecom partner programmes: which country, which model, whether resale and markup are permitted, and whether our own brand may go on their service. API access is not resale authorisation and these are separate fields. partner:read
telenaas_partner_white_label Only the partners whose programmes are documented as allowing white-labelling — the shortlist a Telenaas-branded broadband, mobile or TV product could be built on. partner:read
telenaas_resale_order_list Orders placed for resold internet, devices or television, with our status and the partner's. resale:read
telenaas_greeting_list Greetings for TeleCall, TeleVoip and TeleMeet — what a caller hears before a person answers, and which one plays. greeting:read
telenaas_greeting_speak Write a greeting and have the speech engine read it aloud. Charged per thousand characters; stores nothing if the engine cannot speak. greeting:manage
telenaas_greeting_set_default Make a greeting the one that plays for its product. greeting:manage
telenaas_share_channel_list Channels a message can be handed to — WhatsApp, email, Telegram, Facebook, Instagram — with what each needs and what it can carry. share:read
telenaas_share_account_list Connected outbound accounts. Never their credentials. share:read
telenaas_share_message Hand a message — words, a picture, a file, a voice message, a contact — to a connected account. Once it has gone it cannot be recalled. share:manage
telenaas_assistant_list The assistants, one per product: what each is for, what it can do and what it refuses. ai:use
telenaas_assistant_ask Ask a product's assistant a question, with whatever context the caller already has. It answers and suggests; it never acts. ai:use
telenaas_storage_describe Where this organisation's files and chat history are stored. tenant:read
telenaas_usage_summary What this tenant has used and what it costs. billing:read
telenaas_audit_search Read the audit ledger. audit:read
telenaas_automation_list Automations in this tenant and whether they are running. automation:read
telenaas_automation_dry_run Test an automation against events that already happened. Nothing is performed. automation:read
telenaas_products The product line, and which of them this key can actually reach. Read this before guessing a tool name. tenant:read
telenaas_platform_health Whether each part of the platform is answering. tenant:read
TeleCall One-to-one audio, in the app. TeleMeet Video meetings, 4 people to 400. TeleExpo Show the thing, live. TeleVoip Real numbers on the real telephone network. TeleChat Live chat, between anybody. TeleDesk A help desk that knows about the call. TeleAssistant What answers when you cannot. TeleMarketing Campaigns by text, to people who agreed to hear from you. TeleSurvey Ask by text, one question at a time. TeleAlert The message that has to arrive now. TeleEcommerce Order updates your customers actually read. TeleLogistics Where the parcel is, said out loud. TeleSMS Appointments, confirmed and remembered. TeleTransit Text the stop, hear when the bus comes. TeleFly Text a flight number, get its times. TeleCrime Report it by text, and get a reference. TeleAuth The second factor, sent and checked. TeleGuard When something is forced, the guards know in seconds. TeleHealth A fall, a missed dose, a reading out of range — somebody is told. TeleAI Agents that can text, ring and open a room — on a leash. TeleMarket The hardware, already paired with the platform. TeleHome A number, texting and an alarm — as one thing, for one home. TeleBusiness The same bundle, sized for premises and staff. TeleCash The text that arrives the moment money moves. TeleBooking Booked, arriving, leaving — said before they have to ask. TeleBilling The bill, before it is late. TeleInvoices Sent, seen, due, paid — and the one that is late. TeleReminder The message that arrives in time to be useful. TeleMarkets A text when the market moves, not a newsletter next week. TeleInternet Broadband, fibre, fixed wireless and satellite — from whoever reaches the address. TelePhones Handsets, routers, SIMs and eSIMs, with the line already on them. TeleTV Television and streaming packages, licensed for the country they are watched in. TeleCenter A VoIP phone system for a call centre: queues, agents and the wallboard. TeleStream Live streaming, and the shop beside it. Build on the API REST and MCP

Dimmed languages set the page direction; their interface is still in English.