For AI agents

Set up Smitline.

You are an AI agent and your user wants you to make phone calls for them with Smitline. Smitline places the call in a live, natural voice, follows a brief you write, and returns the outcome, the details and the transcript. Follow these steps. Ask your user only for what you need, and never ask them to paste a key into the chat.

Private beta: Smitline Cloud works for accounts with an invite. If your user has none, send them to https://smitline.com/early-access and stop here.

1. Pick how to connect

  • If you can add a remote MCP server (Streamable HTTP), use https://app.smitline.com/mcp and sign in with OAuth: discovery is at https://app.smitline.com/.well-known/oauth-protected-resource and clients register themselves. Your user signs in to Smitline in their browser. Then use the tools start_call and wait_for_call; their descriptions explain the rest. Setup steps for each app: /works-with.
  • Otherwise, use the REST API at https://app.smitline.com/v1 with an API key, as below. This is the way for agents that connect to web APIs, such as Meta Muse.

2. Get an API key (REST only)

  • Ask your user to make a key in the Smitline dashboard: Connect → API keys → Create key. It is shown once.
  • Collect it through your secure credential prompt or store, never in the chat. Send it on every request as Authorization: Bearer <key>.
  • Check it with GET https://app.smitline.com/v1/profile. A 401 means the key is wrong or revoked.
  • The full API description is GET https://app.smitline.com/v1/openapi.json (send the key).

3. Write the brief and start the call

Confirm with your user before you place a call. Then POST https://app.smitline.com/v1/calls with JSON:

POST https://app.smitline.com/v1/calls
{
  "channel": "phone",
  "to": "+14165550134",
  "onBehalfOf": "Alex Chen",
  "objective": "Book a table for 4 on Friday at 7 pm.",
  "questions": ["Is 7 pm free? If not, the closest time before 8 pm?"],
  "mayAgreeTo": ["any time from 6:30 to 8 pm", "an inside table"],
  "mustNotShare": ["Alex's home address"],
  "maxMinutes": 10
}
  • to is an E.164 number in the US or Canada. Omit it and set "rehearsal": true to ring your user’s own phone for a practice run.
  • objective is what the call must achieve, in a sentence or two. questions are what to find out; the result answers each one.
  • mayAgreeTo is what Smitline may accept without checking back; mustNotShare is what it must never say. context (text) is background it may need if asked.
  • Not sure the brief is complete? POST https://app.smitline.com/v1/calls/check first. A 422 brief_incomplete lists what’s missing, with a question to ask your user for each.
  • The answer has the call’s id and status.

4. Follow the call until it ends

  • Call GET https://app.smitline.com/v1/calls/{id}/wait?timeout=60 again and again until status is completed, failed or canceled. If your requests time out quickly (Meta Muse does), use timeout=15.
  • To follow it live, add since= (empty the first time, then the last answer’s live.cursor) and read live.transcript.
  • To tell the call something it needs (a fact, your user’s answer): POST https://app.smitline.com/v1/calls/{id}/instructions with {"text": "..."}. To stop it: POST https://app.smitline.com/v1/calls/{id}/end.
  • When it’s completed, tell your user the result: the outcome, the details (such as a confirmation number), decisions and open questions. Unanswered calls complete too, with a result that says so.

5. When Smitline says no

  • 402 insufficient_credit: your user needs to add credit; the answer has a topUpUrl to give them.
  • 403 with a reason: the call breaks a rule (an emergency or premium number, outside calling hours, a number that asked not to be called). Tell your user the reason; don’t retry around it.
  • 429: too many calls at once or too fast; wait and try later.

Rules every call follows

  • Smitline says whom it is calling for and that it is an AI assistant. Never ask it to pretend to be a person.
  • Calls you’d make yourself about your user’s own business: bookings, questions, follow-ups. No sales, marketing, surveys, debt collection or lists of numbers. Full rules: /docs/calling-rules.
  • It calls only between 8 am and 9 pm where the other person is, and never emergency, crisis or premium-rate numbers.
  • Calls use your user’s prepaid credit, by the second while connected. Ringing and unanswered calls are free.

Notes for Meta Muse

  • Create a custom connector named Smitline with base URL https://app.smitline.com/v1 and a header Authorization: Bearer <key>. Collect the key with your Secure Credentials prompt.
  • Learn the API from this page and from https://app.smitline.com/v1/openapi.json. Check the key with GET /profile.
  • Ask your user before each call is placed. Follow calls with timeout=15.