REST API · v1

Your phone system
has an API.

Send texts, read calls with their recordings and transcripts, keep contacts in sync, and hear about every call the moment it happens. Plain HTTPS and JSON.

Included on Scale.

curl https://api.ringhouse.app/v1/messages \
  -H "Authorization: Bearer rh_live_••••••••" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+12125550142",
    "to": "+12125550178",
    "text": "Your order is on its way."
  }'
200 OK· 142 ms
{
  "id": "5f0c2a9e-7d41-4b6a-9c1e-2f8d3b7a6e10",
  "status": "queued",
  "direction": "outbound",
  "from": "+12125550142",
  "to": "+12125550178",
  "text": "Your order is on its way.",
  "createdAt": "2026-10-03T19:42:07Z"
}
46

endpoints under one base URL

14

webhook events, each one signed

20 / s

reads per key, counted in the headers

27 h

of retries before a webhook stops

Four things people build first.

Each one is a request or two.

01

Text customers from your own system

An order ships, a booking is confirmed, an invoice is due: the text goes out from your business number.

POST /v1/messages
02

Text back every missed call

Hear about the missed call and reply before they ring someone else.

call.missed
→POST /v1/messages
03

Log every call in your CRM

When a call ends, file it with its recording, transcript and AI summary.

call.summary.completed
→GET /v1/calls/{id}/summary
04

Keep the receptionist up to date

Change your hours or prices in one place, and the AI receptionist answers from the new words.

PATCH /v1/knowledge-sources/{id}

Everything in the app, as a resource.

Ten resources and forty-six endpoints under api.ringhouse.app/v1.

/messages

Send a text, list them, read one.

GETPOST
/calls

Calls with their recording, transcript and summary.

GET
/conversations

Phone threads, and moving one to done.

GETPOST
/contacts

The address book the whole team shares.

GETPOSTPATCH
/numbers

Your lines and what each one can do.

GET
/users

Everyone in the workspace.

GET
/receptionists

Prompt, greetings, skills and sources.

GETPOSTPATCHDEL
/knowledge-sources

What the receptionist answers from.

GETPOSTPATCHDEL
/search

Summaries, transcripts, texts and notes.

GET
/webhooks

Subscriptions, deliveries and retries.

GETPOSTPATCHDEL

Hear about it the moment it happens.

We POST each event to your HTTPS endpoint as it happens, signed.

Signed

Standard Webhooks signatures, so any of its libraries can verify them.

Retried for about a day

A failed delivery is tried again for about 27 hours before the webhook stops.

A log you can replay

See every delivery and what your server answered, and send any one again.

One call, as your endpoint hears itexample.com/hooks/ringhouse
19:42:07call.ringing20084 ms
19:42:11call.answered20071 ms
19:46:23call.completed20092 ms
19:46:31call.recording.completed20088 ms
19:46:58call.transcript.completed20079 ms
19:47:04call.summary.completed20095 ms

Safe to hand to a script.

A key does what you allow it to, and tells you how much room it has left.

Authorization: Bearer rh_live_••••

Keys belong to the workspace

Create one in Settings → API. It is shown once, and it keeps working when the person who made it leaves.

messages:write calls:read

Scoped from the start

Each key gets only the scopes you pick. A request outside them is refused, never half-answered.

X-RateLimit-Remaining: 19

Limits on every response

Twenty reads and five sends a second, with what is left in the headers of each reply.

Rather ask than code?

The same API is an MCP server, so Claude can read your calls and send texts for you.

See MCP

Questions about the API

Scale. API keys and webhooks both come with it.

No. The API is plain HTTPS and JSON, and every example in the docs is a request you can copy.

No. It reads calls, with their recordings, transcripts and summaries. Calls are placed from the apps.

Fourteen events: a text received, delivered or failed; each stage of a call; its recording, voicemail, transcript and summary being ready; and contacts being added, changed or removed.

Twenty reads and five sends a second per key. Every response says how much is left, and a 429 says how long to wait.

Yes. Its prompt, greetings and skills, and the knowledge sources it answers from.

Your phone system,
in your own code.

The API and webhooks come with Scale.