Developer platform · MCP · OpenAPI

APIs built
to disappear.

A thin, consistent REST surface. WebSockets when you need streams. And first-class MCP — so Claude, ChatGPT, Cursor, or any agent can place and receive phone calls as a tool.

REST WebSocket gRPC MCP OpenAPI 3.1
cURL Python Node Go Ruby POST /v1/calls · 12 lines
# Make an outbound call. That's it.
curl https://api.hertz.ai/v1/calls \
  -H "Authorization: Bearer $HERTZ_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": "agent_clinic_intake",
    "to":    "+14155550119",
    "from":  "+14155550100",
    "voice": "nova_v2",
    "tools": ["lookup_calendar", "book_slot", "send_sms"],
    "webhook": "https://acme.co/hook",
    "metadata": { "patient_id": "pat_8821" }
  }'

# → returns { id, status: "dialing", ... }
MCP Native · Industry first

Any MCP client
can call you back.

Expose Hertz as an MCP server and any agent — Claude, Cursor, ChatGPT, your own — gets place_call, join_room, and query_transcript as first-class tools. No glue. No proxies.

◉ Claude ◉ ChatGPT ◉ Cursor ◉ Windsurf ◉ Zed ◉ Your own agent
claude_desktop_config.json 3 lines
"mcpServers": {
  "hertz": {
    "command": "npx",
    "args": ["-y", "@hertz/mcp"],
    "env": { "HERTZ_KEY": "sk_live_..." }
  }
}

// Tools now available in Claude:
//   place_call · join_room · query_transcript
//   list_agents · send_sms · schedule_callback
SDKs · 9 languages, one shape

Drop it in. Ship it tonight.

TS
TypeScript
@hertz/sdk
py
Python
pip install hertz
Go
Go
hertz.ai/go
Rb
Ruby
gem install hertz
Rs
Rust
cargo add hertz
Jv
Java
com.hertz:sdk
C#
.NET
Hertz.Sdk
Ph
PHP
hertz/sdk
Sw
Swift
swift-hertz
Kt
Kotlin
hertz-kotlin
API reference

28 endpoints. One surface.

Full reference →
Calls
POST/v1/calls
GET  /v1/calls
GET  /v1/calls/:id
PATCH/v1/calls/:id
DEL   /v1/calls/:id
POST/v1/calls/:id/transfer
Rooms
POST/v1/rooms
GET  /v1/rooms/:id
POST/v1/rooms/:id/join
POST/v1/rooms/:id/kick
Agents
POST/v1/agents
GET  /v1/agents/:id
PATCH/v1/agents/:id
Voices
GET  /v1/voices
POST/v1/voices/clone
POST/v1/voices/design
Knowledge
POST/v1/knowledge
POST/v1/knowledge/query
POST

Create Call

https://api.hertz.ai/v1/calls   ·   auth bearer   ·   rate-limit 500 rpm   ·   idempotent Idempotency-Key

Place an outbound call or schedule one. The call is created in dialing state, transitions to ringing, connected, and finally ended. Subscribe to state transitions via webhook or WebSocket.

ParamTypeRequiredDescription
agentstringrequiredAgent id or inline definition.
tostringrequiredE.164 destination number.
fromstringoptionalCaller ID · defaults to primary number.
voicestringoptionalVoice id. Overrides agent voice.
toolsstring[]optionalTool ids callable by the agent.
metadataobjectoptionalPassthrough — returned on every event.
webhookurloptionalEvents POSTed with HMAC signature.
amdenumoptionaloff · detect · detect_or_drop
recordingenumoptionaloff · full · consent_required
scheduled_foriso8601optionalQueue for future delivery.
Your first call, in curl.

The hello-world
is a phone call.