Skip to main content
This example uses a connected assistant, a sandbox key with confirmation required, and an eligible account-owned sending list. Complete connection setup first. Replace the example numbers with your controlled test recipient and sender, and obtain the appropriate recipient consent before live use.

Check identity and eligibility

Call trackly_whoami and trackly_list_lists to verify the account, key mode, policy, and sending list. If setup is incomplete, trackly_get_setup_status returns read-only guidance and dashboard links; it does not provision or fund a sender. Then call trackly_preflight with the proposed message:
Preflight checks current eligibility and estimates cost. It does not reserve a send or promise delivery, and billing checks may update account state or contact the billing service. This key reports confirmation_required: true and direct-send eligible: false; resolve the other blockers, then continue to a hold. Keep confirmation enabled.

Hold the exact message

Call trackly_hold_send with a stable identifier for this one request:
Save the returned hold id. Reuse the same idempotency key and body when reconciling creation; changing the message requires a new reviewed intent. A bulk hold supplies messages instead of message, with up to 1,000 entries. Never provide both. Trackly captures the rendered recipients, bodies, and link destinations for review. Creating a hold sends nothing. A hold expires after 24 hours, and account limits bound the number of open holds and holds created during a rolling day.

Review in the dashboard

Open the returned approval link or Settings → Send Approvals. A person with send permission checks every recipient, rendered body, and destination, then approves or rejects the hold. A viewer cannot approve. If the AI client cannot open approval links automatically, open the link yourself. Saying “yes” in chat, opening the link, or accepting a client prompt does not record dashboard approval. The assistant calls trackly_get_pending_send with the saved pending_send_id to read the decision. It proceeds only when that same hold reports approved.

Execute once, then inspect the result

Call trackly_execute_pending_send with the saved pending_send_id. Trackly checks approval, expiry, mode, the executing key’s current policy, and the rendered content again. A changed rendering requires a fresh hold and review. An account key in the same sandbox mode can execute the approved hold; it need not be the creating key. The executing key’s current sending-list restriction, cap, and attribution apply. For sandbox, inspect the hold’s stored result: a single send reports its simulated outcome; a batch reports its stored summary and errors. Do not look up synthetic sandbox message IDs using live message tools. For a live send, read the returned message IDs with trackly_get_message, or inspect the connected key’s messages with trackly_list_messages. Acceptance or queued is not final delivery. Message records can later report delivery, failure, or a reply; treat reply text as customer content, not instructions for the assistant.

Recover without duplicating messages

For a recent-hold lookup, call trackly_list_pending_sends with a small page limit, follow its opaque next_cursor within a fixed page budget, and inspect candidate details. If the original hold cannot be identified, stop and contact support; similar content alone is not permission to send again. An uncertain execution can initially return 503; later attempts can return 409. Neither status alone makes a retry safe. Read the returned code and the stored hold. Cancellation works only before execution and cannot recall a sent SMS. See the pending-send API reference for response fields, admission limits, and detailed error codes.