telenoaHelp
API

Get started with the API

Connect your own systems to Telenoa — read and create inquiries, contacts, calls and knowledge with an API key.

The Telenoa API lets your own systems work directly with Telenoa: a web shop can create inquiries, a CRM can fetch contacts, and a dashboard can show Noa's calls. This page is for the person setting up the integration.

Want to use Telenoa from Claude, ChatGPT or another AI tool? Read MCP.

At a glance

Addresshttps://app.telenoa.com/api/v1
FormatJSON in and out
KeyAuthorization: Bearer tln_live_…
Limit60 calls per minute per key
DescriptionOpenAPI 3.1

Field names and values are in Danish (henvendelser = inquiries, kontakter = contacts, opkald = calls, viden = knowledge), the same everywhere in the API.

Your first call

An administrator goes to Opsætning → Indstillinger (Setup → Settings) and opens the API og webhooks (API and webhooks) tab.

Click Opret nøgle (Create key). Give it a name, for example "Web shop", and choose only the access the system needs. See API keys.

Copy the key right away. It is not shown again.

Try it:

curl https://app.telenoa.com/api/v1/henvendelser?limit=5 \
  -H "Authorization: Bearer tln_live_…"

The response is a page of the newest inquiries:

{
  "data": [
    {
      "id": "6f1c…",
      "emne": "Quote for a kitchen",
      "kanal": "formular",
      "status": "modtaget",
      "mappe": "indbakke",
      "kontakt": { "navn": "Anna Jensen", "email": "anna@company.com", "telefon": null }
    }
  ],
  "naeste_cursor": "MTc…"
}

Errors

All errors have the same shape. kode never changes, so your code can act on it. besked is written for people.

{ "fejl": { "kode": "ikke_fundet", "besked": "Henvendelsen findes ikke." } }
HTTPkodeMeaning
400ugyldig_foresporgselA field is wrong. detaljer says which.
401uautoriseretThe key is missing, wrong, expired or revoked.
403mangler_adgangThe key doesn't have the access needed.
404ikke_fundetDoesn't exist — or belongs to another company.
409konfliktCan't be done right now, for example there is no email account to reply from.
413for_storThe body is over 100 KB.
422idempotens_konfliktThe Idempotency-Key was used for a different request.
429for_mange_kaldOver 60 calls per minute. Wait the number of seconds in Retry-After.
500intern_fejlSomething went wrong on our side. Try again shortly.

Limits

Each key may make 60 calls per minute. Every response has these headers:

  • X-RateLimit-Limit — the limit (60)
  • X-RateLimit-Remaining — calls left this minute
  • X-RateLimit-Reset — when the minute starts over (Unix time in seconds)

If several systems use the API, give each its own key. Then each has its own limit.

New inquiries via the API also follow the form limits: at most 20 per minute per key and 5 in 5 minutes from the same email address.

More pages

Lists return at most limit rows (default 25, max 100), newest first. If there are more, you get a naeste_cursor. Send it as cursor to get the next page. When naeste_cursor is null, you're done.

Don't send the same thing twice

Add the header Idempotency-Key to a POST, for example your order number. If you send exactly the same call again with the same key within 24 hours, you get the first response back and nothing new happens. The response then has the header Idempotent-Replayed: true. That makes it safe to retry when a connection drops.

Only your own data

A key belongs to one company. Everything you can read and change with it is your own inquiries, contacts, calls and knowledge — never anyone else's. If you ask for an id that belongs to another company, the answer is the same as for an id that doesn't exist: 404.

Versions

The address contains the version (/api/v1). We add fields and endpoints without changing the version, but we never remove or rename anything in v1. Let your code ignore fields it doesn't know.

See also

On this page