HaRoshemet API documentation

Every call your business line records - with its Hebrew transcript and AI summary - delivered to your systems by webhook, or fetched on demand. Included in every plan.

Calls, transcriptions and summaries for your HaRoshemet account.

Authenticate every request with your API key in the x-api-key header.

Getting call data: HaRoshemet pushes each call to your webhook URL as it progresses (see the Webhooks section below), and GET /api/v1/call/{call_id} returns the current state of any call whenever you ask.

Where the calls go

Customers already push HaRoshemet calls into monday.com, HubSpot, Arbox and Surense. Any other system connects either straight to this API or through Zapier or Make, which needs no code. See CRM integration.

Authentication

Send your API key in the x-api-key header on every request. Your key is in the app, under Settings, and you can rotate it there. All traffic is HTTPS.

Quickstart

# 1. Who am I?
curl https://api.haro.co.il/api/v1/me -H "x-api-key: $HARO_API_KEY"

# 2. Find or create a customer by phone number
curl -X POST https://api.haro.co.il/api/v1/customer \
  -H "x-api-key: $HARO_API_KEY" -H "Content-Type: application/json" \
  -d '{"phone": "+972501234567", "name": "Yossi Levi"}'

# 3. Fetch a call (id comes from the webhook)
curl https://api.haro.co.il/api/v1/call/{call_id} -H "x-api-key: $HARO_API_KEY"

Most integrations never poll: we set a webhook URL on your account (email dev@haro.co.il to have it enabled) and HaRoshemet pushes every call to you (see below).

Endpoints

GET /api/v1/me - Get authenticated user details

Returns a filtered public profile for the user identified by x-api-key.

POST /api/v1/customer - Find or create a customer

Request body: ApiCustomer (see Schemas).

GET /api/v1/call/{call_id} - Get call details by call ID

Retrieve a call by its call_id (GCP calls.id UUID). Use the same call_id delivered in the user webhook ApiCall payload.

Webhook

callUpdate - Call update

HaRoshemet POSTs a JSON ApiCall snapshot to the webhook URL configured on your account, once per event in a call's life. Every payload carries the full current state of the call, so you never need to merge - the latest one wins. Read call_id from it and, if you want the state later, GET /api/v1/call/{call_id}.

Events, in the order they happen:

# When What is new in the payload
1 The call ends status, duration, is_missed, the numbers and the time. No text yet.
2 The transcription is ready - usually within a minute transcription
3 A summary is ready - a minute or two after the transcription detailed_summary and/or summary (see below)

A call always produces events 1 and 2 (a missed or unanswered call has no transcription and stops at 1). Event 3 arrives once per summary that gets produced, so a call can trigger it twice, once or not at all.

The two summaries:

Delivery: one POST per event, Content-Type: application/json, no retries. Respond with any 2xx quickly; do your processing after you have responded. Deliveries are logged on our side with your response status, so a failing endpoint can be diagnosed.

Ordering: events are sent as they happen and normally arrive in order, but treat each payload as the whole truth rather than as a delta - a late event 2 must not overwrite a summary you already have from event 3; the payload of event 3 contains the transcription too.

Payload: ApiCall (see Schemas).

Schemas

User

Field Type Description
id string (uuid) User UUID (users.id).
name string Display name.
phone_number string Primary phone number (E.164 when available).
recorder_phone_number string Recorder / secondary phone number, if configured.
user_status string Account status (e.g. active).

ApiCustomer

Field Type Description
Name string required. The customer's name.
Phone string required. The customer's phone number.
Notes string Optional notes about the customer.
name_prefix string Optional prefix for the customer's name.

CustomerIdResponse

Field Type Description
customerId string GCP Postgres customer UUID (found or created).

ApiCall

Field Type Description
call_id string (uuid) Unique call ID (calls.id). Use this to fetch call details via GET /api/v1/call/{call_id}.
user_id string (uuid) Owning user ID (users.id).
transcription string The transcription of the call.
summary string Task extraction - the action items from the call. Produced when the user says their trigger word (by default "רשמתי") during the call, or asks for tasks in the app.
detailed_summary string Auto summary - a narrative of what was said. Produced automatically for every real conversation, a minute or two after the transcription; very short and missed calls are not summarized. A call can carry either summary, both, or neither. See Webhooks.
status string - Ringing / Ended / Answered The status of the call.
number_from string The calling phone number.
number_to string The receiving phone number.
date string (date-time) The date and time of the call.
duration number The duration of the call in seconds.
is_missed boolean Whether the call was missed.

Interactive reference

The same specification as Swagger UI: https://api.haro.co.il/api/docs · raw OpenAPI: /api/openapi.json.

Getting a key

API access is included in every plan. Your API key is in the app, under Settings - copy it from there and you can start calling the API right away.

To receive webhooks, email dev@haro.co.il with the URL you want the calls pushed to, and we'll enable it on your account.

Sign up online

Pick a plan and start - no call to wait for

Signing up takes a minute and the service starts working right away.
Not sure which plan fits? Message us on WhatsApp and we'll help you choose.