Skip to main content
Quick Agent Actions are the shortest path from “an AI agent wants to reach someone” to a real phone call or text. There is no number to provision, no assistant to configure, and no campaign to build: you send a goal, LumisReach runs the conversation, and you poll one endpoint for the outcome. Everything here runs on Telnyx + LiveKit, the same stack behind the rest of the platform.

Quick AI Phone Call

An AI agent calls one or more numbers from a shared LumisReach number and works toward your goal, with retries when nobody picks up.

Quick AI Text

An AI agent opens an SMS thread from a registered shared sender and keeps answering replies until the goal is met.

AI Phone Number

Buy a number and configure the agent that answers it — calls and, optionally, texts — in a single request.

Shared senders

Quick calls and quick texts go out from numbers LumisReach owns, on the LumisReach Official account. That is what removes the setup step: you do not buy a number, register a brand, or wait for provisioning before your first call. What this means in practice:
  • The recipient sees a LumisReach number, not one of yours. A single job can go out from more than one number — each destination reports its own from_number — so no single number carries an entire job.
  • Texts are already registered. The shared SMS senders sit on LumisReach’s approved A2P 10DLC campaign, so the first message is registered traffic rather than filtered traffic.
  • Everything the conversation produces is yours. Call records, recordings, transcripts, messages and contacts are written into your workspace, scoped to your organization like any other data.
  • Replies come back to us, not to you. A shared number cannot ring your phone. When someone needs to be able to call or text you back, provision your own number with POST /v1/quick/ai-numbers.

Daily limits

Carriers flag a number that places too many calls in a day, and a flagged shared number would degrade every account using the pool. So each shared number has a daily ceiling, and the pool spreads work to stay under it:
  • Calls: up to 75 per number per day once the number is warmed up. A number bought in the last week is held to 15/day and 40/day in its second week, the same ramp outbound campaigns use.
  • Texts: up to 500 outbound messages per number per day.
  • Selection: each leg draws a number at random from those that still have room, weighted by how much room is left, so traffic self-levels instead of piling onto one number.
A number at its ceiling is not used again until the next day — including for a retry that comes due after the number filled up. If the whole pool is exhausted, the request returns 409 with Every shared LumisReach … number has reached its daily volume limit; destinations a job could not cover are recorded with end_reason: "shared_pool_daily_limit" rather than dropped. Provision your own number with POST /v1/quick/ai-numbers when you need volume beyond what the shared pool allows.

Pricing

Quick actions are priced per action and charged to the wallet of the organization that owns the API key you authenticate with. They do not draw down plan-included minutes or messages — the shared sender carries no line fee, so the usage is billed à la carte.
The 0.20callfeeischargedwhenthecallisplaced,notwhenitisansweredandeachretryisanewplacedcall.Ajobwithretryattempts:2thatneverreachesanyonecosts0.20 call fee is charged when the call is **placed**, not when it is answered — and each retry is a new placed call. A job with `retry_attempts: 2` that never reaches anyone costs 0.60. Talk time is billed by the second at the per-minute rate. For texts, only outbound messages are billed; replies from the recipient are free.
If the wallet balance runs out mid-job, auto-recharge fires if it is enabled on the account; otherwise the account pauses and remaining attempts stop. Check your balance and top-up settings under Settings → Billing.

Place an AI call

The response returns as soon as the first attempt is dialing. Retries are automatic: if a number rings out, goes to voicemail, or is busy, the agent tries again after retry_delay_minutes until retry_attempts is exhausted.

What you can configure

Send AI text messages

Omit first_message and the agent writes the opener from the goal. After that it answers each reply on its own until the goal is met, max_messages outbound messages have been sent, the recipient goes quiet for conversation_timeout_hours, or they text STOP.
STOP is honored automatically and the thread ends immediately. Opt-out language is appended to the first message to a new recipient. Text only people who have agreed to hear from you — the shared sender carries LumisReach’s 10DLC registration, and a complaint against it affects every account using it.

Check on a job

Both kinds of job report through the same endpoint.
A target’s status is one of pending, in_progress, completed, no_answer, failed, opted_out or canceled. While a call is live, live_call_status reports what the call itself is doing (ringing, in_progress, …) so polling shows the call as it happens. end_reason explains how a finished target ended: answered, goal_achieved, voicemail, max_attempts, max_messages, opted_out, canceled, shared_pool_daily_limit, or the provider’s error text. from_number is the shared number that particular destination was reached from. To stop a job early, POST /v1/quick/actions/{id}/cancel. Remaining dials and AI replies stop; a call that is already connected is allowed to finish.

Buy a number with an AI agent

When people need to reach you — an inbound line, a number on a listing, a callback number — buy one and configure its agent in the same request:
handle_calls (default true) controls whether the AI answers inbound calls. handle_texts (default false) puts the same agent on inbound SMS for that number. Provisioning is asynchronous — poll until it reports ready:
status moves provisioningready, or failed if the number could not be wired up. While it is provisioning, phone_number is null; once it is ready, the number is live and answering.

Authentication

Quick Agent Actions use the same Bearer API key as the rest of the v1 API. A key created under Settings → Developer API works on every endpoint on this page with no extra configuration. See Authentication.

Using these from an AI agent

Every action on this page is also exposed as a tool on the LumisReach MCP server, so an agent can call, text, and provision numbers without you writing HTTP glue. See MCP server.