# EMAK Telecom API Documentation > The EMAK Telecom REST API lets you automate your business phone system: users, extensions, numbers, call routing, SMS, fax, recordings, webhooks and billing. Append .md to any documentation page URL to get its markdown version. ## API Reference - [EMAK Telecom API overview](https://docs.emak.tech/reference/overview.md): Manage your EMAK Telecom business phone system from your own software: users, extensions, numbers, call routing, SMS, fax, recordings, webhooks, CRM sync and billing. - [Authentication](https://docs.emak.tech/reference/api-authentication.md): How to create, use, and revoke an EMAK Telecom API key. - [List accounts](https://docs.emak.tech/reference/get_domains.md): Returns the account records your API key can read — ordinarily just your own — ordered by domain name. `fields` replaces the default selection, and `enabled_only=true` drops disabled accounts. The… - [Fetch an account](https://docs.emak.tech/reference/get_domains-domainid.md): Returns your account record, as an array containing a single object rather than a bare object; an ID that matches nothing returns `[]`. The record is assembled from two reads, and if the supplemental… - [Find an account by domain name](https://docs.emak.tech/reference/get_domains_domain_by_name_domain_name.md): Looks an account up by its exact domain name and returns the matching account IDs. The name is matched as given, with no format checking, and a name that matches nothing returns an empty array.… - [List users](https://docs.emak.tech/reference/getusers.md): Returns the people on your account. `enabled` filters by whether the account is active, and `with_extension=true` adds each person's primary extension. Requires an API key with the Admin role: a key… - [Create a user](https://docs.emak.tech/reference/post_users.md): Creates a person on your account — disabled to begin with — together with their group, extension and account assignments and their language and timezone settings, then emails them a link that lets… - [Fetch a user](https://docs.emak.tech/reference/fetchuser.md): Returns one person on your account, as an array containing a single object rather than a bare object; no match returns `[]`. An API key with the User role may only request its own ID — which is the… - [Update a user](https://docs.emak.tech/reference/patch_users_id.md): Updates either a person's account record (`target: "user"`) or their own profile (`target: "profile"`); the two branches accept different fields, and a `target` that is neither answers 200 without… - [Delete a user](https://docs.emak.tech/reference/delete_users_id.md): Removes a person from your account, along with their settings, groups, extension assignments, faxes, email-to-fax entries and account assignments. The stages run in sequence and are not… - [List a user's extensions](https://docs.emak.tech/reference/get_users_permissions_user_extensions_userid.md): Returns the extensions assigned to one person on your account; a person with none returns an empty array. An API key with the User role may only ask about its own ID — which is the key itself, not… - [List a user's groups](https://docs.emak.tech/reference/get_users_permissions_user_groups_userid.md): Returns the groups one person on your account belongs to. There is no 404: a person with no groups, or no such person, returns an empty array. An API key with the User role may only ask about its own… - [List a user's settings](https://docs.emak.tech/reference/get_users_permissions_user_settings_userid.md): Returns one person's stored settings. There is no 404: a person with no settings, or no such person, returns an empty array. An API key with the User role may only ask about its own ID — which is the… - [List groups](https://docs.emak.tech/reference/get_groups.md): Returns the permission groups a user can belong to: Members, Admins and Owners. The list is fixed and the same for every account — it is a catalog of roles, not a membership query, so a role nobody… - [List numbers](https://docs.emak.tech/reference/get_numbers.md): Returns every phone number on your account, ordered by number ascending. Per-number access grants are not applied here, so numbers you have not been granted access to are still listed.… - [Fetch a number](https://docs.emak.tech/reference/get_numbers_phonenumberid.md): Returns one phone number exactly as stored, without the renaming and type conversion the list endpoint applies — `enabled` and `destination_record` come back here as strings that may be null, not… - [Update a number](https://docs.emak.tech/reference/patch_numbers_phonenumberid.md): Updates a phone number's routing and settings; fields you omit keep their current values. Routing changes regenerate and reload the number's routing, and sending `destination_actions` at all — even… - [List number access](https://docs.emak.tech/reference/get_numbers_phonenumberid_access.md): Returns who can use a phone number: groups first, then users, with owners listed before members in each. Disabled user accounts are left out. An Admin key can read the access list for any number on… - [Grant number access](https://docs.emak.tech/reference/post_numbers_phonenumberid_access.md): Grants a user or group access to a phone number, as a `member` unless you ask for `owner`. Because a number must always have an owner, adding the first grant can also create one — possibly making the… - [Update number access](https://docs.emak.tech/reference/patch_numbers_phonenumberid_access.md): Changes an existing grant's role between `owner` and `member`. The principal must already have a grant on the number — use `POST` to add one. A number must always keep at least one owner, so demoting… - [Revoke number access](https://docs.emak.tech/reference/delete_numbers_phonenumberid_access.md): Removes a user's or group's access grant on a phone number. A number must always keep at least one owner, so removing the last one is refused with 409. Removing a grant that does not exist still… - [Search available local numbers](https://docs.emak.tech/reference/post_numbers_available_local.md): Searches for local numbers you can order and saves the results so `POST /api/v1/numbers/orders` can order one — a number must come from a search before it can be ordered. Every filter is optional and… - [Search available toll-free numbers](https://docs.emak.tech/reference/post_numbers_available_toll_free.md): Searches for toll-free numbers you can order and saves the results so `POST /api/v1/numbers/orders` can order one. `tollFreePattern` both narrows the search and highlights the matching digits in the… - [Submit a number inquiry](https://docs.emak.tech/reference/post_numbers_inquiry.md): Emails our support team asking about a specific phone number, together with the identity your API key authenticated as. It does not order, reserve or check availability for the number — use the… - [Order a number](https://docs.emak.tech/reference/post_numbers_orders.md): Orders a phone number returned by a recent availability search and starts billing for it. **This spends money and cannot be undone through this API** — to stop paying for an ordered number,… - [List transfer requests](https://docs.emak.tech/reference/get_numbers_transfers.md): Lists the requests to transfer numbers in from another carrier on your account, newest first, optionally narrowed by `status`. Number counts, carrier lists and requester avatars are gathered in… - [Create a transfer request](https://docs.emak.tech/reference/post_numbers_transfers.md): Starts a request to transfer numbers in from your current carrier, created with status `requested`. Porting is a multi-day process agreed with the losing carrier: nothing changes on the numbers now,… - [Fetch a transfer request](https://docs.emak.tech/reference/get_numbers_transfers_requestid.md): Returns one transfer request in full, including its numbers, port orders, notes and activity history, plus a temporary download link for the uploaded bill. The related records are read separately, so… - [Send an SMS](https://docs.emak.tech/reference/sendmessage.md): Sends an SMS — or an MMS, when `media` is supplied — from one of your account's phone numbers to one or more recipients. The number in `fromNumber` must be one you have access to; a number you do not… - [List canned responses](https://docs.emak.tech/reference/get_canned-responses.md): Returns the saved reply templates on your account, each with its title, default language and the text recorded for every language it has been written in. Templates that have been deleted are left out. - [Create a canned response](https://docs.emak.tech/reference/post_canned-responses.md): Creates a saved reply template together with its first piece of text: `canned_response_title` and `default_language` are stored on the template, while `message_language`, `message_text` and… - [Fetch a canned response](https://docs.emak.tech/reference/get_canned-responses-cannedresponseid.md): Returns one template (`type=response`) or one of its language entries (`type=text`) as an array of zero or one element, so read it at index `[0]`. An empty array means there is no matching record. A… - [Update a canned response](https://docs.emak.tech/reference/patch_canned-responses-cannedresponseid.md): Updates a template's title and default language, and at the same time either edits one of its language entries or adds a new one. Send `is_new: true` to add an entry; otherwise… - [Delete a canned response](https://docs.emak.tech/reference/delete_canned-responses-cannedresponseid.md): Removes an entire template (`type=response`) or a single language entry within one (`type=text`). Deleting a template is a soft delete — it stops appearing in listings but its text entries are kept —… - [List extensions](https://docs.emak.tech/reference/get_extensions.md): Lists the extensions on your account, ordered by extension number ascending. Only enabled extensions are returned unless you ask for all of them. Each row includes the extension's SIP `password`, so… - [Create an extension](https://docs.emak.tech/reference/post_extensions.md): Creates an extension and, optionally, its voicemail box, device lines and follow-me setup in the same call; a failure in the voicemail step is logged but does not fail the request. The SIP password… - [Fetch an extension](https://docs.emak.tech/reference/get_extensions_extensionid.md): Returns one extension, including its SIP `password`, so treat the response as a credential. The body is an array holding the single extension, not a bare object. - [Update an extension](https://docs.emak.tech/reference/patch_extensions_extensionid.md): Updates an extension in place: only the keys you send are written, so anything you omit keeps its current value. Changing the caller-ID name propagates to the extension's own device line and to the… - [Assign an extension to a user](https://docs.emak.tech/reference/put_extensions_extensionid_assignment.md): Makes one user the extension's sole owner, replacing every existing user link rather than adding to them. Reassigning someone's line is an administrative act, so this requires an API key with the… - [Unassign an extension](https://docs.emak.tech/reference/delete_extensions_extensionid_assignment.md): Vacates the extension by removing every user linked to it. The extension itself stays in place — it is neither deleted nor disabled — so you can hand it to someone else with `PUT… - [Import extensions in bulk](https://docs.emak.tech/reference/post_extensions_import.md): Creates up to 200 extensions in one call, always on your own account. Run `validate` first — it is the only way to see row conflicts and license headroom before anything is written. `commit` is… - [List registrations](https://docs.emak.tech/reference/get_registrations_domain_name.md): Returns the devices currently registered on your account, read live from the phone server that hosts it rather than from stored data, so response time and availability follow that server. One… - [Count registrations](https://docs.emak.tech/reference/get_registrations_domain_name_count.md): Returns how many devices are currently registered on your account, read live from the phone server that hosts it. Authorization and behavior match `GET /api/v1/registrations/{domain_name}`, so use… - [List voicemail boxes](https://docs.emak.tech/reference/get_voicemails.md): Lists the shared voicemail boxes on your account, including their settings — the voicemail password among them. Pass `scope=all` for a minimal list of every mailbox on the account, of any kind, or… - [Create a shared voicemail box](https://docs.emak.tech/reference/post_voicemails.md): Creates a shared voicemail box on an account you administer. Leave `voicemail_id` out and a mailbox number is allocated for you from 2000–2999; a number you choose must not collide with an existing… - [Get a voicemail box](https://docs.emak.tech/reference/get_voicemails_voicemailid.md): Returns a single voicemail box with its settings, including the voicemail password, for both shared and extension-linked mailboxes. A key with the Admin role can read any mailbox on its own account;… - [Update a voicemail box](https://docs.emak.tech/reference/patch_voicemails_voicemailid.md): Updates a voicemail box in place; supported fields you omit keep their current values. `voicemail_options` and `voicemail_destinations` are replaced wholesale by whatever array you send, and an empty… - [Delete a voicemail box](https://docs.emak.tech/reference/delete_voicemails_voicemailid.md): Deletes a voicemail box along with its options, copy destinations, messages and greetings, and removes its stored audio. A mailbox still referenced by a managed call flow is refused with 409, and… - [Reset a voicemail box](https://docs.emak.tech/reference/post_voicemails_voicemailid_reset.md): Clears a voicemail box back to a fresh state: every message and greeting is deleted and the mailbox's stored audio is removed. The mailbox itself survives, keeping its password, other settings,… - [List E911 registrations](https://docs.emak.tech/reference/get_e911_registrations.md): Lists the emergency address registered against each of your numbers, reconciling the addresses you have registered with the numbers actually in use as caller ID. A number with no registered address… - [Register an E911 address](https://docs.emak.tech/reference/post_e911_registrations.md): Registers the physical address emergency services are given when someone calls 911 from `caller_id`. Verify the address before sending it — this is the address dispatchers use to find the caller. The… - [Fetch an E911 registration](https://docs.emak.tech/reference/get_e911_registrations_number.md): Returns the same full list as `GET /api/v1/e911_registrations`: the `{number}` in the path is ignored, so pick out the number you want yourself. Numbers with no registered address come back with… - [Register an E911 address for a number](https://docs.emak.tech/reference/post_e911_registrations_number.md): Registers the emergency address for the number in `caller_id`. The `{number}` in the path is ignored, so the body alone decides which number is registered — check the two agree before sending. This… - [Fetch emergency routing](https://docs.emak.tech/reference/get_emergency_routing.md): Returns whether emergency routing is enabled for your account and the number emergency calls are sent to. An account that has never configured it gets `enabled: false` and an empty… - [Enable emergency routing](https://docs.emak.tech/reference/post_emergency_routing.md): Enables emergency routing for your account and sets the number emergency calls are sent to, then regenerates and reloads the routing so it applies to the next call. The value is stored exactly as… - [Disable emergency routing](https://docs.emak.tech/reference/delete_emergency_routing.md): Turns off emergency call routing for your account and regenerates the routing that carries it, so emergency calls stop following the configured number from the next call onward. The number you set… - [List contacts](https://docs.emak.tech/reference/get_contacts.md): Returns the contacts on your account that your API key is allowed to see. A bare request returns the whole contact book unpaged; supplying `limit` or `search` switches the endpoint into paged mode,… - [Create a contact](https://docs.emak.tech/reference/post_contacts.md): Creates a contact in your account's contact book. The owner, account and source are taken from your API key and cannot be set from the body. The write is not atomic: the contact is stored first and… - [Fetch a contact](https://docs.emak.tech/reference/get_contacts_contactid.md): Returns one contact, as an array containing a single object rather than a bare object. There is no 404: an unknown ID, or a private contact you are not allowed to see, comes back as 200 with `[]`.… - [Update a contact](https://docs.emak.tech/reference/patch_contacts_contactid.md): Updates a contact and returns it. The `contact` object is a true partial update — only the keys you send are written — but `phones`, `emails` and `addresses` are wholesale replacements: any stored… - [Delete a contact](https://docs.emak.tech/reference/delete_contacts_contactid.md): Disables the contact so it disappears from every read, while keeping its phones, emails and addresses so it can be recovered. Its phone-number index entries are removed, so the next inbound call or… - [List who a contact is shared with](https://docs.emak.tech/reference/get_contacts_contactid_sharing.md): Returns the users and inboxes a contact is shared with. You must own the contact or use an API key with the Admin role. - [Share a contact](https://docs.emak.tech/reference/post_contacts_contactid_sharing.md): Shares a contact with one user or one inbox. The `id` you send is stored as given and is not checked against the users and inboxes on your account — only the contact is. The new share's ID is not… - [Stop sharing a contact](https://docs.emak.tech/reference/delete_contacts_contactid_sharing.md): Removes one share from a contact. This DELETE requires a JSON body carrying `sharing_id`. The removal is matched on both the share and the contact, so a `sharing_id` that belongs to a different… - [Add a billing contact](https://docs.emak.tech/reference/post_customer_contacts_billing.md): Adds a billing contact to your account and attaches it to one of your subscriptions. `name` is sanitized and split on its first space into a first and last name, and the contact is filed with the… - [Update a billing contact](https://docs.emak.tech/reference/patch_customer_contacts_billing_contact_person_id.md): Rewrites a billing contact from the body — despite the verb this is not a field-wise patch. `name` is required on every call, even when only the phone number changes, and omitting `email` or `phone`… - [Delete a billing contact](https://docs.emak.tech/reference/delete_customer_contacts_billing_contact_person_id.md): Detaches a billing contact from the subscription and then deletes the contact. Both the contact and the subscription are checked against your account before anything changes. If the final delete… - [Set the primary contact](https://docs.emak.tech/reference/put_customer_contacts_primary.md): Sets the primary contact on your account, updating the existing one or creating it if there is none. The status code is the only signal of which happened: 200 for an update, 201 for a create. The… - [Delete the primary contact](https://docs.emak.tech/reference/delete_customer_contacts_primary.md): Not supported: your account must always have a primary contact, so this always answers 409 and changes nothing. Use `PUT /api/v1/customer_contacts/primary` to change who the primary contact is. - [Add a technical contact](https://docs.emak.tech/reference/post_customer_contacts_technical.md): Adds a technical contact to your account. Unlike billing and primary contacts, technical contacts are kept on the account record itself and are never sent to billing. The role, timestamps and… - [Update a technical contact](https://docs.emak.tech/reference/patch_customer_contacts_technical_contact_id.md): Replaces a technical contact's name, email and phone. Despite the verb this is not a field-wise patch: `name` is required on every call, and an omitted `email` or `phone` is written as null. The… - [Delete a technical contact](https://docs.emak.tech/reference/delete_customer_contacts_technical_contact_id.md): Deletes a technical contact from your account. It answers 200 even when nothing matched, so deleting an ID that does not exist is indistinguishable from a real deletion — read the contacts back if… - [List phone menus](https://docs.emak.tech/reference/fetchphonemenus.md): Lists the phone menus on your account, ordered by extension number ascending. `direct_dial` comes back as a real boolean here, while the other fields keep their stored types. List rows do not carry… - [Create a phone menu](https://docs.emak.tech/reference/createphonemenu.md): Creates a phone menu together with its key presses and its call routing. The number the menu answers on is allocated for you from your account's free range — an `extension` you send is ignored — and… - [Fetch a phone menu](https://docs.emak.tech/reference/fetchphonemenubyid.md): Returns one phone menu as an array holding the single menu, not a bare object. Only this read is enriched: `managed_by` is non-null when a call flow owns the menu, in which case writes to it answer… - [Update a phone menu](https://docs.emak.tech/reference/patch_ivr_menus_menuid.md): Updates a phone menu. A partial body is safe: your fields are merged over the current menu, so anything you omit is preserved. `options` is the exception — sending the array deletes and recreates… - [Delete a phone menu](https://docs.emak.tech/reference/deletephonemenu.md): Permanently deletes the menu, its key presses and its call routing. Pass only ids you got from `GET /api/v1/ivr_menus` — the delete is keyed on the id alone. The steps are not atomic: if the menu… - [List ring groups](https://docs.emak.tech/reference/get_ring_groups.md): Lists every ring group on your account with its member destinations embedded. There are no ordering or pagination parameters. List rows do not carry `managed_by` or `replaced_by_flow` — fetch a group… - [Create a ring group](https://docs.emak.tech/reference/post_ring_groups.md): Creates a ring group, its member destinations and its call routing. The extension number is allocated for you — a `ring_group_extension` you send is ignored, and reserved-range numbers are refused.… - [Fetch a ring group](https://docs.emak.tech/reference/get_ring_groups_id.md): Returns one ring group with its destinations, plus the two call-flow fields the list omits. `managed_by` is non-null when a call flow owns the group, in which case PATCH and DELETE here answer 409;… - [Update a ring group](https://docs.emak.tech/reference/patch_ring_groups_id.md): Updates a ring group in place: your body is merged over the current group, then the group and its call routing are rewritten. Every key you send is applied, including an explicit null, so send only… - [Delete a ring group](https://docs.emak.tech/reference/delete_ring_groups_id.md): Permanently deletes the ring group, its destinations and its call routing. Pass only ids you got from `GET /api/v1/ring_groups` — the delete is keyed on the id alone. A group owned by a call flow… - [List time conditions](https://docs.emak.tech/reference/get_time_conditions.md): Returns the time conditions on your account, ordered by extension number ascending. List rows carry the stored definition only — they do not include the `managed_by` and `replaced_by_flow` fields… - [Create a time condition](https://docs.emak.tech/reference/post_time_conditions.md): Creates a time condition on your account and returns its identifiers — note that success is `200`, not `201`. The ID, extension number and routing entry are all assigned for you; any field in the… - [Retrieve a time condition](https://docs.emak.tech/reference/get_time_conditions_id.md): Returns a single time condition, enriched with `managed_by` when a call flow owns it and `replaced_by_flow` when it has been converted into one — `managed_by` takes precedence when both apply. The… - [Update a time condition](https://docs.emak.tech/reference/patch_time_conditions_id.md): Updates a time condition in place; fields you omit keep their current values, while `conditions` is replaced wholesale by whatever array you send. Send `expected_update_date` to avoid clobbering a… - [Delete a time condition](https://docs.emak.tech/reference/delete_time_conditions_id.md): Deletes a time condition and the routing entry behind it. A condition that a call flow manages, or whose routing entry another flow points at, is refused with 409 and the offending flow named —… - [List magic routes](https://docs.emak.tech/reference/get_magic_routing.md): Returns every magic route on your account, newest first. Each entry includes its routing program in `code`, which can be large. There are no filter or pagination parameters. - [Create a magic route](https://docs.emak.tech/reference/post_magic_routing.md): Creates an empty magic route. It has no routing program, is disabled and has no extension number, so no call can reach it yet: set `code` with `PATCH /api/v1/magic_routing/{id}`, then call `POST… - [Fetch a magic route](https://docs.emak.tech/reference/get_magic_routing_id.md): Returns one magic route, including its routing program in `code`, its `routing_summary` and its current `test_listeners`. A route that is not on your account is reported as 404, the same as one that… - [Update a magic route](https://docs.emak.tech/reference/patch_magic_routing_id.md): Updates a magic route in place; fields you omit keep their current values. Only the fields below are writable and anything else in the body is ignored without an error, so `extension_number`,… - [Delete a magic route](https://docs.emak.tech/reference/delete_magic_routing_id.md): Permanently deletes a magic route together with its stored secrets and its conversation history, and removes the routing that made it reachable. This cannot be undone, and the secrets cannot be… - [Deploy a magic route](https://docs.emak.tech/reference/post_magic_routing_id_deploy.md): Makes a magic route live. The first deploy assigns the route an internal extension number and creates the routing that sends calls to its program; later deploys reuse that routing and re-enable it,… - [List secrets](https://docs.emak.tech/reference/get_magic_routing_id_secrets.md): Returns the names and descriptions of the secrets stored against a magic route. Secret values are never returned by this or any other endpoint, so a value you lose must be stored again. An unknown… - [Delete a secret](https://docs.emak.tech/reference/delete_magic_routing_id_secrets.md): Removes a stored secret from a magic route by name. The route itself is never checked, so deleting against an ID with no route returns 200, as does deleting a name that was never stored. Nothing on… - [Register a test listener](https://docs.emak.tech/reference/put_magic_routing_id_test_listener.md): Registers your key as a live-test listener on a magic route for 120 seconds and prunes expired registrations in the same write; the in-app panel repeats this call every 60 seconds as a heartbeat. The… - [Remove your test listener](https://docs.emak.tech/reference/delete_magic_routing_id_test_listener.md): Removes your own live-test listener registration from a magic route, along with any expired registrations. This supports the in-app live-test panel and changes nothing about how calls are routed. It… - [List call blocking rules](https://docs.emak.tech/reference/get_call_block.md): Returns every inbound call blocking rule on your account. There are no filter, ordering or pagination parameters, so the full set comes back in one response. A key that is limited to specific… - [Create a call blocking rule](https://docs.emak.tech/reference/post_call_block.md): Adds an inbound blocking rule, then rebuilds and reloads your account's call blocking routing so it applies to the next call. New rules are created enabled with a match count of zero. The new rule's… - [Fetch a call blocking rule](https://docs.emak.tech/reference/get_call_block_id.md): Returns one call blocking rule as a single-element array, which differs from the other detail reads in this API. A rule that is not on your account is reported as 404, the same as one that does not… - [Update a call blocking rule](https://docs.emak.tech/reference/patch_call_block_id.md): Updates a call blocking rule in place, then rebuilds and reloads your account's call blocking routing. **Always resend `call_block_name`**: omitting that one key clears the name, while every other… - [Delete a call blocking rule](https://docs.emak.tech/reference/delete_call_block_id.md): Deletes a call blocking rule, then rebuilds and reloads your account's call blocking routing. The rule is gone permanently; there is no undo, so recreate it from scratch if you need it back. - [Place a call](https://docs.emak.tech/reference/post_calls.md): Places a call from one of your extensions. Give the account domain in `tenant` and the originating extension in `extension`; every other field you send is forwarded to the call service unchanged, and… - [Get a call](https://docs.emak.tech/reference/get_calls-callid.md): Returns the current state of a call by its identifier. The call service's response is passed back with its status intact — including its failures, which are returned before the ownership check runs.… - [Get a call record](https://docs.emak.tech/reference/get_cdr_call_records_call_uuid.md): Returns the full record of one completed call. The `flow` and transcript parts are omitted unless you ask for them with `include`. A key with the Admin role can read any call on the account except… - [Get a call's recording](https://docs.emak.tech/reference/get_cdr_call_records_call_uuid_recording.md): Returns the recording of a completed call in one of three shapes, chosen by the request itself: send `Accept: application/json` for a temporary URL, add `download=1` for the audio bytes as an… - [List live calls](https://docs.emak.tech/reference/get_calls_v2_domain_name.md): Lists the calls in progress on your account right now, read live from the voice server assigned to it. The response comes from that server, so its status and shape are defined there rather than here,… - [List recordings](https://docs.emak.tech/reference/fetchrecordings.md): Lists the recordings stored on your account, ordered by name. Recordings generated by surveys are left out. Requires an API key with the Admin role. - [Upload a recording](https://docs.emak.tech/reference/createrecording.md): Uploads an audio file and stores it as a recording on your account, converting it to WAV. For an ordinary upload the audio is also transcribed automatically: the transcript is stored in `tts_text`… - [Get a recording](https://docs.emak.tech/reference/fetchrecording.md): Returns one stored recording — its name, file name, description, timestamps, and the text-to-speech settings it was generated from, when it was generated rather than uploaded. The body is a JSON… - [Update a recording](https://docs.emak.tech/reference/patch_recordings-recordingid.md): Renames a recording and, when you send `file`, replaces its audio. `name` is required on every call, even when you are only changing something else, and the text-to-speech fields are replaced… - [Delete a recording](https://docs.emak.tech/reference/deleterecording.md): Permanently deletes a recording: the audio file is removed everywhere it is kept for playback, and then the recording itself is removed. This cannot be undone — there is no trash and no restore, so… - [Regenerate a recording from text](https://docs.emak.tech/reference/patch_recordings_recordingid_generate.md): Re-synthesizes an existing recording and overwrites its audio in place; the call is billable. Nothing checks whether the recording is in use first, so this can replace audio that a live phone menu is… - [Transcribe a recording](https://docs.emak.tech/reference/post_recordings_recordingid_transcribe.md): Returns a transcript of a recording's audio. Nothing is saved — the transcript is not written back to the recording — and if the recording already carries stored text, that text is returned directly… - [Generate a recording from text](https://docs.emak.tech/reference/post_recordings_generate.md): Synthesizes speech from text and stores the result as a WAV recording on your own account. The file is then pushed out to the voice servers, but a push failure is only logged: a 201 does not… - [List hold music](https://docs.emak.tech/reference/get_music_on_hold.md): Lists the hold music available to your account — the music loaded on your account, plus the shared tracks available to everyone. - [Send a fax](https://docs.emak.tech/reference/sendfax.md): Transmits a fax from one of your fax servers and creates its entry in your fax list; the response carries that new entry, so you do not need to refetch it. Supply the document through `files` or… - [List fax logs](https://docs.emak.tech/reference/getfaxlogs.md): Returns a page of the faxes sent and received on your account, along with `total`, the exact number of faxes matching your filters, so you can page through them. If your key is limited to particular… - [Fetch a fax log](https://docs.emak.tech/reference/getfaxlogbyid.md): Returns the full detail for one fax — including its retries, email tracing and access history — as an array of zero or one element, so read it at index `[0]`. There is no 404 here: a fax that does… - [Update a fax log](https://docs.emak.tech/reference/patch_fax_logs_logid.md): Updates the archive flag and the display fields on a single fax. Only `fax_archived`, `fax_subject`, `fax_from_name` and `fax_to_name` are applied; any other key is silently dropped, and a body… - [Delete a fax document](https://docs.emak.tech/reference/deletefaxlog.md): Deletes the fax document, not the record of the fax: the file is removed from storage and the entry stays in your fax list with no document left to view. An access entry recording the deletion is… - [Retry a failed fax](https://docs.emak.tech/reference/post_fax_retry_faxlogid.md): Resends a failed fax as an entirely new fax, reusing the original document, recipient, subject, coversheet, language and image quality. The original entry is left untouched and nothing records that a… - [Cancel a fax](https://docs.emak.tech/reference/post_fax_cancel_faxid.md): Stops an outbound fax that has not finished sending. Only faxes in `queued`, `media.processed` or `sending` can be cancelled; anything else comes back as 422. On success the fax is marked `cancelled`… - [List fax servers](https://docs.emak.tech/reference/getfaxservers.md): Returns the fax servers available to you — each one a virtual fax line with its own number, notification email and retention setting. A key with no fax servers assigned gets an empty array. Unlike… - [Create a fax server](https://docs.emak.tech/reference/createfaxserver.md): Creates a virtual fax line: a fax extension is allocated, the number in `caller_id_number` is pointed at it, inbound routing for that number is created or updated, and the users in `users` and… - [Fetch a fax server](https://docs.emak.tech/reference/getfaxserverbyid.md): Returns one fax server as an array of zero or one element, so read it at index `[0]`. An empty array means the fax server does not exist or is not on your account — there is no 404. This… - [Update a fax server](https://docs.emak.tech/reference/updatefaxserver.md): `update_type: "editServer"` replaces the fax server wholesale instead of merging: the user assignments and the email-to-fax list are cleared and rebuilt from `users` and `emails_to_fax`, so leaving… - [Delete a fax server](https://docs.emak.tech/reference/deletefaxserver.md): Removes a fax server and everything attached to it: its extension, every user assignment, the email-to-fax list, the number's inbound routing and the stored fax data. The caller-ID number is detached… - [Record fax document access](https://docs.emak.tech/reference/post_fax_audit.md): Records that a fax document was viewed, downloaded or deleted, stamped with the calling client's IP address and user agent. It only writes the entry — it does not grant or check access to the… - [List surveys](https://docs.emak.tech/reference/get_surveys.md): Lists the post-call surveys on your account, each with the extension that reaches it in every language it is published in. Only surveys on your account are returned. There is no ordering or… - [Create a survey](https://docs.emak.tech/reference/post_surveys.md): Creates a post-call survey on your account, allocates it an extension and publishes the call routing that reaches it. Questions are added separately, through `/api/v1/surveys/{id}/questions`.… - [Get a survey](https://docs.emak.tech/reference/get_surveys_id.md): Returns one survey as a single object, not an array, with its questions and the extension that reaches it in each language. Only surveys on your account can be read. - [Update a survey](https://docs.emak.tech/reference/patch_surveys_id.md): Updates a survey in place; fields you omit keep their current values, and at least one field must be present. `question_order` renumbers the questions wholesale and must name exactly the survey's… - [Delete a survey](https://docs.emak.tech/reference/delete_surveys_id.md): Deletes a survey and everything beneath it — collected responses and answers, recordings, translations and questions — then removes its call routing. This cannot be undone, and the responses already… - [Get survey analytics](https://docs.emak.tech/reference/get_surveys_id_analytics.md): Returns aggregate results for a survey plus the individual responses behind them: totals for completed, abandoned, timed-out and error responses, a completion rate as a percentage, and per-question… - [List survey questions](https://docs.emak.tech/reference/get_surveys_id_questions.md): Returns the survey's questions with every language's actions attached, exactly as they are stored. A survey with no questions yet returns an empty array. - [Add a survey question](https://docs.emak.tech/reference/post_surveys_id_questions.md): Adds a question to a survey, generates its spoken audio and republishes the survey's call routing. `question_number` defaults to one past the highest number in use, and a number already taken is… - [Get a survey question](https://docs.emak.tech/reference/get_surveys_id_questions_question_id.md): Returns one question of a survey with every language's actions, exactly as stored. - [Update a survey question](https://docs.emak.tech/reference/patch_surveys_id_questions_question_id.md): Updates a question in place; at least one field must be present and omitted fields keep their current values. `actions` upserts only the languages you send, leaving the rest alone, and each entry… - [Delete a survey question](https://docs.emak.tech/reference/delete_surveys_id_questions_question_id.md): Removes a question from a survey along with its translations, its generated recordings and every answer callers have given it. Those answers are deleted and cannot be recovered. Recording cleanup… - [Delete a question translation](https://docs.emak.tech/reference/delete_surveys_id_questions_question_id_languages_language.md): Deletes one language's translation of a question, removes its generated audio and republishes the survey's call routing. The survey's default language cannot be deleted — that comes back as 400.… - [List question translations](https://docs.emak.tech/reference/get_surveys_id_questions_question_id_translations.md): Lists every stored translation of a question, ordered by language code. Access is decided by the survey the question actually belongs to, not by the survey ID in the path, and the survey UUID in each… - [Create a question translation](https://docs.emak.tech/reference/post_surveys_id_questions_question_id_translations.md): Adds a translation of a question in one language and republishes the survey's call routing. Validation requires `language`, a nonblank `question_text` and a `question_actions` array in which every… - [Get a question translation](https://docs.emak.tech/reference/get_surveys_id_questions_question_id_translations_language.md): Returns one language's translation of a question as a single object. The survey ID in the path is not checked against the question — access is decided by the survey the question actually belongs to.… - [Update a question translation](https://docs.emak.tech/reference/patch_surveys_id_questions_question_id_translations_language.md): Updates one language's translation of a question. `custom_actions` is the only field written; `question_text`, `recording_filename` and `recording_uuid` are accepted by the schema and ignored, and… - [List survey responses](https://docs.emak.tech/reference/get_surveys_id_responses.md): Returns a survey's responses with their answers, newest first. `limit` and `offset` page the underlying answer rows before they are grouped into responses, so a response that straddles a page… - [Translate a survey](https://docs.emak.tech/reference/post_surveys_id_translate.md): Translates every question in a survey from its default language into `targetLanguage` and republishes the survey's call routing. Questions already translated into that language are skipped, and… - [Get a survey audio playback URL](https://docs.emak.tech/reference/get_surveys_audio_audio_uuid_play.md): Returns a temporary signed URL for a survey recording, set to play in the browser rather than download. The URL expires 900 seconds after it is issued and `expires_at` is that moment as Unix epoch… - [List webhook subscriptions](https://docs.emak.tech/reference/get_webhooks.md): Lists the webhook subscriptions on your account, ordered by name. A subscription fires on exactly one call event — its `event_trigger` is one of `New Call`, `Ringing`, `Call Answer`, `Call Hangup` or… - [Create a webhook subscription](https://docs.emak.tech/reference/post_webhooks.md): Creates a webhook subscription on your account: a URL you register to be called when a chosen call event happens. A subscription fires on exactly one event — `event_trigger` must be one of `New… - [Get a webhook subscription](https://docs.emak.tech/reference/get_webhooks_webhookid.md): Returns one webhook subscription on your account as a one-element array. An ID that belongs to another account is treated exactly like one that does not exist and is answered with 404. The… - [Update a webhook subscription](https://docs.emak.tech/reference/patch_webhooks_webhookid.md): Updates a webhook subscription in place; fields you omit keep their current values. Only `description`, `event_trigger`, `event_trigger_filters`, `request_type`, `request_url`, `header_json`,… - [Delete a webhook subscription](https://docs.emak.tech/reference/delete_webhooks_webhookid.md): Permanently deletes a webhook subscription on your account; the URL stops receiving events immediately and there is no undo. An ID that belongs to another account is answered with 404 and nothing is… - [List CRM connections](https://docs.emak.tech/reference/get_crm_connections.md): Returns your account's CRM connections, newest first, each with its most recent sync checkpoint. If the checkpoint read fails for a connection, that connection simply comes back without a last sync… - [Create a CRM connection](https://docs.emak.tech/reference/post_crm_connections.md): Connects a CRM to your account using an OAuth credential you have already stored. The connection is created active with syncing enabled, but nothing is pulled in until you call `POST… - [Update a CRM connection](https://docs.emak.tech/reference/patch_crm_connections_connectionid.md): Updates a CRM connection in place; only the fields you send are written. Use it to rename a connection, pause it, or turn syncing off without deleting the data already pulled in. Note that `config`… - [Delete a CRM connection](https://docs.emak.tech/reference/delete_crm_connections_connectionid.md): Deletes the connection and everything derived from it: its sync checkpoints, its contact mappings, and the cached phone-number index for that CRM. Caller-ID enrichment from that CRM stops… - [Look up a phone number in your CRM](https://docs.emak.tech/reference/get_crm_lookup_phone.md): Looks a phone number up in the cached CRM index that `POST /api/v1/crm/sync` builds. It never queries the CRM live, which makes it fast enough for caller-ID enrichment but only as fresh as your last… - [Run a CRM sync](https://docs.emak.tech/reference/post_crm_sync.md): Runs one chunk of a sync — a single page of 25 to 50 CRM records — and returns a checkpoint describing the progress. Keep calling it with the returned `checkpointId` while `hasMore` is true. It… - [Reset a stuck sync](https://docs.emak.tech/reference/post_crm_sync_reset.md): Unlocks a sync checkpoint that is stuck in progress because its lock was never released, putting it back to pending. Resume afterwards by calling `POST /api/v1/crm/sync` with the same `checkpointId`.… - [Check sync status](https://docs.emak.tech/reference/get_crm_sync_status_checkpointid.md): Returns the current progress of a sync run. Poll it while a long sync is running instead of inferring progress from the chunk responses. - [List Sonos Connect integrations](https://docs.emak.tech/reference/get_sonos_connect.md): Returns your account's Sonos Connect integrations, ordered by paging extension. Each row carries the Sonos authorization code and refresh token, so treat the response as credential material.… - [Fetch a Sonos Connect integration](https://docs.emak.tech/reference/get_sonos_connect_integrationid.md): Returns one Sonos Connect integration, as an array containing a single object rather than a bare object; there is no 404. The response includes the integration's OAuth tokens, so treat it as… - [Update a Sonos Connect integration](https://docs.emak.tech/reference/patch_sonos_connect_integrationid.md): Updates the settings of a Sonos integration on your account. Only `description`, `household_id`, `groups`, `volume` and `enabled` can be changed here; any other field in the body is ignored. A body… - [Delete a Sonos Connect integration](https://docs.emak.tech/reference/delete_sonos_connect_integrationid.md): Deletes the integration, then removes the paging extension it created and refreshes call routing. If that extension is still used by one or more call flows the call answers 409 and nothing is… - [Get the account statement](https://docs.emak.tech/reference/get_billing_account_statement.md): Returns a billing customer's invoices, payments and credit notes in a single statement. Invoice and credit-note totals and balances, and payment amounts and balances, come back as strings fixed to… - [List long distance calls](https://docs.emak.tech/reference/get_billing_bdr_long_distance.md): Lists the answered long distance calls on your account, each with the cost charged to you. With `filter=totalCustomerCost` the response is instead a single number: those costs summed, counting a call… - [List long distance calls for a domain](https://docs.emak.tech/reference/get_billing_bdr_long_distance_domainid.md): Lists the long distance calls recorded for one domain. Unlike the collection endpoint this returns calls of every status, not just answered ones, and it accepts no date or filter parameters — every… - [List credit notes](https://docs.emak.tech/reference/get_billing_credit_notes.md): Lists the credit notes for a billing customer inside the envelope the billing system returns. Totals and balances are formatted to two decimal places and a missing balance becomes `0.00`. The array… - [Get a credit note](https://docs.emak.tech/reference/get_billing_credit_notes_id.md): Returns a single credit note by ID. Monetary fields are passed through unformatted here, unlike the list endpoint, and the response carries the same list-shaped envelope rather than a detail-specific… - [List invoices](https://docs.emak.tech/reference/get_billing_invoices.md): Lists a billing customer's invoices as a bare array, without the envelope the billing system wraps them in. `total` and `balance` are formatted to two decimal places; every other field is passed… - [Create an invoice](https://docs.emak.tech/reference/post_billing_invoices.md): Creates a real invoice against a billing customer — it is issued and becomes payable, so do not use this endpoint to try things out. `line_items` must be nonempty and every item needs both `rate` and… - [Get an invoice](https://docs.emak.tech/reference/get_billing_invoices_id.md): Returns one invoice exactly as the billing system holds it, in its own envelope. Monetary fields are not reformatted here, so amounts may differ in shape from the same invoice in the list endpoint. - [Get the long distance balance](https://docs.emak.tech/reference/get_billing_long_distance_balance.md): Returns the total billable long distance amount for one billing period on your account. Periods run backward month by month from the current month to when your account was created, and no further… - [Look up a long distance rate](https://docs.emak.tech/reference/post_billing_long_distance_rates_lookup.md): Prices a phone number by matching it against the longest dialing prefix on file and returning the per-minute rate you would be billed. Calls to United States and Canadian destinations are reported as… - [List payments](https://docs.emak.tech/reference/get_billing_payments.md): Lists the payments recorded for a billing customer, in the envelope the billing system returns, with `amount` and `balance` formatted to two decimal places. With `filter=lastPayment` you get just the… - [Get a payment](https://docs.emak.tech/reference/get_billing_payments_id.md): Returns one payment in the billing system's own envelope — a result code, a message and the payment object. Amounts are not reformatted here. Note that an empty `id` comes back as 403, not 400. - [Get the payment profile](https://docs.emak.tech/reference/get_billing_profiles.md): Returns the stored payment profile for a customer, subscription or saved card — at most one profile, or null when nothing matches. Supply `customerId` or `cardId`; a `cardId` on its own also requires… - [Save the payment profile](https://docs.emak.tech/reference/post_billing_profiles.md): Creates or updates the payment profile that automatic payments draw on for one customer and subscription, and records the change in the billing action log. This changes how the account gets paid:… - [Get SMS usage](https://docs.emak.tech/reference/get_billing_sms_usage.md): Returns your account's SMS billing summary for one month: segments used, segments included, overage segments, the number of messages sent, the overage rate and the amount owed. Usage and allowance… - [List subscriptions](https://docs.emak.tech/reference/get_billing_subscriptions.md): Lists the subscriptions for one of your account's billing customers as a bare array, without the envelope around them. `customerId` must be one of the customer IDs on your account — any other value… - [Get a subscription](https://docs.emak.tech/reference/get_billing_subscriptions_subscriptionid.md): Returns one subscription together with the auto-pay state that actually applies to it. Your saved payment profile decides that state; only when no profile exists, or it cannot be read, does the… - [Turn off automatic collection](https://docs.emak.tech/reference/put_billing_subscriptions_subscriptionid_auto_collect.md): Turns automatic collection off for a subscription and records the change in the billing action log. It takes no request body and it only ever disables collection — there is no way to turn collection… - [List subscriptions with add-on prices](https://docs.emak.tech/reference/get_billing_subscriptions_with_addon_prices.md): Lists your subscriptions together with the monthly add-on fee that applies to each. Only subscriptions that are active, live, paused, inactive or future are included; omitting `customerId` aggregates… - [Apply license quantity changes](https://docs.emak.tech/reference/post_licensing_commit_batch.md): Applies every quantity change in `changes` to the subscription as one update and bills it right away: the whole change set produces a single prorated invoice. Only lines whose quantity actually… - [Get a license limit](https://docs.emak.tech/reference/get_licensing_limits_id.md): Reports how many licenses of one type your account holds and how many are in use. `object_count` — the number of enabled extensions — appears only for `extensions`, and is left out if that count… - [Preview license quantity changes](https://docs.emak.tech/reference/post_licensing_preview_batch.md): Prices a set of license quantity changes without applying them: one prorated quote for the whole cart, plus the pricing behind each line. Nothing is charged and nothing on the subscription changes.…