Resource Reference
These are the configuration resources: the objects you create and edit to configure SIP.IO, defined by the data model. This page is the field-level reference.
Most of these resources now have a full /v1 CRUD surface (GET/POST/PATCH/DELETE, scoped auth, idempotency, pagination where relevant); the real endpoint is noted at the end of each section. A few narrower resources (SIP domains, call forwards, trunks, outbound routes, number transforms, policies) are still schema-only, config-managed rather than /v1-exposed, flagged individually below.
Conventions: booleans are 0/1; time is epoch seconds; secrets are the key-value store references (*_secret_ref); every tenant row carries account_id.
account
Section titled “account”The tenant. Hierarchical for reseller/white-label.
| Field | Type / values |
|---|---|
parent_id | Reseller parent (null = platform-direct). |
status | active · suspended · closed. |
is_reseller | 0 / 1. |
timezone | IANA (default UTC). |
brand_name, brand_domain | White-label branding. |
max_in, max_out, max_dialer | CAC ceilings. |
default_cid_number | Default outbound caller-ID. |
language | Default prompt language (default en-US). |
voice_gender | male / female. |
tone_country | ISO alpha-2; the call-progress ringback a caller hears (default US). |
recording_retention_days | Call-recording retention: null = 30-day default, 0 = forever, N = N days. |
allow_free_caller_id | 0 / 1. 0 (default) restricts a developer-set click-to-call agent caller-ID to account-owned numbers; 1 allows any free-form number. |
did_default_dest_kind, did_default_dest_id | Where unrouted DIDs land. |
Self-service subset (name, timezone, language, voice_gender, tone_country, recording_retention_days, allow_free_caller_id) is editable via PATCH /v1/account; see Public API. Everything else (status, parent, billing, the wholesale carrier) is admin-only.
sip_domain
Section titled “sip_domain”A realm the account answers on. Fields: domain (unique), is_primary.
Not yet on /v1; managed via admin provisioning today. See SIP domains & realms.
sip_user
Section titled “sip_user”The logical identity / agent.
| Field | Type / values |
|---|---|
username | Extension / SIP user part (unique per account). |
display_name | |
is_agent | 0 / 1. |
out_cid_number, out_cid_name | Outbound presentation. |
max_simultaneous | Per-user concurrency ceiling. |
ring_timeout_sec | Default 25. |
voicemail_id | Default mailbox. |
status | active / disabled. |
GET|POST /v1/users (list / create) · GET|POST|PATCH|DELETE /v1/users/{id} (one user, plus its devices) · GET /v1/users/{id}/devices (scope users). See Public API.
sip_device
Section titled “sip_device”A registering endpoint + credential. See Authentication.
| Field | Type / values |
|---|---|
user_id | Owning user. |
auth_username, realm | Digest identity. |
ha1, ha1b | Digest hashes (never plaintext). |
transport | udp · tcp · tls · wss. |
is_webrtc | 0 / 1. |
status | active / disabled. |
GET|POST /v1/devices (list ?user_id= / create, password → ha1, cleartext never stored) · PATCH|DELETE /v1/devices/{id} (scope users). See Public API.
Inbound number. See Numbers & Extensions.
| Field | Type / values |
|---|---|
e164 | Normalized, no + (unique). |
status | active · disabled · virtual. |
dest_kind | flow·user·extension·ring_group·queue·voicemail·conference·forward·hangup. |
dest_id, dest_xform | Route target id + JSON transform. |
max_channels | Per-DID concurrency cap. |
fax_mode | voice · t38 · passthrough. |
allow_anonymous | 0 / 1. |
schedule_id, closed_dest_*, holiday_dest_* | Business hours. |
GET|POST /v1/numbers (list + route targets / create) · GET|POST|PATCH|DELETE /v1/numbers/{id} (one DID: update route target, fax mode, business hours, or delete) (scope numbers). See Public API.
extension
Section titled “extension”Internal short code. Fields mirror did’s route target + schedule. dest_kind adds feature; digits unique per account.
GET|POST /v1/extensions (list / create) · GET|POST|PATCH|DELETE /v1/extensions/{id} (scope extensions). See Public API.
call_flow
Section titled “call_flow”The versioned node-graph. See Call Flows.
| Field | Type / values |
|---|---|
name | |
version | Bumped on publish. |
is_published | 0 / 1 (router loads published only). |
graph | JSON { nodes, edges }. |
GET|POST /v1/flows (list / create-or-update; publish: true is lint-gated, a failing lint returns 422 instead of publishing) · GET /v1/flows/{id} (the flow, its graph, and a fresh lint result) (scope flows). See Public API.
ring_group / ring_group_member
Section titled “ring_group / ring_group_member”See Ring Groups.
- ring_group:
strategy(ring_all·sequential·round_robin),ring_timeout_sec,moh_media_id,exit_dest_*,schedule_id+ overrides. - ring_group_member:
user_idordevice_id,position,delay_sec,timeout_sec.
GET|POST /v1/ring-groups (list / create, members replace as a set on each write) · GET|POST|PATCH|DELETE /v1/ring-groups/{id} (scope ringgroups). See Public API.
queue / agent_queue_assignment
Section titled “queue / agent_queue_assignment”See Queues & ACD.
| Field | Type / values |
|---|---|
strategy | ring_all·longest_idle·round_robin·top_down·fewest_calls·random·sequential. |
agent_ring_timeout_sec | Default 20. |
max_wait_sec | Caller max hold. |
wrap_up_sec | Default 0. |
max_no_answer | Auto-pause threshold (0 = off). |
announce_position, announce_first_sec, announce_interval_sec | Announcements. |
moh_mode | stream / file. |
language | Announcement language override. |
timeout_dest_*, abandon_dest_*, no_agents_dest_* | In-queue exits. |
max_queued, queue_full_dest_* | Queue-full deflect at capacity. |
ewt_threshold_sec, ewt_aht_sec, ewt_dest_* | Estimated-wait deflect at join. |
schedule_id, closed_dest_*, holiday_dest_* | Business hours. |
agent_queue_assignment (formerly queue_agent): user_id, tier_level, position, delay_sec, mode (static·dynamic·mandatory·supervisor_managed).
in_queue_option (DTMF on hold; see In-Queue Options): queue_id, digit (0–9·*·#), action (route·webhook·deflect·hangup), dest_kind/dest_id, webhook_url, webhook_secret_ref, stay_in_queue, prompt_media_id, label.
GET|POST /v1/queues (list + rolling KPIs ?since= / create) · GET|POST|PATCH|DELETE /v1/queues/{id} (one queue, members, options) · GET|POST /v1/queues/{id}/members (membership) (scope queues). See Public API.
voicemail / conference / forward
Section titled “voicemail / conference / forward”- voicemail:
greeting_media_id,skip_instructions,quota_mb,notify_email,pin_secret_ref. - conference:
pin_secret_ref,admin_pin_secret_ref,max_members,moh_media_id,record. - forward:
number,trigger(always·busy·no_answer·unreachable),timeout_sec,cid_mode(passthrough·did·custom),cid_number,confirm(press-1 screening),overflow_dest_kind/overflow_dest_id. See Call Forwarding.
voicemail: GET|POST /v1/voicemails (list / create-or-update, PIN → SECRETS) · GET|POST|PATCH|DELETE /v1/voicemails/{id} · GET /v1/voicemails/mwi (message-waiting summary) · GET /v1/voicemails/{id}/messages (the box’s messages, newest first) (scope voicemail). conference: GET|POST /v1/conferences (list / create-or-update) · GET|POST|DELETE /v1/conferences/{id} (scope conferences). forward: not yet on /v1, config-managed today. See Public API.
time_schedule / time_schedule_rule
Section titled “time_schedule / time_schedule_rule”See Business Hours.
- time_schedule:
name,timezone(null = inherit account). - time_schedule_rule:
kind(weekly·date·date_range),dow(0–6),start_time/end_time(HH:MM),start_date/end_date(YYYY-MM-DD),is_closed.
GET|POST /v1/schedules (list / create-or-update, rules replace as a set on each write) · GET|POST|PATCH|DELETE /v1/schedules/{id} (scope schedules). See Public API.
Trunks & outbound: sip_trunk / sip_trunk_acl / outbound_route / number_transform
Section titled “Trunks & outbound: sip_trunk / sip_trunk_acl / outbound_route / number_transform”- sip_trunk (formerly
customer_trunk):name,provider(generic·carrier),role(carrier·pbx),direction(inbound·outbound·both),proxy,transport(udp·tcp·tls),do_register,auth_username,auth_secret_ref,realm,from_domain,from_user,expire_sec,inbound_auth(ip·register·digest),inbound_username,inbound_secret_ref,reg_node,max_channels,cid_number,ping_sec,status. - sip_trunk_acl:
trunk_id,cidr(allow-listed source IPs forinbound_auth='ip'). - outbound_route:
match_prefix,match_country,via(carrier·trunk),trunk_id,priority. - number_transform:
scope_kind(account·trunk·did·route),direction(inbound_dst·inbound_cid·outbound_dst·outbound_cid),match_regex,replacement,ordering,stop_on_match.
Not yet on /v1; config-managed today. See Trunks, Outbound & PSTN.
Policies
Section titled “Policies”Shared (scope_kind, scope_id) shape. See Concurrency & Outbound.
- call_limit:
scope_kind(account·user·did·number),direction(in·out·dialer·any),period_sec,max_count,hard. - caller_id_rule:
scope_kind,match_country,cid_number,cid_name,priority. - acl_rule:
rule_type(ip_allow·ip_deny·geo_allow·geo_deny),value(CIDR or ISO-2). - recording_rule:
direction,mode(off·on·on_demand),stereo. - phone_list / phone_list_entry:
kind(dnc_out·dnc_in·dnr·allow) + E.164 entries. - geo_policy / geo_policy_country:
mode(allowlist·denylist) + countries.
Not yet on /v1; config-managed today.
media_file / media_playlist
Section titled “media_file / media_playlist”See Media & TTS.
- media_file:
kind(prompt·moh·greeting·announcement),object_key,format,duration_ms. - media_playlist / media_playlist_item: ordered media sets.
GET|POST /v1/media (list ?kind= / upload — raw audio body + ?name=&kind=&format=) · GET|DELETE /v1/media/{id} (plus /play, /download streamed from storage) (scope media). See Public API.
transcript
Section titled “transcript”A recording’s transcribed text and AI summary. See Call Transcription & AI Summarization.
- transcript: one row per recording (unique on
recording_id);text,language,summary,summary_data(sentiment,key_points,action_items,disposition,topics),cost_micro. Word/channel/speaker-level detail is stored separately and fetched on request.
POST /v1/recordings/{id}/transcribe, /summarize · GET /v1/recordings/{id}/transcript · GET /v1/transcripts · POST /v1/transcripts/batch · GET|PUT|DELETE /v1/transcription/config (bring your own provider) (scope recordings). See Public API.
agent_team
Section titled “agent_team”Groups agents for reporting rollups. See Agent KPIs.
- agent_team:
name; members aresip_userrows tagged with ateam_id.
GET|POST /v1/agent-teams, /{id} (scope reports). See Public API.