Agent skill

Telnyx Email Curl

by team-telnyx in team-telnyx/ai

Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events.

MITAuto-check: notesBackend & APIs

Install Telnyx Email Curl

skills CLI
$ npx skills add team-telnyx/ai --skill telnyx-email-curl -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install team-telnyx/ai telnyx-email-curl --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/team-telnyx/ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/telnyx-email-curl .claude/skills/telnyx-email-curl && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
telnyx-email-curl
GitHub stars
220
Token cost
~6k tokens
SKILL.md length
1,859 words
Files
2 (incl. references)
Skills in repo
11
Repo updated
First seen
Licence
MIT

At a glance

Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events.

  • Automated email workflows
  • SKILL.md covers Installation, Setup, Error Handling and Important Notes, plus 6 more sections
  • Calls curl and jq; reaches api.telnyx.com; needs TELNYX_API_KEY
  • Tasks that involve Transactional email

What it does

Telnyx Email Curl is an agent skill from team-telnyx/ai. Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events. Use for notifications, alerts, and automated email workflows.

Its SKILL.md is about 6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/api-details.md`).

It sits in Backend & APIs, covering Transactional email. The repository describes itself as: Official one-stop shop for AI Agents and developers building with Telnyx. The licence is MIT.

When your agent uses it

  • Automated email workflows
  • Tasks that involve Transactional email

Example prompts

  • “/telnyx-email-curl”

Requirements

  • A credential in TELNYX_API_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 4d2ace0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.telnyx.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TELNYX_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Telnyx Email Curl loads about 6k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 49 tokens; SKILL.md has 1,859 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
When it runs · the whole SKILL.md, loaded when a task matches
~6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~12k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:21
    #   Debian/Ubuntu: sudo apt-get install jq

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from team-telnyx/ai at commit 4d2ace0, republished under its MIT licence (© team-telnyx). 1,859 words, ~6,034 tokens.

Download SKILL.mdSave it as .claude/skills/telnyx-email-curl/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
telnyx-email-curl
description
Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events. Use for notifications, alerts, and automated email workflows.
metadata.author
telnyx
metadata.product
email
metadata.language
curl

Telnyx Email - curl

Installation

text
# curl is pre-installed on macOS, Linux, and Windows 10+
# jq is required for examples that capture IDs from responses:
#   macOS: brew install jq
#   Debian/Ubuntu: sudo apt-get install jq

Setup

bash
export TELNYX_API_KEY="YOUR_API_KEY_HERE"

All examples below use $TELNYX_API_KEY for authentication.

Error Handling

All API calls can fail with network errors, rate limits (429), validation errors (400 or 422), or authentication errors (401). Preserve the response body so the Telnyx error code and detail remain available:

bash
curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": {"email": "sender@example.com", "name": "Example"},
    "to": ["recipient@example.net"],
    "subject": "Hello from Telnyx",
    "text_body": "Your notification is ready."
  }' \
  "https://api.telnyx.com/v2/email_messages"

Common errors: 401 invalid credentials, 403 sender-domain eligibility or verification failure, 404 resource not found, 413 body larger than 8,000,000 bytes, and 422 semantic validation or template-rendering failure. A 429 is not necessarily a transient throughput limit: it can indicate a reputation suspension or a daily policy limit. Inspect .errors[0].code and .errors[0].detail before deciding whether to retry. See the full taxonomy in references/api-details.md.

Important Notes

  • Base URL: All paths in this skill are relative to https://api.telnyx.com/v2.
  • Sender domain: The domain in from.email must be authorized and ready for sending. A successful create response means accepted, queued, scheduled, or sandbox-created—not delivered.
  • Address input: from, reply_to, and each to/cc/bcc item accept either a string address or { "email": "...", "name": "..." }. Recipients must be unique across to, cc, and bcc after case-insensitive normalization.
  • Body or template: subject is required unless template_id is supplied. With template_id, do not also send subject, html_body, or text_body; pass Liquid values in template_variables.
  • Pagination: Core Email endpoints use page_size (default 25, maximum 100) and the opaque page_cursor returned in .meta.page_cursor. Do not translate these names to page[size] or page[cursor].
  • Message listing: GET /email_messages currently implements cursor pagination only; no message filters are exposed. Event and recipient list endpoints have their own filters.

Operational Caveats

  • Scheduling is fail-open: scheduled_at is the preferred field. If it is invalid or in the past, the API silently sends immediately. Validate the timestamp before sending and confirm the response status is scheduled when future delivery is required. The legacy send_at alias remains accepted; if both are present, scheduled_at wins.
  • Batch status: POST /email_messages/batch always returns 207 Multi-Status, including when every item succeeds. It does not return 202.
  • Batch limit: A batch contains 1–50 messages. Split larger jobs and give each request its own idempotency key.
  • Idempotency is endpoint-specific: Idempotency-Key is supported only on POST /email_messages, POST /email_messages/batch, POST /email_templates, POST /email_validations, and POST /email_validations/batch. Do not send it universally.
  • Sandbox behavior: sandbox_mode: true skips Kafka/MTA delivery, but still persists the message, emits a sandbox event, and creates a non-billable Email Detail Record (EDR). Batch-level sandbox_mode overrides every per-message value.
  • 429 requires classification: It can mean reputation suspension or a daily policy limit. Read the error code/detail; do not blindly back off and retry an account-policy failure.
  • Attachments are in-band JSON: Put attachment content in the request as a Base64 string. disposition: "inline" plus content_id supports CID references. The whole request body is limited to 8,000,000 bytes (approximately 8 MB), including Base64 overhead.
  • Tags are not labels: Outbound tags are immutable billing/reporting attribution propagated to EDRs and Mission Control. Mailbox labels are mutable workflow state and are a different concept.
  • Threading is single-send only: in_reply_to_message_id, reply_to_all, and forward_of_message_id are accepted by single send but not by batch send. in_reply_to_message_id and forward_of_message_id are mutually exclusive.

Reference Use Rules

Do not invent Telnyx parameters, enums, response fields, or webhook fields.

  • If a parameter, enum, or response field is not shown inline, read references/api-details.md before writing the request or handler.
  • Before using an operation in ## Additional Operations, read the parameter reference and the response schemas.
  • Before matching webhook fields or event names, read the webhook payload reference. Pollable and subscribable event enums are intentionally different.
  • Treat the two delete-message routes marked not yet available as unreachable even though they appear in the OpenAPI contract.

Core Tasks

Send an email

Primary outbound transactional-email flow.

POST /v2/email_messages

ParameterTypeRequiredDescription
fromstring or email-address objectYesSender address; object form supports email and optional name.
toarray[string or email-address object]YesAt least one recipient. Must be unique across all recipient lists.
from_namestringNoDisplay name for string from; overrides from.name.
ccarray[string or object]NoCarbon-copy recipients.
bccarray[string or object]NoBlind-copy recipients.
reply_tostring or objectNoReply-to address; an object name is ignored when stored.
subjectstringConditionalRequired without template_id. Do not use with a template.
html_bodystringNoHTML body. Returned only by the message detail endpoint.
text_bodystringNoPlain-text body. Returned only by the message detail endpoint.
headersobject[string,string]NoCustom headers; write-only.
attachmentsarray[attachment]NoEmbedded Base64 attachment objects.
tagsarray[string]NoImmutable EDR/reporting attribution; not returned by the API.
group_idUUID or nullNoUnsubscribe group for suppression checks.
ignore_suppressionbooleanNoDefault false; requires email:override scope and cannot override hard-bounce, complaint, or invalid-address suppressions.
metadataobjectNoCustom write-only metadata.
tracking_settingsobjectNoopen_tracking and/or click_tracking; omitted values inherit domain settings.
template_idUUIDNoLiquid template ID. Makes subject/body fields mutually exclusive.
template_variablesobjectNoLiquid values; defaults to {}.
scheduled_atdate-time or nullNoPreferred future send time; invalid/past values send immediately.
send_atdate-timeNoDeprecated alias for scheduled_at.
inline_cssbooleanNoInline CSS before sending; default false.
sandbox_modebooleanNoPersist and emit sandbox records without MTA delivery; default false.
in_reply_to_message_idUUID or nullNoParent Telnyx message; adds RFC 5322 threading headers.
reply_to_allboolean or nullNoReply-all intent; meaningful only with in_reply_to_message_id.
forward_of_message_idUUID or nullNoForward provenance; mutually exclusive with in_reply_to_message_id.
Idempotency-Keyheader stringNo1–255 letters, digits, _, or -; reuse only for the identical retry.
bash
curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 8e03978e-40d5-43e8-bc93-6894a57f9326" \
  -d '{
    "from": {"email": "orders@example.com", "name": "Example Orders"},
    "to": [{"email": "customer@example.net", "name": "Customer"}],
    "subject": "Order received",
    "html_body": "<p>Thanks for your order.</p>",
    "text_body": "Thanks for your order.",
    "tags": ["order-confirmation"],
    "tracking_settings": {"open_tracking": true, "click_tracking": true}
  }' \
  "https://api.telnyx.com/v2/email_messages"

Primary response fields:

  • .data.id, .data.status, .data.from, .data.to, .data.cc, .data.bcc
  • .data.subject, .data.template_id, .data.attachments, .data.events
  • .data.created_at, optional .data.scheduled_at, .data.sandbox, and .data.recipient_statuses
  • optional top-level .suppressed[] when some recipients were removed but at least one remains
Send a batch

Send 1–50 independent messages. Always parse both success and error arrays from the 207 response.

POST /v2/email_messages/batch

ParameterTypeRequiredDescription
messagesarray[message]Yes1–50 items; each has the single-send shape except the three threading fields.
sandbox_modebooleanNoApplies to every item and overrides item-level sandbox_mode.
Idempotency-Keyheader stringNoIdempotency for the whole batch request.
bash
curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: d6aa99f9-df20-4caf-99aa-e4c8b67e80ef" \
  -d '{
    "messages": [
      {
        "from": "alerts@example.com",
        "to": ["one@example.net"],
        "subject": "Alert one",
        "text_body": "First alert"
      },
      {
        "from": "alerts@example.com",
        "to": ["two@example.net"],
        "subject": "Alert two",
        "text_body": "Second alert"
      }
    ]
  }' \
  "https://api.telnyx.com/v2/email_messages/batch"

Primary response fields:

  • .data[] — successful EmailMessage objects
  • .errors[] — failed items with zero-based index, code, and message
  • .meta.total, .meta.succeeded, .meta.failed
Schedule and cancel an email

Scheduling uses the normal create endpoint. Confirm .data.status == "scheduled"; an invalid or past timestamp is silently treated as an immediate send.

bash
# Schedule for a future time (compute dynamically so the value is always in the future)
SCHEDULED_AT=$(date -u -v+1H '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || date -u -d '+1 hour' '+%Y-%m-%dT%H:%M:%SZ')

# Capture the scheduled message ID for cancellation below
EMAIL_ID=$(curl -s --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "reminders@example.com",
    "to": ["customer@example.net"],
    "subject": "Appointment reminder",
    "text_body": "Your appointment is tomorrow.",
    "scheduled_at": "'$SCHEDULED_AT'"
  }' \
  "https://api.telnyx.com/v2/email_messages" | jq -r '.data.id')

Cancel only while the message is still scheduled:

DELETE /v2/email_messages/{email_id}/schedule

bash
curl --fail-with-body \
  -X DELETE \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  "https://api.telnyx.com/v2/email_messages/$EMAIL_ID/schedule"

The cancel response is an EmailMessageResponse whose .data.status is cancelled.

List and retrieve messages

GET /v2/email_messages uses newest-first cursor pagination and has no filters. GET /v2/email_messages/{id} returns the detail shape, including bodies.

ParameterTypeRequiredDescription
page_sizeinteger 1–100NoDefaults to 25; invalid values are clamped.
page_cursorstringNoOpaque URL-safe Base64 cursor from the preceding response.
idUUID pathFor getEmail message ID.
bash
curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  --data-urlencode "page_size=25" \
  --data-urlencode "page_cursor=$PAGE_CURSOR" \
  "https://api.telnyx.com/v2/email_messages"

curl --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  "https://api.telnyx.com/v2/email_messages/$EMAIL_ID"

The detail response adds .data.text_body and .data.html_body. Continue pagination only when .meta.page_cursor is present.


Show full SKILL.md (743 more words)Show less
Webhook Verification

Telnyx signs webhook requests with Ed25519 using the telnyx-signature-ed25519 and telnyx-timestamp headers.

text
# Verify the signature against: telnyx-timestamp + "|" + the exact raw body.
# Do not parse/re-serialize JSON before verification.
# Reject timestamps more than 5 minutes outside your server clock.
# Deduplicate by event ID, then enqueue work and return 2xx quickly.
# Ed25519 is asymmetric signature verification; it is not HMAC.

Webhooks

Outbound lifecycle normally progresses:

email.queued → email.sending → email.sent → email.delivered

Terminal alternatives include email.bounced and email.failed; deferred, complaint, engagement, unsubscribe, sandbox, and scheduled events may also occur.

Email webhooks are configured per sender domain—not per message—using POST /v2/email_domains/{domain_id}/webhooks. A message-send request has no webhook_url parameter.

Telnyx retries webhook deliveries on timeout or non-2xx responses. Keep your endpoint idempotent — the same event may be delivered multiple times. Return 2xx within 10 seconds to acknowledge receipt.

bash
curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.net/webhooks/email",
    "events": ["email.sent", "email.delivered", "email.bounced", "email.failed"]
  }' \
  "https://api.telnyx.com/v2/email_domains/$DOMAIN_ID/webhooks"

The webhook subscription enum is not the pollable event enum. In particular, cancelled, daily_limit_exceeded, and system/gateway rejection events can be pollable without being subscribable webhooks. Conversely, subscriptions use email.* names while polling uses unprefixed values such as delivered. Read the complete enum and payload reference before writing event dispatch code.


Important Supporting Operations

Use these when the core send flow needs a follow-up, reusable content, reporting, or pre-send address checks.

Inspect message events and recipient states
OperationEndpointOptional query parameters
List one message's eventsGET /v2/email_messages/{email_id}/eventspage_size, page_cursor
List one message's recipientsGET /v2/email_messages/{email_id}/recipientspage_size, page_cursor, status, kind
Get one recipientGET /v2/email_messages/{email_id}/recipients/{recipient_id}None
bash
curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  --data-urlencode "page_size=25" \
  --data-urlencode "page_cursor=$PAGE_CURSOR" \
  "https://api.telnyx.com/v2/email_messages/$EMAIL_ID/events"

curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  --data-urlencode "status=bounced" \
  --data-urlencode "kind=to" \
  "https://api.telnyx.com/v2/email_messages/$EMAIL_ID/recipients"

curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  "https://api.telnyx.com/v2/email_messages/$EMAIL_ID/recipients/$RECIPIENT_ID"

Recipient status values are queued, sending, sent, deferred, delivered, bounced, failed, gw_reject, and cancelled. Each recipient has its own billable flag and SMTP outcome. BCC addresses are returned as null.

Create, manage, and render templates

Templates use Liquid. Create requires only name; subject and bodies may be null, and variables are auto-extracted when omitted.

OperationEndpointBody or query
CreatePOST /v2/email_templatesname; optional subject, html_body, text_body, variables
ListGET /v2/email_templatesoptional page_size, page_cursor
GetGET /v2/email_templates/{id}None
ReplacePUT /v2/email_templates/{id}Any template fields; despite the name, behaves identically to PATCH
UpdatePATCH /v2/email_templates/{id}One or more template fields
DeleteDELETE /v2/email_templates/{id}None; success is 204 with no body
RenderPOST /v2/email_templates/{id}/renderoptional template_variables; defaults to {}
bash
curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 91f8e70a-9ca0-43c7-b77c-594935493637" \
  -d '{
    "name": "order-confirmation",
    "subject": "Order {{ order_id }} received",
    "html_body": "<p>Hello {{ customer_name }}</p>"
  }' \
  "https://api.telnyx.com/v2/email_templates"

curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  --data-urlencode "page_size=25" \
  --data-urlencode "page_cursor=$PAGE_CURSOR" \
  "https://api.telnyx.com/v2/email_templates"

curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  "https://api.telnyx.com/v2/email_templates/$TEMPLATE_ID"

curl --fail-with-body \
  -X PUT \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "order-confirmation-v2",
    "subject": "Order {{ order_id }} confirmed"
  }' \
  "https://api.telnyx.com/v2/email_templates/$TEMPLATE_ID"

curl --fail-with-body \
  -X PATCH \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"subject":"Order {{ order_id }} is confirmed"}' \
  "https://api.telnyx.com/v2/email_templates/$TEMPLATE_ID"

curl --fail-with-body \
  -X DELETE \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  "https://api.telnyx.com/v2/email_templates/$TEMPLATE_ID"

curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"template_variables":{"order_id":"A-100","customer_name":"Ada"}}' \
  "https://api.telnyx.com/v2/email_templates/$TEMPLATE_ID/render"
List account events and statistics

GET /v2/email_events lists account events oldest first. It accepts event_type as comma-separated or repeated parameters, plus email_id, from, and to. GET /v2/email_events/stats accepts from and to and returns recipient-level counts and rates.

bash
curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  --data-urlencode "event_type=delivered,bounced" \
  --data-urlencode "from=2026-07-01T00:00:00Z" \
  --data-urlencode "to=2026-07-31T23:59:59Z" \
  "https://api.telnyx.com/v2/email_events"

curl --get --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  --data-urlencode "from=2026-07-01T00:00:00Z" \
  --data-urlencode "to=2026-07-31T23:59:59Z" \
  "https://api.telnyx.com/v2/email_events/stats"

When from is omitted it defaults to 30 days ago. If from is present without to, the end defaults to from + 30 days.

Validate email addresses

Single validation is synchronous. Batch validation accepts 1–1,000 addresses, deduplicates them, and returns an asynchronous job to poll.

bash
curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"customer@example.net"}' \
  "https://api.telnyx.com/v2/email_validations"

curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emails":["one@example.net","two@example.net"],
    "webhook_url":"https://example.net/webhooks/validation-complete"
  }' \
  "https://api.telnyx.com/v2/email_validations/batch"

curl --fail-with-body \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  "https://api.telnyx.com/v2/email_validations/batch/$BATCH_ID"

Poll until .data.status is completed or failed; completed results are in .data.results, keyed by the original address.


Additional Operations

The 20 operations below are reachable. Use the core tasks above first, then consult references/api-details.md for every optional parameter and full response shape. There are no curl SDK methods: use the raw HTTP method and path shown here.

OperationHTTP methodEndpointUse whenRequired params
Send, schedule, or sandbox an emailPOST/v2/email_messagesCreate one outbound message.from, to; subject unless template_id
Send a batchPOST/v2/email_messages/batchCreate up to 50 messages and parse per-item outcomes.messages
List messagesGET/v2/email_messagesPage through account messages.None
Get a messageGET/v2/email_messages/{id}Retrieve bodies and current state.id
Cancel a scheduled messageDELETE/v2/email_messages/{email_id}/scheduleStop a message that is still scheduled.email_id
List message eventsGET/v2/email_messages/{email_id}/eventsPoll one message's lifecycle.email_id
List message recipientsGET/v2/email_messages/{email_id}/recipientsInspect per-recipient outcomes.email_id
Get one message recipientGET/v2/email_messages/{email_id}/recipients/{recipient_id}Inspect one recipient's SMTP state.email_id, recipient_id
Create a templatePOST/v2/email_templatesStore reusable Liquid content.name
List templatesGET/v2/email_templatesSelect or audit templates.None
Get a templateGET/v2/email_templates/{id}Retrieve one template.id
Replace a templatePUT/v2/email_templates/{id}Compatibility update; behaves like PATCH.id
Update a templatePATCH/v2/email_templates/{id}Modify selected template fields.id
Delete a templateDELETE/v2/email_templates/{id}Remove reusable content.id
Render a templatePOST/v2/email_templates/{id}/renderPreview Liquid output.id
List account eventsGET/v2/email_eventsQuery pollable lifecycle/engagement events.None
Get event statisticsGET/v2/email_events/statsCompute recipient-level counts and rates.None
Validate one addressPOST/v2/email_validationsSynchronously assess deliverability.email
Create a validation batchPOST/v2/email_validations/batchValidate up to 1,000 addresses asynchronously.emails
Get a validation batchGET/v2/email_validations/batch/{id}Poll batch status and retrieve results.id
Not yet available

These OpenAPI operations are not routed in the deployed API. Do not call them or count them among the 20 reachable operations:

OperationEndpointStatus
Delete all account email data matching an addressDELETE /v2/email_messages?address=...Not yet available
Delete one email message and retained child dataDELETE /v2/email_messages/{id}Not yet available

For exhaustive operation parameters, complete response schemas, webhook fields, and error codes, see references/api-details.md.

© team-telnyx, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/telnyx-email-curl of team-telnyx/ai.

  • SKILL.md
  • references/api-details.md

Open the folder on GitHubat commit 4d2ace0

Compare with similar skills

Telnyx Email Curl next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Telnyx Email Curl compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Telnyx Email Curl this skillteam-telnyx/ai220—~6kAutomated safety check: NotesMIT
Stripe Projectsfossasia/eventyay1.7k5 repos~2kAutomated safety check: NotesApache-2.0
WooCommerce Email Editor Developmentwoocommerce/woocommerce11k—~893Automated safety check: PassCustom licence
Email Best Practicesviclafouch/meme-studio1107 repos~787Automated safety check: PassNone
React Emailviclafouch/meme-studio1102 repos~3.6kAutomated safety check: PassMIT
Pinme Emailglitternetwork/pinme3.8k—~1.2kAutomated safety check: PassMIT

Similar skills

  • Stripe Projects

    fossasia/eventyay

    A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.

    1.7k GitHub starsUsed in 5 repos~2k tokens
    Backend & APIsAuto-check: notes
  • Sets up a local environment for the WooCommerce block email editor, with a watcher, Mailpit email capture and build and test commands for its PHP and JS packages.

    11k GitHub stars~893 tokensUpdated today
    Backend & APIsAuto-check passed
  • Email Best Practices

    viclafouch/meme-studio

    A skill your agent uses when building email features, emails going to spam, high bounce rates, setting up SPF/DKIM/DMARC authentication, implementing email capture, ensuring compliance (CAN-SPAM…

    110 GitHub starsUsed in 7 repos~787 tokens
    Backend & APIsAuto-check passed
  • React Email

    viclafouch/meme-studio

    A skill your agent uses when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.

    110 GitHub starsUsed in 2 repos~3.6k tokens
    Backend & APIsAuto-check passed
  • Pinme Email

    glitternetwork/pinme

    A skill your agent uses when a PinMe project (Worker TypeScript) needs to integrate email sending (sendemail).

    3.8k GitHub stars~1.2k tokensUpdated 29 days ago
    Backend & APIsAuto-check passed
  • Email Deliverability Audit

    growthenginenowoslawski/coldoutboundskills

    Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~3.4k tokensUpdated 5 days ago
    Backend & APIsAuto-check passed

More from team-telnyx/ai

All 11 skills in this repo
  • Test VoIP push notifications for Telnyx WebRTC iOS (APNs) and Android (FCM) apps.

    220 GitHub stars~538 tokensUpdated 2 days ago
    Auto-check passed
  • Manage email suppressions (blocks), import and export suppression lists, and manage unsubscribe groups.

    220 GitHub stars~5k tokensUpdated 2 days ago
    Auto-check: notes
  • Telnyx Messaging Curl

    team-telnyx/ai

    Send and receive SMS/MMS, handle opt-outs and delivery webhooks.

    220 GitHub stars~4.9k tokensUpdated 2 days ago
    Auto-check passed
  • Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK.

    220 GitHub stars~3.2k tokensUpdated 2 days ago
    Auto-check passed
  • End-to-end setup for making a Telnyx AI assistant call a phone number.

    220 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Manage email inboxes, list and search inbound messages, threads, sender filters, and reply to or forward messages.

    220 GitHub stars~5.4k tokensUpdated 2 days ago
    Auto-check passed

Categories

Questions about Telnyx Email Curl

What does Telnyx Email Curl do?

Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events. Telnyx Email Curl is an agent skill from team-telnyx/ai. Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events.

When should I use Telnyx Email Curl?

Telnyx Email Curl fits situations like: automated email workflows; tasks that involve Transactional email.

How do I install Telnyx Email Curl in Claude Code?

Run `npx skills add team-telnyx/ai --skill telnyx-email-curl -a claude-code`. Or copy the skill folder (skills/telnyx-email-curl in team-telnyx/ai) into .claude/skills/telnyx-email-curl in your project. Claude Code loads it when a task matches its description.

How do I install Telnyx Email Curl in Codex?

Run `npx skills add team-telnyx/ai --skill telnyx-email-curl -a codex`. Or copy the skill folder (skills/telnyx-email-curl in team-telnyx/ai) into .agents/skills/telnyx-email-curl in your project. Codex loads it when a task matches its description.

Can I use Telnyx Email Curl in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add team-telnyx/ai --skill telnyx-email-curl -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/telnyx-email-curl, .gemini/skills/telnyx-email-curl, .github/skills/telnyx-email-curl and .opencode/skills/telnyx-email-curl in your project.

What does Telnyx Email Curl need to run?

Going by SKILL.md and its folder, Telnyx Email Curl needs the command-line tools its instructions call (curl and jq) and credentials named TELNYX_API_KEY. Our summary lists: A credential in TELNYX_API_KEY.

Does Telnyx Email Curl access the network?

SKILL.md names 1 domain. In commands or code: api.telnyx.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Telnyx Email Curl safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Telnyx Email Curl use?

Telnyx Email Curl is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Telnyx Email Curl use?

About 6k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.9k tokens, read only when the agent opens those files.

What are the alternatives to Telnyx Email Curl?

Skills that share tags, products or a category with Telnyx Email Curl: Stripe Projects (fossasia/eventyay, 1.7k stars), WooCommerce Email Editor Development (woocommerce/woocommerce, 11k stars), Email Best Practices (viclafouch/meme-studio, 110 stars) and React Email (viclafouch/meme-studio, 110 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Telnyx Email Curl?

team-telnyx (a GitHub organization) maintains it in team-telnyx/ai, which has 220 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 8, 2026.

Source: team-telnyx/ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.