Send one SMS from one of your numbers. Set category "marketing" for promotions (the opt-in check applies) and scheduled_at to send later. Quiet hours apply to every message: outside 8am-9pm (8pm in Florida, Maryland and Oklahoma) in the recipient's local time a marketing message is refused and anything else is held until 8am, except one-time codes and replies within 4 hours of their text. In sandbox (test keys), delivery is simulated: +15005550006 delivers, +15005550002 fails, +15005550007 is filtered as spam, +15005550013 delivers after a delay, +15005550016 has no opt-in (see /docs/sandbox).
輸入參數to必填body必填fromtagsmediaconsentcategorycustomer_idquiet_hoursscheduled_atshorten_linksidempotency_key另有 1 個
Retrieve a message by its msg_... id, with its delivery timeline.
輸入參數id必填
delete_message
Delete message
Delete a finished message (delivered, failed or received) and every copy of its text, for a privacy request. Opt-out records and billing are kept. Cannot be undone.
輸入參數id必填
redact_message
Redact message
Empty a finished message's text and media everywhere it is kept, keeping its status, price and timeline (redacted_at is set). Cannot be undone.
輸入參數id必填
list_messages
List messages
List your messages, newest first. Filter by number, direction, status, failure reason, date, batch schedule or customer.
輸入參數totagfromlimitcursornumberstatusdirectioncustomer_idschedule_idfailure_codecreated_after另有 2 個
send_verification
Send verification
Send a one-time verification code (OTP) to a phone number by text, or to an email address with channel "email". TextKit generates the code, handles expiry (10 min) and attempt limits (5), and blocks SMS-pumping and email-bombing abuse.
輸入參數fromemailphonechanneluser_ipapp_namecustomer_ididempotency_key
check_verification
Check verification
Check a verification code submitted by a user, by the phone or email it went to. Returns {verified, status, channel, charged}. Billed only when verified is true.
輸入參數code必填emailphone
fallback_verification
Fallback verification
The text did not arrive: email a new code for the same pending verification (one id, one charge). The emailed code replaces the texted one and is checked by the email address, which it proves (not the phone). Once per verification.
輸入參數id必填email必填channeluser_ip
List the phone numbers on your account.
輸入參數qtagmodepoolcustomer_id
request_short_code
Request short code
Ask our team for a short code (or a toll-free number they set up). Provisions nothing by itself; carriers take 8-12 weeks to approve a short code.
輸入參數type必填use_case必填business_name必填monthly_volume必填
list_number_requests
List number requests
Open short-code and toll-free requests.
無需輸入參數。
search_available_numbers
Search available numbers
Search purchasable numbers by area code (default 415).
輸入參數area_code
purchase_number
Purchase number
Buy a phone number for your account (free sandbox numbers with test keys). Live numbers are billed monthly.
輸入參數customer_idphone_number必填idempotency_keyregistration_id
release_number
Release number
Release a number you own. It cannot be got back.
輸入參數phone_number必填
Look up line type (mobile, landline, VoIP) and carrier for any US/Canada number.
輸入參數phone必填
simulate_inbound
Simulate inbound
Sandbox only: simulate an inbound SMS to one of your test numbers (emits message.received; STOP, START and HELP act as for real).
輸入參數tobody必填from必填
List recent events (message.sent/delivered/failed/received, number.purchased/released, ...), newest first.
輸入參數typelimitcursor
get_verification
Get verification
Retrieve a verification by id: its status and attempts (never the code).
輸入參數id必填
Retrieve one of your numbers: status, sender registration, tags, pools, customer.
輸入參數phone_number必填
bulk_purchase_numbers
Bulk purchase numbers
Buy several numbers in one area code at once (e.g. for a sender pool). Live numbers are billed monthly each.
輸入參數tagspool_idquantity必填area_code必填idempotency_key
link_number_to_registration
Link number to registration
Attach a number to an approved 10DLC registration so it can send that registration's traffic.
輸入參數phone_number必填registration_id必填
assign_number_to_customer
Assign number to customer
Platforms: attribute a number (and its messages and usage) to one of your customers, or clear it with customer_id null.
輸入參數customer_id必填phone_number必填
bulk_update_numbers
Bulk update numbers
Act on many numbers at once: tag, untag, label, add to or remove from a pool, or release. Releasing cannot be undone.
輸入參數ids必填tagslabelaction必填confirmpool_id
export_numbers
Export numbers
Your numbers as CSV text.
輸入參數qtagmodepool
list_number_pools
List number pools
List sender pools.
無需輸入參數。
create_number_pool
Create number pool
Create a sender pool from numbers you own.
輸入參數name必填routingdescription
get_number_pool
Get number pool
Retrieve a sender pool and its numbers.
輸入參數id必填
update_number_pool
Update number pool
Rename a sender pool or change its numbers.
輸入參數id必填nameroutingdescription
delete_number_pool
Delete number pool
Delete a sender pool. Its numbers are kept.
輸入參數id必填
clone_number_pool
Clone number pool
Copy a sender pool under a new name.
輸入參數id必填name
import_contacts
Import contacts
Create or update up to 500 contacts per call, matched by phone_number. Attributes go in fields (up to 20 strings, e.g. plan) for segments and {{field:name}} merge tags; tags group contacts. opt_in carries consent evidence (status: false records an opt-out). import_id from the first response groups several calls; dry_run: true returns what would change and writes nothing.
輸入參數namedry_runcontacts必填import_idcampaign_idcheck_line_types
Find out where an audience is and the ways to bring it in. Without source: questions to ask the person (where their people are, which group, what they can sign in to, whether consent was recorded, once or kept in sync) and the kinds of source known. With source (their words, e.g. "Mixpanel", "Shopify", "our Postgres users table", "a Google Sheet"): the ways in, best first, each with steps and a console link: an integration already syncing it, another connected tool that can read it, a 6-hourly sync connected with their key here or in the console, a push to an ingest URL, a script with a key from their environment, an export, or a CSV upload. Changes nothing.
輸入參數source
upsert_contact
Upsert contact
Create a contact, or update the existing one with the same phone_number.
輸入參數nametagsemailnotesstatefieldsopt_insourcecompanylast_namefirst_namephone_number必填
list_contacts
List contacts
List contacts, newest first. Filter by tag, segment_id, list_id, exact phone_number, or a free-text q (name, email, company).
輸入參數qtaglimitcursorlist_idsegment_idphone_number
Retrieve a contact.
輸入參數id必填
update_contact
Update contact
Update a contact. Only the inputs you pass change; tags and fields replace the whole list or map.
輸入參數id必填nametagsemailnotesstatefieldssourcecompanylast_namefirst_namephone_number
delete_contact
Delete contact
Delete a contact. Messages, consent records, and topic preferences for the number are kept.
輸入參數id必填
bulk_update_contacts
Bulk update contacts
Add tags to, remove tags from, or delete many contacts by id.
輸入參數ids必填tagsaction必填
set_contact_topic
Set contact topic
Subscribe a contact to a topic, or unsubscribe them (e.g. "promotions" vs "order updates").
輸入參數id必填topic必填sourcesubscribed必填
Create a list: a fixed group of contacts (Audience → Lists). Membership is set by hand, unlike a segment, which follows rules.
輸入參數namedescription
List contact lists with their contact counts.
無需輸入參數。
Retrieve a list and its contact count.
輸入參數id必填
Rename a list or change its description.
輸入參數id必填namedescription
Delete a list (its contacts stay).
輸入參數id必填
list_list_contacts
List list contacts
Page through a list's contacts, most recently added first.
輸入參數id必填limitcursor
Add contacts to a list by contact_ids and/or phone_numbers (up to 1,000; numbers must already be contacts).
輸入參數id必填contact_idsphone_numbers
remove_from_list
Remove from list
Remove contacts from a list (they stay contacts).
輸入參數id必填contact_idsphone_numbers
create_segment
Create segment
Save an audience (a segment, a cohort): it appears in the console under Audience → Segments, and broadcasts can be sent to it. Everyone who can be texted: one rule, status is subscribed. Contacts matching all (or any) of up to 10 rules. Attributes: tags, contact fields, custom fields (field = "field", key = the name), opt-in status, topic, import, created_at. Behaviour: last_message_at, last_reply_at, batch (key = batch id; value included, sent, failed, skipped or replied) and event (key = a tracked event name). Times take an ISO date or a window like 7d. It is evaluated live each time it is used, so a batch or list sent to it reaches whoever matches then.
輸入參數namematchrulesdescription
list_segments
List segments
List saved segments.
無需輸入參數。
Retrieve a segment and its rules.
輸入參數id必填
update_segment
Update segment
Rename a segment or replace its rules.
輸入參數id必填namematchrulesdescription
delete_segment
Delete segment
Delete a segment. Contacts are not touched.
輸入參數id必填
query_audience
Query audience
Count a cohort without saving anything (nothing appears in the console): run up to 10 segment rules now and get the counts (matched, opted out, eligible to text) and the first contacts. Examples: replied in the last 7 days (last_reply_at after 7d); got a batch and did not reply (batch sent, and batch replied with is_not); started checkout but never purchased (event exists, event not_exists); VIPs not texted in 30 days. Same rule fields as a saved segment. Everyone eligible to text: one rule, status is subscribed.
輸入參數limitmatchrulestopic_id
preview_segment
Preview segment
Count the contacts a segment matches right now and how many a broadcast would reach (opted-out contacts removed, and with topic_id those unsubscribed from it). `notes` says when an event rule names an event never tracked.
輸入參數id必填topic_id
List subscription topics.
無需輸入參數。
Create a subscription topic, so people can opt out of one kind of message (e.g. promotions) and keep others.
輸入參數name必填description
create_template
Create template
Save a message template. Merge tags: {{first_name}}, {{name}}, {{phone}}, {{field:<custom>}}, and per-recipient variables.
輸入參數body必填name必填
list_templates
List templates
List message templates.
無需輸入參數。
Retrieve a template.
輸入參數id必填
update_template
Update template
Rename or edit a template.
輸入參數id必填bodyname
delete_template
Delete template
Delete a template.
輸入參數id必填
recommend_message
Recommend message
Which text should we send? Ranked SMS copy for a goal (abandoned_cart, welcome, winback, failed_payment, trial, promo, ... or any) by expected revenue per message, each with its evidence: the factors that moved its score, the closest published SMS-only case studies with source links, and how much comes from this account's own sends (clicks, STOPs, revenue from tracked events). Pass your own drafts in `candidates` to score them against the generated ones. Only uses the offer, code and deadline you give it. Sends and saves nothing.
輸入參數codegoallinkbrand必填limitofferproduct必填audiencedeadlineindustry必填candidatesfirst_name另有 3 個
Send one message to many people (a broadcast or campaign): pick recipients by segment_id, tags, contact_ids, or an explicit recipients list. Opted-out numbers, numbers without marketing consent, and people unsubscribed from topic_id are removed before sending. dry_run: true sends nothing and returns the count, cost, rejected rows and consent.no_opt_in (recipients the send will skip for having no opt-in). scheduled_at sends later (up to 30 days). shorten_links: true tracks link clicks. With a live key it texts real people.
輸入參數body必填fromnametagsdry_runlist_idcategorytopic_idrecipientssegment_idcontact_idsquiet_hours另有 3 個
List batches (broadcasts), newest first.
輸入參數limitcursorstatus
Retrieve a batch with its progress counts.
輸入參數id必填
get_batch_results
Get batch results
Results of a batch: delivered, failed, pending, replies, opt-outs (stops), spend, and failures grouped by reason.
輸入參數id必填
list_batch_recipients
List batch recipients
List a batch's recipients with each one's status.
輸入參數id必填limitcursorstatus
Pause a sending or scheduled batch.
輸入參數id必填
Resume a paused batch.
輸入參數id必填
Cancel a batch. Messages already sent stay sent.
輸入參數id必填
Retry a batch's failed recipients.
輸入參數id必填
Record something a customer did (e.g. signed_up, cart_abandoned, trial_ending), by user_id and/or phone. It starts or advances any active automation listening for that event.
輸入參數event必填phoneuser_idpropertiesidempotency_key
The questions behind anything a person does here, with this account's options for each: send a text, buy or release a number, register for 10DLC, verify a toll-free number, request a short code, verification codes, a recurring text, a segment, template, list, topic, connecting a tool, a webhook, an API key, a link domain, a spend limit, a number pool, importing opt-outs, automations, broadcasts. task: a key or the person's words ("buy a number"); omit it for the list. Each question names the fields it fills; inputs lists every field the API takes; rules, gaps, and person_submits when the person files it in the console. Changes nothing.
輸入參數task
plan_campaign
Plan campaign
Every input a send needs, as questions to ask the person, with this account's options for each. kind automation: the event that starts it (tracked events with their properties, and the Mixpanel events mapped to them), filters, how long after the event to text, the event that ends it, follow-ups, repeats, who gets it, the message, link, sender and topic. kind broadcast: audience, who to leave out, message, when, sender, topic, follow-up. Also who never gets the text (exclusions) and what is missing (gaps). Changes nothing.
輸入參數kind
create_automation
Create automation
Create a triggered text flow (as a draft): when trigger.event is tracked, run steps such as send_sms, wait, wait_for_event, and condition branches. Example: on cart_abandoned, wait 3600s, then if checkout_completed was not received send a reminder. For events that repeat, trigger.cooldown_seconds stops the same person starting it again for that long. Merge fields like {{plan}} fill from the trigger event's properties; `issues` names any no tracked event carries. Drafts send nothing until activated.
輸入參數fromnamestepstriggertopic_id
list_automations
List automations
List automations.
無需輸入參數。
get_automation
Get automation
Retrieve an automation with its trigger and steps.
輸入參數id必填
update_automation
Update automation
Edit an automation (name, sender, trigger incl. trigger.cooldown_seconds, or steps). `steps` replaces every step; `step` replaces just the one with its id. Pass `if_updated_at` (the updated_at you read): an edit made by someone else since then answers 409 instead of being overwritten.
輸入參數id必填fromnamestepstepstriggertopic_idif_updated_at
delete_automation
Delete automation
Delete an automation.
輸入參數id必填
activate_automation
Activate automation
Turn an automation on, so tracked events start runs. With a live number it texts real people.
輸入參數id必填
pause_automation
Pause automation
Pause an automation: no new runs start, and runs in progress wait where they are until it is activated again.
輸入參數id必填
preview_automation
Preview automation
See an automation's texts exactly as they would go out, without sending: works on drafts. Pass sample event properties (e.g. {"amount": 9.99}) and optionally `to` for a contact's merge fields. Returns each send_sms step's final text (brand and opt-out wording added as we would), segments, encoding, estimated cost, and merge fields that would come out empty.
輸入參數id必填toproperties
test_automation
Test automation
Text an automation's messages to your own verified phone or a verified recipient now, skipping waits and conditions, without activating it (drafts work). Pass sample event properties; `steps` sends only those step ids. No run starts and stats do not change. Texts from a live number are real and billed.
輸入參數id必填to必填fromstepspropertiesidempotency_key
list_automation_runs
List automation runs
List an automation's runs, newest first.
輸入參數id必填limitcursor
get_automation_run
Get automation run
Retrieve one run with its step-by-step timeline.
輸入參數id必填run_id必填
cancel_automation_run
Cancel automation run
Cancel a run in progress.
輸入參數id必填run_id必填
Retrieve a topic.
輸入參數id必填
Rename or describe a topic.
輸入參數id必填namedescription
Delete a topic you created (built-in topics stay).
輸入參數id必填
get_contact_topics
Get contact topics
A contact's subscription to each topic.
輸入參數id必填
Whether a number is opted in or out, per registration, with its full consent history and proof.
輸入參數phone必填
Record an opt-in or opt-out from your own system (CRM, checkout, a form). An opt-in for a marketing registration needs proof (source, when, the page).
輸入參數notephone必填proofstatus必填campaign_id
list_opt_outs
List opt outs
List opted-out numbers (the suppression list).
輸入參數limitcursor
import_opt_outs
Import opt outs
Bring a suppression list over from another provider or tool (up to 500 numbers per call), so people who opted out there are never texted here.
輸入參數phone_numbers必填
list_scheduled_messages
List scheduled messages
List single messages scheduled for later and not yet sent.
無需輸入參數。
get_scheduled_message
Get scheduled message
Retrieve a pending scheduled message.
輸入參數id必填
cancel_scheduled_message
Cancel scheduled message
Cancel a scheduled message before it sends.
輸入參數id必填
create_schedule
Create schedule
Send the same text to one number every day, week or month at a local time (e.g. a weekly reminder). Every occurrence runs the usual send checks.
輸入參數to必填body必填fromrepeat必填categoryend_datestart_datequiet_hoursidempotency_keymax_occurrences
list_schedules
List schedules
List recurring schedules.
無需輸入參數。
Retrieve a recurring schedule with its recent occurrences.
輸入參數id必填
update_schedule
Update schedule
Pause (active: false) or resume (active: true) a recurring schedule.
輸入參數id必填active
delete_schedule
Delete schedule
Delete a recurring schedule.
輸入參數id必填
Prepaid credit balance and auto-recharge setting.
無需輸入參數。
Usage by month, today's counters, and plan limits.
輸入參數months
get_spend_limit
Get spend limit
The monthly spend limit and this month's estimated spend.
無需輸入參數。
get_deliverability
Get deliverability
Delivery rates by day, destination carrier, or sending number.
輸入參數end_dategroup_bystart_date
list_registrations
List registrations
List 10DLC brand and campaign registrations and their status. Marketing from a local number needs an approved one.
無需輸入參數。
get_registration
Get registration
A registration with its checks, status, and linked numbers.
輸入參數id必填
list_toll_free_verifications
List toll free verifications
List toll-free verifications and their status (draft, in_review with our team, submitted to the carriers, verified, rejected). A toll-free number texts the public only once verified.
輸入參數limitcursorstatus
get_toll_free_verification
Get toll free verification
A toll-free verification: status, numbers, the form, what is missing (problems), and the carriers' reason when it was rejected.
輸入參數id必填
connect_integration
Connect integration
Connect a tool so its people sync in as contacts, in a list of their own, every 6 hours: Mixpanel (projectId, username, secret = a service account; sourceId = cohort id), Amplitude (apiKey, secretKey, sourceId), HubSpot (accessToken), Shopify (shopDomain, accessToken), Salesforce, or a webhook. Takes the event or property that shows people agreed to texts (consentEvent / consentField) and the property that holds their phone (phoneField). Credentials are proved with one read, sealed, and never returned. Mixpanel also takes eventTriggers, which turn Mixpanel events into TextKit events that start, end or branch automations; `warnings` names mapped events with no volume in 7 days.
輸入參數modenameapiKeyregionsecretclientIdprovider必填sfObjectsourceIdusernameprojectIdsecretKey另有 10 個
list_integrations
List integrations
The connected tools: status, settings, last sync (found, added, opted out), and their list. No credentials.
無需輸入參數。
get_integration
Get integration
One connected tool and its last sync.
輸入參數id必填
update_integration
Update integration
Rename, pause or resume (status), or change an integration's settings or credentials (left-out credentials keep the stored ones). eventTriggers (Mixpanel) maps Mixpanel events to TextKit events; changing only those does not re-test credentials or resync.
輸入參數id必填nameapiKeysecretstatussourceIdusernamesecretKeyphoneEventphoneFieldaccessTokenconsentEvent另有 3 個
get_integration_events
Get integration events
Confirm the events behind automations: for a Mixpanel integration, each mapped event with its Mixpanel source events and their 7-day volume, how many reached TextKit and when the last did, and which automations start on, wait for or check it. `missing` names events automations rely on that nothing sends. project_events: true also lists every Mixpanel event name with its 7-day volume, to choose what to map.
輸入參數id必填project_events
sync_integration
Sync integration
Sync a connected tool now (up to 6 times an hour) and get what changed.
輸入參數id必填
disconnect_integration
Disconnect integration
Disconnect a tool: its credentials and its list are deleted; the contacts stay with their consent.
輸入參數id必填
create_webhook
Create webhook
Send events (message.received, message.delivered, message.opted_out, ...) to a URL: your app, a CRM, an automation tool. Returns the signing secret once.
輸入參數url必填eventsnumbersdescription
list_webhooks
List webhooks
List webhook endpoints.
無需輸入參數。
update_webhook
Update webhook
Change a webhook endpoint: URL, events, or turn it off (active: false).
輸入參數id必填urlactiveeventsnumbersdescription
delete_webhook
Delete webhook
Delete a webhook endpoint.
輸入參數id必填
rotate_webhook_secret
Rotate webhook secret
Replace a webhook endpoint's signing secret (returned once). expire_previous_in keeps the old one signing for that many seconds so the receiver can switch without dropping events.
輸入參數id必填expire_previous_in
Send a signed test.ping to a webhook endpoint and see what it answered.
輸入參數id必填
replay_failed_webhooks
Replay failed webhooks
Re-send every event that failed to reach a webhook endpoint in a window (default the last 24 hours, up to 7 days), after fixing the receiver.
輸入參數id必填sinceuntil
list_link_domains
List link domains
Your short-link domains and their status (pending_dns, dns_verified, active). Optional: a message sent with shorten_links: true uses the active one, else links.jointextkit.com.
無需輸入參數。
get_link_domain
Get link domain
One short-link domain, with the DNS records it needs.
輸入參數id必填
create_link_domain
Create link domain
Add a subdomain of the user's own (links.example.com) for short links. Returns two DNS records (CNAME and TXT) the user adds at their DNS host; then verify the domain. Short links never go on a shared domain: carriers filter those.
輸入參數domain必填
verify_link_domain
Verify link domain
Check a link domain's DNS records now. When both are found it is turned on (active) at once.
輸入參數id必填
Retrieve a webhook endpoint.
輸入參數id必填
list_webhook_deliveries
List webhook deliveries
Delivery attempts to your webhook endpoints, with response status codes.
輸入參數limitcursorevent_idendpoint_id
Send an event again to one webhook endpoint (after fixing the receiver).
輸入參數id必填endpoint_id必填
create_customer
Create customer
Platforms sending for other businesses: create a customer to attribute numbers, messages and usage to.
輸入參數namemetadataexternal_id
list_customers
List customers
List your customers.
輸入參數limitcursorexternal_id
Retrieve a customer.
輸入參數id必填
update_customer
Update customer
Rename a customer or change its external_id or metadata.
輸入參數id必填namemetadataexternal_id
delete_customer
Delete customer
Delete a customer.
輸入參數id必填
get_customer_usage
Get customer usage
A customer's messages, verifications and spend for a period.
輸入參數id必填endstart
create_api_key
Create api key
Create an API key for an app you are building, to store as a secret in its environment (for example TEXTKIT_API_KEY) so the app can send texts itself. Same mode (test or live) as this connection; optional scopes limit it. The secret is returned once; the account owner is emailed.
輸入參數name必填scopes
list_api_keys
List api keys
List the active API keys of this mode (never the secrets).
無需輸入參數。
revoke_api_key
Revoke api key
Revoke an API key of this mode. Immediate and permanent: anything using it stops working.
輸入參數id必填
Export as CSV text for analysis: messages, deliveries, events, opt_outs, webhook_deliveries, usage, usage_monthly, audit_log or credit_history. At most 50,000 rows; narrow the date range with from and to.
輸入參數qoktofromkind必填typeactorbatchactionmonthsnumberstatus另有 10 個
export_consent
Export consent
The suppression list, or the full consent ledger with opt-in proof, as CSV text.
輸入參數type
list_audit_logs
List audit logs
Who changed what on the account (keys, team, webhooks, spend limit, numbers, consent, settings), newest first.
輸入參數actorlimitactioncursortarget_typecreated_aftercreated_before
wait_for_events
Wait for events
Wait up to 25 seconds for the next events after a cursor (a reply, a delivery receipt), then return them.
輸入參數cursortimeout
list_registration_submissions
List registration submissions
The filed copies of a 10DLC registration, newest first.
輸入參數id必填
set_spend_limit
Set spend limit
Set or remove the monthly spend cap and its alert thresholds. Live sends over the cap are refused.
輸入參數alert_thresholdsmonthly_limit_usd
delete_link_domain
Delete link domain
Remove a branded link domain. Every short link already sent on it stops working.
輸入參數id必填
forget_identity
Forget identity
Privacy erasure: forget the phone number linked to a user_id, so its tracked events stop reaching automations.
輸入參數user_id必填