Vocatech

Start

Quickstart

Written beside the API’s code, and read from it every hour.

Plain text

Three steps take you from nothing to today's calls.

1Get a key

In the Vocatech portal, open your company and go to the Integrations page. Under Portal Public API, press Generate and copy the key. This is your main key, and it reaches every route. For texting only, make an API Messaging key instead.

Put the key in an environment variable. The Node, Python and PHP examples in this guide use the small vt() helper below: save it next to your code. curl needs nothing else.

# Put the key in the environment once. Every curl example reads it from there.
export VOCATECH_API_KEY="paste-your-key-here"

# That is all curl needs.

The Node examples are ES modules: save them as .mjs files and run them with Node 18 or newer.

2Check the connection

GET /v1/whoami answers with your company id and the address the API sees you calling from. Every key may call it.

curl https://api.vocatech.com/v1/whoami \
  -H "Authorization: Bearer $VOCATECH_API_KEY"
Response200 OK
{
  "client_ip": "203.0.113.24",
  "forwarded_for": ["203.0.113.24"],
  "company_id": 1234567890,
  "ip_restricted": false,
  "allowed_ips": []
}

If you plan to lock the key to your server's address, client_ip is the address to allow. See IP allow-list.

3Pull today's calls

GET /v1/calls with no dates returns today, in New York time. Each call carries its journey: every menu, group and person it reached, with the AI summary, the transcript and a recording link when there is one.

# No dates: today, in New York time
curl https://api.vocatech.com/v1/calls \
  -H "Authorization: Bearer $VOCATECH_API_KEY"

# One day, in your own time zone
curl "https://api.vocatech.com/v1/calls?start_date=2026-09-23&end_date=2026-09-23&timezone=America/Chicago" \
  -H "Authorization: Bearer $VOCATECH_API_KEY"
Response200 OK
{
  "query": {
    "company_id": 1234567890,
    "start_date": "2026-09-24",
    "end_date": "2026-09-24",
    "direction": "any",
    "status": "any",
    "search": "",
    "timezone": "America/New_York"
  },
  "calls": [
    {
      "call_id": "8a1f3c2e-5b7d-4e9a-9c1b-2d4e6f8a0b1c",
      "direction": "incoming",
      "status": "answered",
      "extension": "104",
      "extension_name": "Maya Chen",
      "remote_name": "Jordan Reyes",
      "remote_number": "7185550142",
      "group_number": "7185550100",
      "start_time": "2026-09-24T13:02:11.000Z",
      "end_time": "2026-09-24T13:06:49.000Z",
      "duration": 278,
      "journey": [
        {
          "order": 1,
          "type": "auto_attendant",
          "extension_name": "Main Menu",
          "extension": "900",
          "start_time": "2026-09-24T13:02:11.000Z",
          "end_time": "2026-09-24T13:02:24.000Z",
          "duration": 13,
          "summary": null,
          "transcription": null,
          "recording_url": null,
          "recordings": []
        },
        {
          "order": 2,
          "type": "user",
          "extension_name": "Maya Chen",
          "extension": "104",
          "start_time": "2026-09-24T13:02:24.000Z",
          "end_time": "2026-09-24T13:06:49.000Z",
          "duration": 265,
          "summary": "Jordan asked to move the Thursday visit to Friday morning. Maya booked Friday at 9 AM.",
          "transcription": "Maya: Good morning, how can I help?\nJordan: Hi, I need to move my Thursday visit.\nMaya: Sure. Friday at 9 AM works.",
          "recording_url": "https://api.vocatech.com/v1/media/rec_58213407",
          "recordings": [
            {
              "part": 1,
              "parts": 1,
              "recording_id": 10592210,
              "start_time": "2026-09-24T13:02:25.000Z",
              "duration": 264,
              "url": "https://api.vocatech.com/v1/media/rec_58213407?part=1"
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "page": 1,
    "limit": 500,
    "total_pages": 1,
    "total_calls": 1
  }
}

Next, walk every page and download the recordings in Pull today's calls, or have events pushed to you in Receive webhooks.