Overview and Examples The MiRTA PBX OpenAPI endpoint exposes configuration and reporting APIs as an OpenAPI 3.0.3 JSON specification. OpenAPI describes the available paths, methods, authentication schemes, request bodies, and response schemas in a machine-readable format. Using the OpenAPI specification makes integrations easier to test and maintain: developers can generate client code, import the API into tools such as Postman or Swagger UI, validate request shapes, and keep documentation aligned with the endpoint implementation. Base URL https://pbx.example.com/pbx/openapi.php https://pbx.example.com/pbx/openapi.php?spec=1 https://pbx.example.com/pbx/openapi.php/openapi.json https://pbx.example.com/pbx/openapi.php/swagger.json Authentication Send the API key as a key query parameter, an X-API-Key header, or an Authorization: Bearer token. Tenant API keys require a tenant parameter. Global keys can access global administration objects and can list tenant-scoped objects across tenants when no tenant parameter is supplied. curl -H "X-API-Key: TENANT_API_KEY" \ "https://pbx.example.com/pbx/openapi.php/extensions?tenant=CANISTRACCI" curl -H "Authorization: Bearer TENANT_API_KEY" \ "https://pbx.example.com/pbx/openapi.php/extensions/number/100?tenant=CANISTRACCI" curl "https://pbx.example.com/pbx/openapi.php/extensions?tenant=CANISTRACCI&key=TENANT_API_KEY" Endpoint Patterns Action Pattern List GET https://pbx.example.com/pbx/openapi.php/extensions?tenant=CANISTRACCI Get by ID GET https://pbx.example.com/pbx/openapi.php/extensions/EXTENSION_ID?tenant=CANISTRACCI Get extension by number GET https://pbx.example.com/pbx/openapi.php/extensions/number/100?tenant=CANISTRACCI Get live extension state GET https://pbx.example.com/pbx/openapi.php/extensions/state?tenant=CANISTRACCI&number=100 Dial POST https://pbx.example.com/pbx/openapi.php/dial?tenant=CANISTRACCI Transfer live call POST https://pbx.example.com/pbx/openapi.php/calls/transfer?tenant=CANISTRACCI Queue agent action POST https://pbx.example.com/pbx/openapi.php/queues/QUEUE_ID/agents/EXTENSION_ID/{login|logout|pause|unpause}?tenant=CANISTRACCI Create POST https://pbx.example.com/pbx/openapi.php/extensions?tenant=CANISTRACCI Modify PATCH https://pbx.example.com/pbx/openapi.php/extensions/EXTENSION_ID?tenant=CANISTRACCI Delete DELETE https://pbx.example.com/pbx/openapi.php/extensions/EXTENSION_ID?tenant=CANISTRACCI Supported Objects Each supported object has its own page in this chapter. Most configuration objects support CRUD operations. CDR, Simple CDR, AI Analysis, and AI Logs are read-only reporting endpoints. The examples use fictional IDs, numbers, names, and keys; replace them with values from the target PBX. Object Primary path Authentication scope Operations or required fields Auth Token /auth/token Global full API key POST generate, DELETE reset Dial /dial Tenant full API key POST only; requires source and dest Live Call Transfer /calls/transfer Writable full tenant or global API key; exact tenant required POST blind or attended transfer of an active tenant-owned channel CDR /cdrs Tenant API key or global key; GET only GET only Simple CDR /simplecdrs Tenant API key or global key; GET only GET only AI Analysis /aianalysis Tenant API key or global key; GET only GET only; requires uniqueid AI Logs /ailogs Tenant full or read-only API key, or global key; GET only GET only; JSON or CSV; defaults to the current day Extension /extensions Tenant API key number or ex_number; GET /extensions/state for live state Tenant /tenants Global API key te_name, te_code User /users Global API key us_username User Profile /userprofiles Global API key up_name Routing Profile /routingprofiles Global API key rp_name Provider /providers Global API key pr_name Voicemail /voicemails Tenant API key mailbox IVR /ivrs Tenant API key iv_name Custom Destination /customdestinations Tenant API key or global key with global=1 cu_name, cu_ct_id Condition /conditions Tenant API key co_type Hunt List /huntlists Tenant API key hu_name DID /dids Tenant API key di_number Queue /queues Tenant API key; agent actions require a writable full key and an exact tenant CRUD; GET /queues/{id}/state for live state; POST /queues/{queueId}/agents/{agentId}/{login|logout|pause|unpause} for agent actions Setting /settings Tenant API key or global key with global=1 se_code Media File /mediafiles; /mediafiles/{id}/download Tenant or global key for metadata; full key required to download audio me_name; binary download examples Music On Hold /musiconholds Tenant API key or global key with global=1 mu_name Paging Group /paginggroups Tenant API key pa_name, pa_number Conference Room /conferencerooms Tenant API key cr_name, cr_number Flow /flows Tenant API key fl_name Tenant Variable /tenantvariables Tenant API key tv_al_id DISA /disas Tenant API key ds_name Caller ID Blacklist /calleridblacklists Tenant API key or global key with global=1 bl_callerid Campaign /campaigns Tenant API key ca_name Campaign Number /campaignnumbers Tenant API key cn_ca_id, cn_number Cron Job /cronjobs Tenant API key or global key with global=1 cr_name Feature Code /featurecodes Tenant API key or global key with global=1 fe_code Short Number /shortnumbers Tenant API key or global key with global=1 sn_number Phone Book /phonebooks Tenant API key pb_name Phone Book Entry /phonebookentries Tenant API key phonebook_id, at least one value Provisioning Phone /provisioningphones Tenant API key ph_name, ph_mac Errors Errors are returned as JSON with an error code and message. Common errors include missing_api_key, invalid_api_key, tenant_not_found, invalid_json, missing_required_field, read_only_api_key, method_not_allowed, and not_found. Phone book collection operations The /phonebooks/{id}/entries endpoint supports downloading all stored contacts (GET), adding 1–500 contacts in an atomic batch (POST), and clearing only the selected phone book (DELETE). A tenant must be selected. Read-only keys can download; writes require a full key. See Phone Book for examples. Configuration API additions (1.2.0) Thirty additional resources cover Configuration/Settings and child records, with full create/read/update/delete operations. Extension technology conversion and voicemail messages/greetings now have dedicated endpoints. The generated internal directory is read-only; its source configuration objects remain editable. See Additional Configuration Operations for complete request fields, scope rules and examples. Media File Downloads GET /mediafiles/{id}/download?tenant=TENANTCODE returns the original audio file as a binary attachment. It requires a full tenant or global API key; read-only keys cannot download audio. Tenant scoping is enforced. Global full keys can use global=yes for shared media. List/detail media endpoints return metadata only, and download errors remain JSON. See Media File: Download a Media File for curl examples, response headers, storage support and errors.