Authentication
Base URL: https://telepath.lemma.company/api/v1. Authenticate each request with Authorization: Bearer <access_token>. A Telegram bot token is not a Telepath OAuth token.
- Read OAuth server metadata and register a client at
POST /registerwith your exact redirect URI. - Use Authorization Code with S256 PKCE: a fresh verifier/challenge for each login,
/authorizefor consent and/tokenfor the exchange. - Use the canonical resource
https://telepath.lemma.company/mcp, even for REST. Requesttelegram.readfor reads andtelegram.writefor writes. Each endpoint below names its scope; HTTP POST does not itself mean write access. - Store tokens in your integration's credential store and use the refresh-token grant at
/tokenfor expiry. Follow your registered client's token authentication method. Never share one account's credential across unrelated users.
The n8n credential handles registration, PKCE and refresh. A custom Make HTTP/OAuth connection must support those requirements; an end-to-end Make login/refresh flow has not been verified here.
Requests and responses
- GET inputs go in the query string. Chat IDs in paths are decimal integers. JSON POST inputs use numbers for numeric IDs and
Content-Type: application/json. POST read actions with no options still need{}. - Unknown input fields are rejected. POST query parameters are rejected. JSON body limit: 256 KB. IDs must be safe integers; chat IDs can be negative but not zero, message/note IDs must be positive.
- Date-time strings use ISO 8601 with
Zor an explicit offset. Reminder timezone is an IANA identifier. Domain rules below supplement the request schema. - HTTP 200 returns the business object directly, without a universal data wrapper. Preserve unknown response fields, setup/history notices, source/coverage metadata and quota information. A successful read can be empty.
- Success examples are synthetic, illustrative subsets; optional fields may be omitted or null. Photo batches can contain per-item errors. Reminder status
scheduledis not proof of delivery. - Most reads return a bounded window, without a complete pagination cursor. Only reminders/list documents offset pagination. The gateway limit is 120 requests per minute per account, shared across credentials; Telegram and plan limits also apply.
Archive, Session and account boundaries
Signing in authorizes access to an account; it does not itself collect Telegram history. Bot API archives collect permitted new messages. Older archive history is imported separately. There is no outgoing webhook for every message in this REST API; scheduled reads are polling and can miss messages during bursts or downtime.
When connected and enabled, Session takes priority for the five chat/message discovery and text-read operations. These results include source: "telegram_session", history_archived: false, effective_limit, coverage and partial. Session can cap reads below the requested limit (currently up to 50); discovery covers recent dialogs rather than a complete directory. A Session error or empty result does not silently switch to the archive.
REST-specific limitation: any operation carrying chat_id checks archive membership before dispatch, except the separate bot inbox. That includes a single-chat read and a chat-filtered search, even if Session is connected. A chat discovered only through Session can therefore return 404 chat_not_found here. Bot inbox IDs are checked against that inbox instead. This reference does not promise Session-based sending.
Bot inbox messages are not channel Direct Messages or personal Business messages. Private Business replies need reply permission and an incoming message within the last 24 hours. Group sends use the bot identity. Channel operations require current ownership, connection and the applicable bot rights. Scope alone does not override these checks or account capabilities.
Expand an operation for every parameter, nested field, request example and response shape. Example calls are not executed by this page. Replace synthetic IDs and URLs with authorized targets before running a write.
Chats & groups
GET/chats/searchFind Telegram chats
Scope: telegram.read · Read-only action
Find a chat by name, username or numeric ID. This is not a global Telegram directory search.
Query parameters
| Parameter | Type / presence | Description / constraints |
|---|---|---|
query | string Required | Search text; Notes search also accepts an empty string. minLength: 1 · maxLength: 1000 |
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 20 for archive reads. minimum: 1 · maximum: 100 |
Example request
curl 'https://telepath.lemma.company/api/v1/chats/search?query=Example&limit=10' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN"HTTP 200 response
count and chats; search can include query. Chat entries include chat_id, name, type, username and archive coverage fields. Session reads add source, coverage and partial metadata.
{
"count": 1,
"chats": [
{
"chat_id": 123456789,
"name": "Example contact",
"type": "private",
"username": null,
"message_count": 1
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
GET/messages/searchSearch Telegram messages
Scope: telegram.read · Read-only action
Search available message text. Optionally narrow to a chat and a lower date bound.
Query parameters
| Parameter | Type / presence | Description / constraints |
|---|---|---|
query | string Required | Search text; Notes search also accepts an empty string. minLength: 1 · maxLength: 1000 |
chat_id | integer Optional | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
since | string Optional | ISO 8601 lower date bound, with Z or an explicit UTC offset. format: date-time |
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 30 for archive reads. minimum: 1 · maximum: 200 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/search?query=details&limit=20' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN"HTTP 200 response
count and messages; single-chat reads include chat, search includes query, and date-filtered reads can include since. Message entries include chat_id, message_id, date, direction, text, text_source, sender and available media/transcript metadata.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"chat_name": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"direction": "incoming",
"text": "Could you send the details?",
"text_source": "written",
"message_type": "text"
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
GET/chats/{chat_id}/messagesRead one chat
Scope: telegram.read · Read-only action
Read a bounded message window in a chat. The REST gateway requires this chat to exist in the account archive before delegating a read.
Path: chat_id — required nonzero safe integer; chat must exist in this account archive.
Query parameters
| Parameter | Type / presence | Description / constraints |
|---|---|---|
before | string Optional | ISO 8601 upper date bound, with Z or an explicit UTC offset. format: date-time |
since | string Optional | ISO 8601 upper date bound, with Z or an explicit UTC offset. format: date-time |
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 50 for archive reads. minimum: 1 · maximum: 200 |
Example request
curl 'https://telepath.lemma.company/api/v1/chats/123456789/messages?limit=20' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN"HTTP 200 response
count and messages; single-chat reads include chat, search includes query, and date-filtered reads can include since. Message entries include chat_id, message_id, date, direction, text, text_source, sender and available media/transcript metadata.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"chat_name": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"direction": "incoming",
"text": "Could you send the details?",
"text_source": "written",
"message_type": "text"
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/chats/{chat_id}/messagesSend a message
Scope: telegram.write · Write action
Send to a known private Business or group chat. Business replies require reply permission and an incoming message within the last 24 hours; groups send as the bot. Use channel post operations for channels. Ordinary sends have no idempotency key.
Path: chat_id — required nonzero safe integer; chat must exist in this account archive.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
text | string Required | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 4096 |
reply_to_message_id | integer Optional | Optional message to reply to. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_thread_id | integer Optional | Optional message to reply to. minimum: -9007199254740991 · maximum: 9007199254740991 |
Example request
curl 'https://telepath.lemma.company/api/v1/chats/123456789/messages' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"text":"Thanks for your message."}'HTTP 200 response
sent, chat_id, chat_name, message_id, date and text.
{
"sent": true,
"chat_id": 123456789,
"chat_name": "Example contact",
"message_id": 43,
"date": "2026-11-05T08:01:00.000Z",
"text": "Thanks for your message."
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/photosGet multiple archived photos
Scope: telegram.read · Read-only action
Retrieve up to five photos from one archived chat. Returns photo data and expiring links; n8n does not render the ChatGPT photo widget.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_ids | array Required | 1–5 positive message IDs from one chat. minItems: 1 · maxItems: 5 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/photos' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_ids":[42]}'HTTP 200 response
count, bytes_per_photo and photos. Each entry has message_id and photo fields, or an error for that item; HTTP 200 does not mean every photo loaded.
{
"count": 1,
"bytes_per_photo": 250000,
"photos": [
{
"message_id": 42,
"data": "<base64 image bytes>",
"mimeType": "image/jpeg",
"bytes": 12345,
"caption": null,
"url": null
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/chats/listList Telegram chats
Scope: telegram.read · Read-only action
List archived chats, including connected channels. An empty archive is not proof that Telegram has no messages.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 20 for archive reads. minimum: 1 · maximum: 200 |
Example request
curl 'https://telepath.lemma.company/api/v1/chats/list' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10}'HTTP 200 response
count and chats; search can include query. Chat entries include chat_id, name, type, username and archive coverage fields. Session reads add source, coverage and partial metadata.
{
"count": 1,
"chats": [
{
"chat_id": 123456789,
"name": "Example contact",
"type": "private",
"username": null,
"message_count": 1
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/recentRead recent messages
Scope: telegram.read · Read-only action
Read recent saved messages across chats. New collection starts after Telegram connection; old history needs import.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 20 for archive reads. minimum: 1 · maximum: 200 |
since | string Optional | ISO 8601 lower date bound, with Z or an explicit UTC offset. format: date-time |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/recent' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":20}'HTTP 200 response
count and messages; single-chat reads include chat, search includes query, and date-filtered reads can include since. Message entries include chat_id, message_id, date, direction, text, text_source, sender and available media/transcript metadata.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"chat_name": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"direction": "incoming",
"text": "Could you send the details?",
"text_source": "written",
"message_type": "text"
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/fileRead an archived file
Scope: telegram.read · Read-only action
Retrieve file metadata, an expiring link and extracted text when supported. Imported files without stored Telegram file IDs may be unavailable. Do not share download links with other users.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
include_text | boolean Optional | Whether to attempt supported text extraction; this is not transcription. |
max_chars | integer Optional | Maximum extracted characters. minimum: 1 · maximum: 50000 |
offset_lines | integer Optional | Starting line offset for extracted text. minimum: 0 · maximum: 1000000 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/file' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42,"include_text":true}'HTTP 200 response
filename, mimeType, bytes, message_type, caption, expiring url and optional extracted text. Inspect text_error, text_truncated and line ranges; media in a text-only export may be unavailable.
{
"filename": "example.txt",
"mimeType": "text/plain",
"bytes": 7,
"message_type": "document",
"caption": null,
"url": null,
"text": "Example",
"text_truncated": false,
"text_error": null
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/photoGet an archived photo
Scope: telegram.read · Read-only action
Return photo data and metadata through Telepath's existing media loader. Rendering or image understanding depends on the client; this is not an image-analysis endpoint.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/photo' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42}'HTTP 200 response
Base64 data, mimeType, bytes, caption and an expiring url when available. This retrieves an image; it does not analyze it.
{
"data": "<base64 image bytes>",
"mimeType": "image/jpeg",
"bytes": 12345,
"caption": null,
"url": null
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/send-mediaSend a photo or document
Scope: telegram.write · Write action
Confirm recipient and media before sending. Supply exactly one source: public HTTP(S) URL or from_chat_id plus from_message_id in your archive. Private messages use Business permissions; groups send as the bot. Never retry automatically after uncertain delivery.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
from_chat_id | integer Optional | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
from_message_id | integer Optional | Source message in from_chat_id. minimum: -9007199254740991 · maximum: 9007199254740991 |
url | string Optional | Media or button URL. See the field constraints and operation rules. pattern: ^https?:\/\/ · format: uri |
caption | string Optional | maxLength: 1024 |
as_document | boolean Optional | Send the media as a document. |
reply_to_message_id | integer Optional | Source message in from_chat_id. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_thread_id | integer Optional | Source message in from_chat_id. minimum: -9007199254740991 · maximum: 9007199254740991 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/send-media' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"url":"https://example.com/example.pdf","as_document":true}'HTTP 200 response
sent, kind, chat_id, chat_name, message_id, filename, caption and sent_as. Delivery may be uncertain after a timeout.
{
"sent": true,
"kind": "document",
"chat_id": 123456789,
"chat_name": "Example contact",
"message_id": 44,
"filename": "example.pdf",
"caption": null,
"sent_as": "you"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/editEdit a sent message
Scope: telegram.write · Write action
Confirm the exact replacement and recipient. Only eligible outgoing messages can be edited. Use dedicated post tools for channel posts.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
text | string Required | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 4096 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/edit' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":43,"text":"Updated reply."}'HTTP 200 response
edited, chat_id, message_id and replacement text.
{
"edited": true,
"chat_id": 123456789,
"message_id": 43,
"text": "Updated reply."
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/mark-readMark a conversation read
Scope: telegram.write · Write action
Mark a Business conversation read through Telegram, up to the given message or the newest known message. This changes the unread state; ordinary archive reads do not.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Optional | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/mark-read' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42}'HTTP 200 response
marked_read, chat_id, chat_name and up_to_message_id.
{
"marked_read": true,
"chat_id": 123456789,
"chat_name": "Example contact",
"up_to_message_id": 42
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/messages/reactionSet or remove a reaction
Scope: telegram.write · Write action
Confirm the target and emoji. Reacts as the bot in supported groups or authorized connected channels; private Business reactions are unsupported. Omit emoji to remove the bot's reaction.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
emoji | string Optional | Telegram-supported reaction. Omit to remove the bot reaction. maxLength: 100 |
big | boolean Optional | Request a large reaction animation. |
Example request
curl 'https://telepath.lemma.company/api/v1/messages/reaction' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":-1001234567890,"message_id":42,"emoji":"👍"}'HTTP 200 response
For a group: ok, chat_id, chat_name, message_id, reaction, removed and reacted_as. A channel result instead uses emoji and sent_as.
{
"ok": true,
"chat_id": -1001234567890,
"chat_name": "Example group",
"message_id": 42,
"reaction": "👍",
"removed": false,
"reacted_as": "the bot"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
Bot inbox
POST/bot/messagesList bot inbox messages
Scope: telegram.read · Read-only action
Read the bot's separate direct-message inbox. Never mix this line with private Business chats, even when chat IDs match.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 20 for archive reads. minimum: 1 · maximum: 100 |
Example request
curl 'https://telepath.lemma.company/api/v1/bot/messages' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10}'HTTP 200 response
count, note and messages. Entries use line=bot_dm, sender display name, date, text and also_has_business_chat. This inbox is separate from Business chats and channel DMs.
{
"count": 1,
"messages": [
{
"chat_id": 123456789,
"message_id": 42,
"from": "Example contact",
"date": "2026-11-05T08:00:00.000Z",
"text": "Hello",
"line": "bot_dm",
"also_has_business_chat": false
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/bot/replyReply in the bot inbox
Scope: telegram.write · Write action
Send an authorized reply as the bot to someone present in this account's bot inbox. Does not reply in the owner's Business chat. Never automatically retry uncertain delivery.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
text | string Required | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 4096 |
Example request
curl 'https://telepath.lemma.company/api/v1/bot/reply' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"text":"Thanks for your message."}'HTTP 200 response
ok, chat_id, sent_as and message_id.
{
"ok": true,
"chat_id": 123456789,
"sent_as": "the bot",
"message_id": 43
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/bot/reactionReact in the bot inbox
Scope: telegram.write · Write action
Set a reaction as the bot on a message in this account's separate bot inbox. Omit emoji to remove the reaction.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Required | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
emoji | string Optional | Telegram-supported reaction. Omit to remove the bot reaction. maxLength: 100 |
big | boolean Optional | Request a large reaction animation. |
Example request
curl 'https://telepath.lemma.company/api/v1/bot/reaction' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"message_id":42,"emoji":"👍"}'HTTP 200 response
ok, chat_id, message_id, reaction, removed and reacted_as.
{
"ok": true,
"chat_id": 123456789,
"message_id": 42,
"reaction": "👍",
"removed": false,
"reacted_as": "the bot"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
Archive
POST/archive/forgetDelete archived messages
Scope: telegram.write · Write action
Permanently delete Telepath archived messages in the specified scope. Does not delete messages in Telegram. Requires the account's archive deletion capability and explicit confirmation. Provide chat_id, before, or both.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
chat_id | integer Optional | Nonzero safe integer identifying a chat. JSON bodies use numbers; GET parameters are decimal strings on the wire. minimum: -9007199254740991 · maximum: 9007199254740991 |
before | string Optional | ISO 8601 upper date bound, with Z or an explicit UTC offset. format: date-time |
confirmed | boolean Required | Must be true; caller must obtain authorization for this exact action. Must equal true |
Example request
curl 'https://telepath.lemma.company/api/v1/archive/forget' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"chat_id":123456789,"confirmed":true}'HTTP 200 response
forgotten (row count), chat_id or null, before or null, and a note about retained copies. This removes archive data, not the Telegram conversation.
{
"forgotten": 3,
"chat_id": 123456789,
"before": null,
"note": "Removed from the archive. Telegram retains its copy."
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
Notes
POST/notes/searchSearch notes
Scope: telegram.read · Read-only action
Search this account's Notes. Empty query lists recent notes. Optionally filter by tag.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
query | string Required | Search text; Notes search also accepts an empty string. maxLength: 1000 |
tag | string Optional | Optional exact tag filter. maxLength: 100 |
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 20 for archive reads. minimum: 1 · maximum: 100 |
Example request
curl 'https://telepath.lemma.company/api/v1/notes/search' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"query":"Follow up","limit":10}'HTTP 200 response
count and notes; search also includes query. List/search entries are note summaries, without full body, links or backlinks; use notes/get for those.
{
"count": 1,
"notes": [
{
"id": 17,
"title": "Follow up",
"type": "note",
"tags": [],
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z"
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/notes/getRead a note
Scope: telegram.read · Read-only action
Read one note, task, project or person with links and backlinks. Supply its ID or exact title.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
id | integer Optional | Note ID or reminder ID, as typed below. minimum: -9007199254740991 · maximum: 9007199254740991 |
title | string Optional | Note title (trimmed, 1–500 characters); exact-title selector when ID is omitted. minLength: 1 · maxLength: 500 |
Example request
curl 'https://telepath.lemma.company/api/v1/notes/get' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":17}'HTTP 200 response
The note object: id, title, body, tags, type, task_status, reminder, created_at, updated_at, links and backlinks.
{
"id": 17,
"title": "Follow up",
"body": "Send the requested details.",
"tags": [],
"type": "note",
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z",
"links": [],
"backlinks": []
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/notes/listList notes
Scope: telegram.read · Read-only action
List recent notes, tasks and projects. Filter by tag when needed.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
tag | string Optional | Optional exact tag filter. maxLength: 100 |
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 30 for archive reads. minimum: 1 · maximum: 200 |
Example request
curl 'https://telepath.lemma.company/api/v1/notes/list' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10}'HTTP 200 response
count and notes; search also includes query. List/search entries are note summaries, without full body, links or backlinks; use notes/get for those.
{
"count": 1,
"notes": [
{
"id": 17,
"title": "Follow up",
"type": "note",
"tags": [],
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z"
}
]
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/notes/createCreate a note or task
Scope: telegram.write · Write action
Save user-authorized content. Titles are unique; use [[Title]] links and tags. Types: note, project, person, task. Only explicitly authorized reminders on open tasks may be scheduled. A quota failure means the save did not happen. Search before creating duplicates.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
title | string Required | Note title (trimmed, 1–500 characters); exact-title selector when ID is omitted. minLength: 1 · maxLength: 500 |
body | string Optional | Note body, up to 50,000 characters; an empty string is meaningful. maxLength: 50000 |
tags | array Optional | At most 100 strings, each up to 100 characters. On update this replaces all tags. maxItems: 100 |
type | string Optional | Note type or media type, according to the enclosing object. Allowed: note, project, person, task |
task_status | string Optional | open or done; completing a task cancels its reminder. Allowed: open, done |
reminder | object | null Optional | Optional task reminder object, or null to cancel. Valid only on an open task. |
reminder.text | string Required when parent is supplied | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 1500 |
reminder.at | string Required when parent is supplied | Future ISO 8601 date/time with explicit offset, within five years. format: date-time |
reminder.timezone | string Required when parent is supplied | IANA timezone, for example Europe/London. minLength: 1 · maxLength: 80 |
Example request
curl 'https://telepath.lemma.company/api/v1/notes/create' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"title":"Follow up","body":"Send the requested details."}'HTTP 200 response
The note object: id, title, body, tags, type, task_status, reminder, created_at, updated_at, links and backlinks.
{
"id": 17,
"title": "Follow up",
"body": "Send the requested details.",
"tags": [],
"type": "note",
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z",
"links": [],
"backlinks": []
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/notes/updateUpdate a note or task
Scope: telegram.write · Write action
Read before editing. Use ID when renaming; otherwise title addresses the existing note. Omitted fields are preserved, append adds body text, tags replaces tags. reminder:null cancels; completing a task cancels its reminder. Confirm destructive replacements. Do not automatically retry append operations.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
id | integer Optional | Note ID or reminder ID, as typed below. minimum: -9007199254740991 · maximum: 9007199254740991 |
title | string Optional | Note title (trimmed, 1–500 characters); exact-title selector when ID is omitted. minLength: 1 · maxLength: 500 |
body | string Optional | Note body, up to 50,000 characters; an empty string is meaningful. maxLength: 50000 |
tags | array Optional | At most 100 strings, each up to 100 characters. On update this replaces all tags. maxItems: 100 |
type | string Optional | Note type or media type, according to the enclosing object. Allowed: note, project, person, task |
task_status | string Optional | open or done; completing a task cancels its reminder. Allowed: open, done |
reminder | object | null Optional | Optional task reminder object, or null to cancel. Valid only on an open task. |
reminder.text | string Required when parent is supplied | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 1500 |
reminder.at | string Required when parent is supplied | Future ISO 8601 date/time with explicit offset, within five years. format: date-time |
reminder.timezone | string Required when parent is supplied | IANA timezone, for example Europe/London. minLength: 1 · maxLength: 80 |
append | boolean Optional | Append body rather than replace it. |
Example request
curl 'https://telepath.lemma.company/api/v1/notes/update' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":17,"body":"Updated details."}'HTTP 200 response
The note object: id, title, body, tags, type, task_status, reminder, created_at, updated_at, links and backlinks.
{
"id": 17,
"title": "Follow up",
"body": "Send the requested details.",
"tags": [],
"type": "note",
"task_status": null,
"reminder": null,
"created_at": "2026-11-05T08:00:00.000Z",
"updated_at": "2026-11-05T08:00:00.000Z",
"links": [],
"backlinks": []
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/notes/deleteDelete a note
Scope: telegram.write · Write action
Permanently delete the chosen note after user confirmation. Also cancels its task reminder. Supply ID or exact title.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
id | integer Optional | Note ID or reminder ID, as typed below. minimum: -9007199254740991 · maximum: 9007199254740991 |
title | string Optional | Note title (trimmed, 1–500 characters); exact-title selector when ID is omitted. minLength: 1 · maxLength: 500 |
Example request
curl 'https://telepath.lemma.company/api/v1/notes/delete' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":17}'HTTP 200 response
deleted, id and title.
{
"deleted": true,
"id": 17,
"title": "Follow up"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
Reminders
POST/reminders/createCreate a reminder
Scope: telegram.write · Write action
Schedule a one-time reminder only to the authenticated account owner. Clarify time, timezone and text; only schedule when authorized. Reuse request_id and identical details on retry. Creation allowance is shared with task reminders. Scheduled does not mean delivered.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
text | string Required | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 1500 |
at | string Required | Future ISO 8601 date/time with explicit offset, within five years. format: date-time |
timezone | string Required | IANA timezone, for example Europe/London. minLength: 1 · maxLength: 80 |
request_id | string Optional | 8–100 letters, digits, hyphens or underscores. Reuse only for the identical operation. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
Example request
curl 'https://telepath.lemma.company/api/v1/reminders/create' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"text":"Follow up","at":"2027-01-15T09:00:00Z","timezone":"Europe/London","request_id":"reminder-example-001"}'HTTP 200 response
reminder, created and quota. An identical request_id replay returns created=false. Scheduled is not delivered.
{
"reminder": {
"id": "r_example_reminder",
"kind": "standalone",
"note_id": null,
"at": "2027-01-15T09:00:00.000Z",
"timezone": "Europe/London",
"text": "Follow up",
"status": "scheduled"
},
"created": true
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/reminders/listList reminders
Scope: telegram.read · Read-only action
List standalone/task reminders and delivery states. Available regardless of remaining creation allowance. By default excludes done/cancelled. Uncertain is not delivered.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
status | string Optional | Filter by reminder delivery state. Allowed: scheduled, sending, delivered, failed, uncertain, cancelled, done |
limit | integer Optional | Maximum results; source-specific caps may be lower. No Return All or implicit pagination. Default 30 for archive reads. minimum: 1 · maximum: 100 |
offset | integer Optional | Reminder list offset. minimum: 0 · maximum: 1000000 |
Example request
curl 'https://telepath.lemma.company/api/v1/reminders/list' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"limit":10,"offset":0}'HTTP 200 response
count, total, reminders, next_offset (or null) and quota. This endpoint supports offset pagination.
{
"count": 1,
"total": 1,
"reminders": [
{
"id": "r_example_reminder",
"kind": "standalone",
"note_id": null,
"at": "2027-01-15T09:00:00.000Z",
"timezone": "Europe/London",
"text": "Follow up",
"status": "scheduled"
}
],
"next_offset": null
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/reminders/cancelCancel a reminder
Scope: telegram.write · Write action
Cancel by reminder ID at the owner's request; preserves linked task. Available even when Notes creation is disabled or allowance is exhausted. Cancellation does not restore creation allowance or recall an already sent message.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
id | string Required | Note ID or reminder ID, as typed below. minLength: 1 · maxLength: 100 |
Example request
curl 'https://telepath.lemma.company/api/v1/reminders/cancel' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"id":"r_example_reminder"}'HTTP 200 response
reminder and cancelled. Inspect the returned status; cancellation does not recall a delivered message.
{
"reminder": {
"id": "r_example_reminder",
"kind": "standalone",
"note_id": null,
"at": "2027-01-15T09:00:00.000Z",
"timezone": "Europe/London",
"text": "Follow up",
"status": "cancelled"
},
"cancelled": true
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
Channels
POST/channels/posts/createPublish a channel post
Scope: telegram.write · Write action
Broadcast to a connected channel you currently own. Show channel, text, all media and button destinations and obtain explicit confirmation. Supports text, one photo/document, or 2–10 album items. Albums cannot have buttons or mix documents with photo/video. Captions max 1024. Requires bot Post messages permission. Reuse request_id for identical retries; never retry uncertain delivery with a new ID.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
channel_id | integer Required | Negative safe integer for a connected channel currently owned by this account. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Required | 8–100 letters, digits, hyphens or underscores. Reuse only for the identical operation. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Required | Must be true; caller must obtain authorization for this exact action. Must equal true |
text | string Optional | Message, post or reminder text. Whitespace-only ordinary sends are rejected. maxLength: 4096 |
media | object Optional | One photo or document with an HTTPS URL. |
media.type | string Required when parent is supplied | Note type or media type, according to the enclosing object. Allowed: photo, document |
media.url | string Required when parent is supplied | Media or button URL. See the field constraints and operation rules. pattern: ^https\:\/\/ · format: uri |
buttons | array Optional | Up to five rows of 1–4 HTTPS link buttons; [] removes buttons on edit. maxItems: 5 |
buttons[][].text | string Required when parent is supplied | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 64 |
buttons[][].url | string Required when parent is supplied | Media or button URL. See the field constraints and operation rules. pattern: ^https\:\/\/ · format: uri |
format | string Optional | plain or HTML for channel content. Allowed: plain, HTML |
album | array Optional | 2–10 photo/video/document items; see album restrictions. minItems: 2 · maxItems: 10 |
album[].type | string Required when parent is supplied | Note type or media type, according to the enclosing object. Allowed: photo, video, document |
album[].url | string Required when parent is supplied | Media or button URL. See the field constraints and operation rules. pattern: ^https\:\/\/ · format: uri |
Example request
curl 'https://telepath.lemma.company/api/v1/channels/posts/create' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"request_id":"post-create-example-001","confirmed":true,"text":"Example announcement."}'HTTP 200 response
ok, channel_id, channel_title, message_id and action. Album creation also includes message_ids and media_group_id. Successful identical request_id replays return the saved result.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_create_post"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/channels/posts/editEdit a channel post
Scope: telegram.write · Write action
Read first, confirm channel and exact replacement. Omitted fields are preserved; empty buttons removes them. Requires current ownership and bot Edit messages permission. Targets one album item, not the whole album. Reuse request_id on identical retry.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
channel_id | integer Required | Negative safe integer for a connected channel currently owned by this account. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Required | 8–100 letters, digits, hyphens or underscores. Reuse only for the identical operation. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Required | Must be true; caller must obtain authorization for this exact action. Must equal true |
text | string Optional | Message, post or reminder text. Whitespace-only ordinary sends are rejected. maxLength: 4096 |
media | object Optional | One photo or document with an HTTPS URL. |
media.type | string Required when parent is supplied | Note type or media type, according to the enclosing object. Allowed: photo, document |
media.url | string Required when parent is supplied | Media or button URL. See the field constraints and operation rules. pattern: ^https\:\/\/ · format: uri |
buttons | array Optional | Up to five rows of 1–4 HTTPS link buttons; [] removes buttons on edit. maxItems: 5 |
buttons[][].text | string Required when parent is supplied | Message, post or reminder text. Whitespace-only ordinary sends are rejected. minLength: 1 · maxLength: 64 |
buttons[][].url | string Required when parent is supplied | Media or button URL. See the field constraints and operation rules. pattern: ^https\:\/\/ · format: uri |
format | string Optional | plain or HTML for channel content. Allowed: plain, HTML |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
Example request
curl 'https://telepath.lemma.company/api/v1/channels/posts/edit' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"message_id":42,"request_id":"post-edit-example-001","confirmed":true,"text":"Updated announcement."}'HTTP 200 response
ok, channel_id, channel_title, message_id and action. Album creation also includes message_ids and media_group_id. Successful identical request_id replays return the saved result.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_edit_post"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/channels/posts/deleteDelete a channel post
Scope: telegram.write · Write action
Permanently delete one archived post from Telegram after confirmation. Requires current ownership and bot Delete messages permission, subject to Telegram's deletion window. Not an archive-only delete. Reuse request_id on identical retry.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
channel_id | integer Required | Negative safe integer for a connected channel currently owned by this account. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Required | 8–100 letters, digits, hyphens or underscores. Reuse only for the identical operation. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Required | Must be true; caller must obtain authorization for this exact action. Must equal true |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
Example request
curl 'https://telepath.lemma.company/api/v1/channels/posts/delete' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"message_id":42,"request_id":"post-delete-example-001","confirmed":true}'HTTP 200 response
ok, channel_id, channel_title, message_id and action. Album creation also includes message_ids and media_group_id. Successful identical request_id replays return the saved result.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_delete_post"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
POST/channels/posts/pinPin or unpin a channel post
Scope: telegram.write · Write action
Confirm the channel, post and desired state. Pin/unpin this specific post only; requires current ownership and bot Edit messages permission. Reuse request_id on identical retry.
JSON body
| Parameter | Type / presence | Description / constraints |
|---|---|---|
channel_id | integer Required | Negative safe integer for a connected channel currently owned by this account. minimum: -9007199254740991 · maximum: 9007199254740991 |
request_id | string Required | 8–100 letters, digits, hyphens or underscores. Reuse only for the identical operation. minLength: 8 · maxLength: 100 · pattern: ^[-a-zA-Z0-9_]+$ |
confirmed | boolean Required | Must be true; caller must obtain authorization for this exact action. Must equal true |
message_id | integer Required | Positive safe integer identifying a message in the selected chat. minimum: -9007199254740991 · maximum: 9007199254740991 |
pinned | boolean Required | true to pin, false to unpin. |
Example request
curl 'https://telepath.lemma.company/api/v1/channels/posts/pin' \
-H "Authorization: Bearer $TELEPATH_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"channel_id":-1001234567890,"message_id":42,"request_id":"post-pin-example-001","confirmed":true,"pinned":true}'HTTP 200 response
ok, channel_id, channel_title, message_id and action. Album creation also includes message_ids and media_group_id. Successful identical request_id replays return the saved result.
{
"ok": true,
"channel_id": -1001234567890,
"channel_title": "Example channel",
"message_id": 42,
"action": "telegram_set_post_pinned"
}See shared errors and retry rules. Account permissions and feature availability are checked for every operation.
Errors and retry rules
Errors generally use {"error":"code","error_description":"explanation"}. Reminder quota errors also return quota. Authentication middleware can return an OAuth error without an error_description. Domain failures not mapped to a specific error become 502 operation_failed; do not assume every permission or validation failure returns 400/403.
| HTTP | Codes | Meaning |
|---|---|---|
| 400 | invalid_request / unsupported_chat_type / invalid_reminder | Invalid parameters or JSON; unsupported chat type; invalid reminder. |
| 401 | invalid_token | Missing, expired, revoked or otherwise invalid access token. Refresh through OAuth. |
| 403 | account_unavailable / insufficient_scope / sending_disabled / capability_unavailable / entitlement_required | Inactive account, missing scope, disabled capability or exhausted reminder allowance. |
| 404 | chat_not_found / not_found | Unknown route/method, unavailable item, or chat absent from the required archive/inbox. |
| 413 | invalid_request | JSON body exceeds 256 KB. |
| 415 | unsupported_media_type / invalid_request | Use application/json; unsupported charset or encoding. |
| 429 | rate_limited / telegram_rate_limited | Shared account rate limit or Telegram rejection. Respect Retry-After when present. |
| 500 | server_error | Unexpected request-processing failure. |
| 502 | operation_failed | Operation failed or completion is uncertain. A write may have succeeded; inspect state before retrying. |
- Read retries: use backoff and respect Retry-After when supplied. Stop and resolve authentication or permissions errors.
- Ordinary sends and appends: no general idempotency key. A network timeout or 502 can follow a successful action. Inspect the destination before repeating; disable blind whole-workflow retries.
- Channel actions: require
confirmed=trueand a stablerequest_id. Identical completed requests return their receipt; changed payloads with the same key are rejected. Pending or uncertain receipts require inspection, not a new key. - Reminder creation: an optional request_id deduplicates identical requests. Completing/deleting a task cancels its associated reminder; cancellation does not refund creation allowance.
- 429 on writes: distinguish the gateway's explicit pre-dispatch
rate_limitedfrom Telegram or network errors. Do not turn every rate-limit or server error into a send retry.
REST does not expose account administration, OAuth credentials, automatic-reply configuration or a general arbitrary-tool endpoint. Generated-voice inputs present in other transports are not accepted by these REST media/post schemas.