Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead — the extension has a phone registered to ring, the number resolves, an outside number has a route and credit — and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\n\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.
Every request sends Authorization: Bearer <token>. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key ft_<id>_<secret>. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.
Any string up to 255 characters. A retry with the same key and the same body gets the first answer again (with Idempotent-Replayed: true) instead of doing it twice; the same key with a different body is 409 idempotency_mismatch; while the first is still running, 409 idempotency_in_progress. Kept 24 hours.
Where this call's events are POSTed, signed with the organisation's callback secret (see /integration/callback-secret): call.started, call.answered, call.ended, recording.ready, and call.failed if it never connected.
When a reference or callback_url was given: the request to follow (GET /call-requests/{id}).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FireTone","colors":{"primary":"#ff4a1c","light":"#fb923c","dark":"#c2410c"},"logo":{"light":"https://mintcdn.com/firetone/u4xTBZEDCoIufOWT/images/firetone-wordmark.svg?fit=max\u0026auto=format\u0026n=u4xTBZEDCoIufOWT\u0026q=85\u0026s=c5a3d1e942e8000d644aefc1cf3811d2","dark":"https://mintcdn.com/firetone/u4xTBZEDCoIufOWT/images/firetone-wordmark-white.svg?fit=max\u0026auto=format\u0026n=u4xTBZEDCoIufOWT\u0026q=85\u0026s=25c875c165cbfe994b4b47bf98c6bc84"},"favicon":"https://mintcdn.com/firetone/u4xTBZEDCoIufOWT/images/firetone-mark.svg?fit=max\u0026auto=format\u0026n=u4xTBZEDCoIufOWT\u0026q=85\u0026s=92060d948b746862cf08f204277bc4ef","api":{"playground":{"display":"none"},"examples":{"languages":["curl","javascript","python"]}},"navbar":{"primary":{"type":"button","label":"Control panel","href":"https://firet.one"}},"footer":{"socials":{"github":"https://github.com/RemotiQ"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"firetone","hasAudioNarration":false,"actualSubdomain":"firetone","customDomains":["docs.firetone.com.au"],"gitSource":{"type":"github","owner":"remotiq","repo":"firetone-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ac34d3dde45b430245d2a62","collectionId":"736d1bca-eddc-48af-8f67-ed57fbb706f6","liveDeploymentHistoryId":"6ac34d3dde45b430245d2a62","schemaVersion":"v3"},"entitlements":{},"buildId":"6ac34d3dde45b430245d2a62","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API","count":116},{"language":"default","tag":"API reference","count":100},{"language":"default","tag":"Running a tenant","count":30},{"language":"default","tag":"Provisioning","count":21},{"language":"default","tag":"Running the platform","count":17},{"language":"default","tag":"Calls","count":14},{"language":"default","tag":"Operating","count":13},{"language":"default","tag":"Campaigns","count":13},{"language":"default","tag":"Live","count":12},{"language":"default","tag":"Integrations","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/live/click-to-call","slug":"/api-reference/live/click-to-call","pageMetadata":{"title":"Click to call","description":"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\n\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls","href":"/api-reference/live/click-to-call","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead — the extension has a phone registered to ring, the number resolves, an outside number has a route and credit — and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\\\n\\\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Click to call","description":"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\n\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls","href":"/api-reference/live/click-to-call","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\n\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.","operationId":"postCalls","parameters":["15b2f117-c4ca-4051-9c2a-3bf174564677","4d80e057-0cde-4968-bf60-8b03f12505f1"],"requestBody":"0732e4e0-dfda-4be7-af3d-9f96287165f4","responses":{"202":"ea9a5ff1-a52d-4107-80cc-bd1dda8c2f49","403":"5d98128b-c436-4b68-b167-1ea1a087d223","409":"b5a8ea97-3eb7-4829-8dbc-150931bd4a7e","502":"e3320d1a-0908-43b7-852c-5baf08225838","503":"ad8866b7-20f6-46ba-b97e-8e3a25b4eb66"},"summary":"Click to call","tags":["Live"],"method":"post","type":"path","servers":["de7ae319-dad5-4ccd-81a0-92f2ed82202e"],"security":["241f09be-a9f2-4825-90d6-a7c0f34aa08e"],"path":"/calls","baseUrlOptions":["https://{host}/api/v1"],"title":"Click to call","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"15b2f117-c4ca-4051-9c2a-3bf174564677":{"description":"Any string up to 255 characters. A retry with the same key and the same body gets the first answer again (with Idempotent-Replayed: true) instead of doing it twice; the same key with a different body is 409 idempotency_mismatch; while the first is still running, 409 idempotency_in_progress. Kept 24 hours.","in":"header","name":"Idempotency-Key","required":false,"schema":{"maxLength":255,"type":"string","isRequired":false,"description":"Any string up to 255 characters. A retry with the same key and the same body gets the first answer again (with Idempotent-Replayed: true) instead of doing it twice; the same key with a different body is 409 idempotency_mismatch; while the first is still running, 409 idempotency_in_progress. Kept 24 hours.","uniqueKey":"","typeLabel":"string"}},"4d80e057-0cde-4968-bf60-8b03f12505f1":{"description":"true: check everything, place nothing, and return the plan.","in":"query","name":"dry_run","required":false,"schema":{"type":"boolean","isRequired":false,"description":"true: check everything, place nothing, and return the plan.","uniqueKey":"","typeLabel":"boolean"}}},"requestBody":{"content":{"application/json":{"schema":{"description":"Who rings first (extension, or from) and the number to call (destination, or to).","properties":{"callback_url":{"description":"Where this call's events are POSTed, signed with the organisation's callback secret (see /integration/callback-secret): call.started, call.answered, call.ended, recording.ready, and call.failed if it never connected.","type":"string","uniqueKey":"callback_url","typeLabel":"string"},"destination":{"example":"0255551234","type":"string","uniqueKey":"destination","typeLabel":"string"},"extension":{"example":"1001","type":"string","uniqueKey":"extension","typeLabel":"string"},"from":{"description":"Who rings first, by one of: extension number, agent id, or the login email of a person linked to an agent.","properties":{"agent_id":{"format":"uuid","type":"string","uniqueKey":"from.agent_id","typeLabel":"string\u003cuuid>"},"extension":{"type":"string","uniqueKey":"from.extension","typeLabel":"string"},"user_email":{"type":"string","uniqueKey":"from.user_email","typeLabel":"string"}},"type":"object","uniqueKey":"from","typeLabel":"object"},"organisation_id":{"description":"Optional when your scope has exactly one organisation.","format":"uuid","type":"string","uniqueKey":"organisation_id","typeLabel":"string\u003cuuid>"},"reference":{"description":"Your own id for this call. On every event and callback for it, and on its CDR.","maxLength":128,"type":"string","uniqueKey":"reference","typeLabel":"string"},"to":{"description":"The number to call; the same as destination.","type":"string","uniqueKey":"to","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"callback_url":"\u003cstring>","destination":"0255551234","extension":"1001","from":{"agent_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","extension":"\u003cstring>","user_email":"\u003cstring>"},"organisation_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","reference":"\u003cstring>","to":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"ea9a5ff1-a52d-4107-80cc-bd1dda8c2f49":{"content":{"application/json":{"schema":{"properties":{"call_uuid":{"format":"uuid","type":"string","uniqueKey":"call_uuid","typeLabel":"string\u003cuuid>"},"reference":{"type":"string","uniqueKey":"reference","typeLabel":"string"},"request_id":{"description":"When a reference or callback_url was given: the request to follow (GET /call-requests/{id}).","type":"string","uniqueKey":"request_id","typeLabel":"string"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"call_uuid":"3c90c3cc-0d44-4b50-8888-8dd25736052a","reference":"\u003cstring>","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Origination accepted","exampleType":"generated"},"5d98128b-c436-4b68-b167-1ea1a087d223":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"enum":["invalid_request","invalid_credentials","unauthenticated","forbidden","not_found","conflict","internal"],"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"Outside the caller's scope, or insufficient role","exampleType":"generated"},"b5a8ea97-3eb7-4829-8dbc-150931bd4a7e":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"enum":["invalid_request","invalid_credentials","unauthenticated","forbidden","not_found","conflict","internal"],"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"The extension is not registered on any node","exampleType":"generated"},"e3320d1a-0908-43b7-852c-5baf08225838":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"enum":["invalid_request","invalid_credentials","unauthenticated","forbidden","not_found","conflict","internal"],"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"The switch refused the origination","exampleType":"generated"},"ad8866b7-20f6-46ba-b97e-8e3a25b4eb66":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"enum":["invalid_request","invalid_credentials","unauthenticated","forbidden","not_found","conflict","internal"],"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"required":["code","message"],"type":"object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"The call was not placed because the node has no room for it right now: it is at its channel limit, the machine is loaded, or (for an AI call) every AI session it allows is in use. Code `node_busy`, with a `Retry-After` of 30 seconds. Nothing rang and nothing was billed; send the same request again.","exampleType":"generated"}},"security":{"241f09be-a9f2-4825-90d6-a7c0f34aa08e":{"bearerAuth":{"bearerFormat":"JWT or API key","description":"Every request sends `Authorization: Bearer \u003ctoken>`. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key `ft_\u003cid>_\u003csecret>`. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.","scheme":"bearer","type":"http","scopes":[]}}},"servers":{"de7ae319-dad5-4ccd-81a0-92f2ed82202e":{"description":"Your platform's API host","url":"https://{host}/api/v1","variables":{"host":{"default":"api.firet.one"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"JWT or API key","description":"Every request sends `Authorization: Bearer \u003ctoken>`. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key `ft_\u003cid>_\u003csecret>`. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.","scheme":"bearer","type":"http","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Every request sends `Authorization: Bearer \u003ctoken>`. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key `ft_\u003cid>_\u003csecret>`. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi-public.json"},"subdomain":"firetone","siteName":"FireTone","title":"Click to call - FireTone","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-05T07:09:54.260Z","originalFileLocation":"api-reference/live/click-to-call.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\n\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FireTone\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Click to call - FireTone\">\u003cmeta data-mint-head property=\"og:description\" content=\"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\n\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FireTone\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.firetone.com.au/api-reference/live/click-to-call\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://firetone.mintlify.site/_mintlify/api/og/v2?division=Live\u0026amp;title=Click+to+call\u0026amp;description=Answers+once+the+agent+has+picked+up+%28up+to+30+seconds%29%3B+%3Fdry_run%3Dtrue+checks+instead+--+the+extension+has+a+phone+registered+to+ring%2C+the+number+resolves%2C+an+o\u0026amp;theme=8bd671d7f61e2dd25bf8b1f2\u0026amp;signature=31381de2b6e88e0905d5f7bd6ebf62ac05a7e4c5e6d53addaa300978274b0954\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Click to call - FireTone\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\n\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://firetone.mintlify.site/_mintlify/api/og/v2?division=Live\u0026amp;title=Click+to+call\u0026amp;description=Answers+once+the+agent+has+picked+up+%28up+to+30+seconds%29%3B+%3Fdry_run%3Dtrue+checks+instead+--+the+extension+has+a+phone+registered+to+ring%2C+the+number+resolves%2C+an+o\u0026amp;theme=8bd671d7f61e2dd25bf8b1f2\u0026amp;signature=31381de2b6e88e0905d5f7bd6ebf62ac05a7e4c5e6d53addaa300978274b0954\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/firetone/PKz9Lg6FVpLn28Sy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FireTone\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff4a1c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.firetone.com.au/api-reference/live/click-to-call\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/live/click-to-call.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.firetone.com.au/#organization\",\"name\":\"FireTone\",\"url\":\"https://docs.firetone.com.au\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/firetone/u4xTBZEDCoIufOWT/images/firetone-wordmark.svg?fit=max\u0026auto=format\u0026n=u4xTBZEDCoIufOWT\u0026q=85\u0026s=c5a3d1e942e8000d644aefc1cf3811d2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.firetone.com.au#website\",\"name\":\"FireTone\",\"url\":\"https://docs.firetone.com.au\",\"publisher\":{\"@id\":\"https://docs.firetone.com.au/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.firetone.com.au/api-reference/live/click-to-call#webpage\",\"url\":\"https://docs.firetone.com.au/api-reference/live/click-to-call\",\"name\":\"Click to call\",\"description\":\"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\\\n\\\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.\",\"dateModified\":\"2026-10-05T07:09:54.260Z\",\"isPartOf\":{\"@id\":\"https://docs.firetone.com.au#website\"},\"breadcrumb\":{\"@id\":\"https://docs.firetone.com.au/api-reference/live/click-to-call#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.firetone.com.au/api-reference/live/click-to-call#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.firetone.com.au/api-reference/provisioning/list-agents\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Live\",\"item\":\"https://docs.firetone.com.au/api-reference/live/a-call-requests-progress\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Click to call\",\"item\":\"https://docs.firetone.com.au/api-reference/live/click-to-call\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.firetone.com.au/api-reference/live/click-to-call#apireference\",\"headline\":\"Click to call\",\"name\":\"Click to call\",\"description\":\"Answers once the agent has picked up (up to 30 seconds); ?dry_run=true checks instead -- the extension has a phone registered to ring, the number resolves, an outside number has a route and credit -- and returns the plan, placing nothing. Rings the agent first, then dials the destination when they answer. Dialling the destination first would leave the called party waiting in silence, and if no agent answered they were called for nothing.\\\\n\\\\nThe answered leg enters the ordinary router, so trunk selection and the billing gate apply exactly as to a handset dialling out.\",\"url\":\"https://docs.firetone.com.au/api-reference/live/click-to-call\",\"mainEntityOfPage\":{\"@id\":\"https://docs.firetone.com.au/api-reference/live/click-to-call#webpage\"},\"dateModified\":\"2026-10-05T07:09:54.260Z\",\"publisher\":{\"@id\":\"https://docs.firetone.com.au/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.firetone.com.au#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FireTone\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FireTone","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Running a tenant","pages":[{"title":"Running a tenant","href":"/tenant/inbound/processes"}]},{"tab":"On the phones","pages":[{"title":"On the phones","href":"/agent/signing-in"}]},{"tab":"Supervising","pages":[{"title":"Supervising","href":"/supervisor/what-you-can-do"}]},{"tab":"FireTone Agent","pages":[{"title":"FireTone Agent","href":"/mobile"}]},{"tab":"Running the platform","pages":[{"title":"Running the platform","href":"/operator/organisations"}]},{"tab":"API","groups":[{"group":"Start","pages":[{"title":"Quickstart","href":"/api/quickstart"},{"title":"Authentication","href":"/api/authentication"},{"title":"Conventions","href":"/api/conventions"},{"title":"Errors and limits","href":"/api/errors"}]},{"group":"Building","pages":[{"title":"Placing calls","href":"/api/calls"},{"title":"IVRs and numbers","href":"/api/ivr-and-numbers"},{"title":"Conference rooms","href":"/api/conferences"},{"title":"Running campaigns","href":"/api/campaigns"},{"title":"Contacts and call data","href":"/api/contacts-and-data"},{"title":"Webhooks","href":"/api/webhooks"},{"title":"Messages to the phone","href":"/api/call-info"},{"title":"Live events","href":"/api/events"},{"title":"Recipes","href":"/api/recipes"}]},{"group":"Tools","pages":[{"title":"The Developer section","href":"/api/developer"},{"title":"Reference","href":"/api/reference"},{"title":"Changelog","href":"/api/changelog"}]},{"group":"API reference","pages":[{"group":"Provisioning","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /agents","href":"/api-reference/provisioning/list-agents"},{"title":"List conference rooms","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conference-rooms","href":"/api-reference/provisioning/list-conference-rooms"},{"title":"Create a conference room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conference-rooms","href":"/api-reference/provisioning/create-a-conference-room"},{"title":"Get a conference room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conference-rooms/{id}","href":"/api-reference/provisioning/get-a-conference-room"},{"title":"Delete a conference room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json delete /conference-rooms/{id}","href":"/api-reference/provisioning/delete-a-conference-room"},{"title":"Update a conference room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /conference-rooms/{id}","href":"/api-reference/provisioning/update-a-conference-room"},{"title":"Dial somebody into a room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conference-rooms/{id}/dial","href":"/api-reference/provisioning/dial-somebody-into-a-room"},{"title":"Set which extensions need no PIN for a room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json put /conference-rooms/{id}/exemptions","href":"/api-reference/provisioning/set-which-extensions-need-no-pin-for-a-room"},{"title":"Which of a room's sessions a virtual agent sat in","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conference-rooms/{id}/meetings","href":"/api-reference/provisioning/which-of-a-rooms-sessions-a-virtual-agent-sat-in"},{"title":"Set a room's default members","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json put /conference-rooms/{id}/members","href":"/api-reference/provisioning/set-a-rooms-default-members"},{"title":"A room's history","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conference-rooms/{id}/sessions","href":"/api-reference/provisioning/a-rooms-history"},{"title":"What the virtual agent made of a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conference-rooms/{id}/sessions/{sid}/meeting","href":"/api-reference/provisioning/what-the-virtual-agent-made-of-a-session"},{"title":"Play a session's recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conference-rooms/{id}/sessions/{sid}/recording/audio","href":"/api-reference/provisioning/play-a-sessions-recording"},{"title":"List DIDs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /dids","href":"/api-reference/provisioning/list-dids"},{"title":"Assign a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /dids","href":"/api-reference/provisioning/assign-a-number"},{"title":"Get a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /dids/{id}","href":"/api-reference/provisioning/get-a-number"},{"title":"Delete a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json delete /dids/{id}","href":"/api-reference/provisioning/delete-a-number"},{"title":"Update a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /dids/{id}","href":"/api-reference/provisioning/update-a-number"},{"title":"List extensions","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /extensions","href":"/api-reference/provisioning/list-extensions"},{"title":"One extension","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /extensions/{id}","href":"/api-reference/provisioning/one-extension"},{"title":"List virtual agent profiles","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /virtual-agent-profiles","href":"/api-reference/provisioning/list-virtual-agent-profiles"}]},{"group":"Auth","pages":[{"title":"Resolved scope for the current token","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /auth/me","href":"/api-reference/auth/resolved-scope-for-the-current-token"}]},{"group":"Live","pages":[{"title":"A call request's progress","description":"What an API-placed call is doing: dialing, connected (with call_uuid), completed, or failed (with failure). Requires calls:read.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /call-requests/{id}","href":"/api-reference/live/a-call-requests-progress"},{"title":"Click to call","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls","href":"/api-reference/live/click-to-call"},{"title":"Live channels","description":"Read from FreeSWITCH on every request, never cached: the switch is the only thing that knows, and a cached copy is wrong the moment a call ends. WHOLE BY DEFAULT: with no `limit` every call visible to the caller is returned, as it always was, because dashboards count and scan the whole list. Sending `limit` pages it like any list (up to 500). Sort keys: started_at, state, caller, destination, direction; with no sort the switch's own order. q searches the caller, destination and call uuid. Filters: state, direction, organisation_id.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /calls/active","href":"/api-reference/live/live-channels"},{"title":"An AI agent calls a number","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls/ai","href":"/api-reference/live/an-ai-agent-calls-a-number"},{"title":"Ring a number into an IVR","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls/ivr","href":"/api-reference/live/ring-a-number-into-an-ivr"},{"title":"One call","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /calls/{uuid}","href":"/api-reference/live/one-call"},{"title":"Hang up a live call","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json delete /calls/{uuid}","href":"/api-reference/live/hang-up-a-live-call"},{"title":"What was posted to a call's callback URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /calls/{uuid}/callbacks","href":"/api-reference/live/what-was-posted-to-a-calls-callback-url"},{"title":"Put a live call on hold","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls/{uuid}/hold","href":"/api-reference/live/put-a-live-call-on-hold"},{"title":"Transfer a live call to an extension or queue","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls/{uuid}/transfer","href":"/api-reference/live/transfer-a-live-call-to-an-extension-or-queue"},{"title":"Take a live call off hold","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls/{uuid}/unhold","href":"/api-reference/live/take-a-live-call-off-hold"},{"title":"WebSocket event stream","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /events","href":"/api-reference/live/websocket-event-stream"}]},{"group":"Calls","pages":[{"title":"Merge two of your calls, or dial a third party into this one","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /calls/{uuid}/conference","href":"/api-reference/calls/merge-two-of-your-calls-or-dial-a-third-party-into-this-one"},{"title":"Get one call","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /cdrs/{uuid}","href":"/api-reference/calls/get-one-call"},{"title":"Download the recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /cdrs/{uuid}/recording/audio","href":"/api-reference/calls/download-the-recording"},{"title":"Rooms live right now","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conferences","href":"/api-reference/calls/rooms-live-right-now"},{"title":"The live room a call is in","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conferences/by-call/{uuid}","href":"/api-reference/calls/the-live-room-a-call-is-in"},{"title":"Who is in a room now","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conferences/{room}","href":"/api-reference/calls/who-is-in-a-room-now"},{"title":"End a room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/end","href":"/api-reference/calls/end-a-room"},{"title":"Lock a room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/lock","href":"/api-reference/calls/lock-a-room"},{"title":"Remove a member","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/members/{member}/kick","href":"/api-reference/calls/remove-a-member"},{"title":"Mute a member","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/members/{member}/mute","href":"/api-reference/calls/mute-a-member"},{"title":"Unmute a member","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/members/{member}/unmute","href":"/api-reference/calls/unmute-a-member"},{"title":"Mute or unmute everyone but the moderators","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/mute-all","href":"/api-reference/calls/mute-or-unmute-everyone-but-the-moderators"},{"title":"Start or stop recording a room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/record","href":"/api-reference/calls/start-or-stop-recording-a-room"},{"title":"Unlock a room","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /conferences/{room}/unlock","href":"/api-reference/calls/unlock-a-room"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"Create a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"Get one campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /campaigns/{id}","href":"/api-reference/campaigns/get-one-campaign"},{"title":"Update a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /campaigns/{id}","href":"/api-reference/campaigns/update-a-campaign"},{"title":"The campaign's call list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /campaigns/{id}/contacts","href":"/api-reference/campaigns/the-campaigns-call-list"},{"title":"Load contacts into a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /campaigns/{id}/contacts","href":"/api-reference/campaigns/load-contacts-into-a-campaign"},{"title":"What agents recorded about this campaign's calls","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /campaigns/{id}/dispositions","href":"/api-reference/campaigns/what-agents-recorded-about-this-campaigns-calls"},{"title":"Pause a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /campaigns/{id}/pause","href":"/api-reference/campaigns/pause-a-campaign"},{"title":"Each contact's final outcome","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /campaigns/{id}/results","href":"/api-reference/campaigns/each-contacts-final-outcome"},{"title":"Resume a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /campaigns/{id}/resume","href":"/api-reference/campaigns/resume-a-campaign"},{"title":"Start a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /campaigns/{id}/start","href":"/api-reference/campaigns/start-a-campaign"},{"title":"What a campaign is doing right now","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /campaigns/{id}/stats","href":"/api-reference/campaigns/what-a-campaign-is-doing-right-now"},{"title":"Stop a campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /campaigns/{id}/stop","href":"/api-reference/campaigns/stop-a-campaign"}]},{"group":"Reporting","pages":[{"title":"List call detail records","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /cdrs","href":"/api-reference/reporting/list-call-detail-records"},{"title":"Export a period's calls","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /cdrs/export","href":"/api-reference/reporting/export-a-periods-calls"}]},{"group":"Conversations","pages":[{"title":"The conversation for a call","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /cdrs/{uuid}/conversation","href":"/api-reference/conversations/the-conversation-for-a-call"},{"title":"List conversations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conversations","href":"/api-reference/conversations/list-conversations"},{"title":"One conversation with its transcript","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /conversations/{id}","href":"/api-reference/conversations/one-conversation-with-its-transcript"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /contacts","href":"/api-reference/contacts/list-contacts"},{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /contacts","href":"/api-reference/contacts/create-a-contact"},{"title":"Create or update a contact by your id","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json put /contacts/by-reference/{reference}","href":"/api-reference/contacts/create-or-update-a-contact-by-your-id"},{"title":"Who is this number","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /contacts/lookup","href":"/api-reference/contacts/who-is-this-number"},{"title":"One contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /contacts/{id}","href":"/api-reference/contacts/one-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json delete /contacts/{id}","href":"/api-reference/contacts/delete-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /contacts/{id}","href":"/api-reference/contacts/update-a-contact"}]},{"group":"Integrations","pages":[{"title":"Whether the callback secret is set","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /integration/callback-secret","href":"/api-reference/integrations/whether-the-callback-secret-is-set"},{"title":"Create or rotate the callback secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /integration/callback-secret","href":"/api-reference/integrations/create-or-rotate-the-callback-secret"},{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /webhooks","href":"/api-reference/integrations/list-webhooks"},{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /webhooks","href":"/api-reference/integrations/create-a-webhook"},{"title":"The events a webhook can subscribe to","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /webhooks/events","href":"/api-reference/integrations/the-events-a-webhook-can-subscribe-to"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json delete /webhooks/{id}","href":"/api-reference/integrations/delete-a-webhook"},{"title":"Update a webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /webhooks/{id}","href":"/api-reference/integrations/update-a-webhook"},{"title":"A webhook's deliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /webhooks/{id}/deliveries","href":"/api-reference/integrations/a-webhooks-deliveries"},{"title":"One delivery, with the exact body sent","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /webhooks/{id}/deliveries/{deliveryID}","href":"/api-reference/integrations/one-delivery-with-the-exact-body-sent"},{"title":"Send a delivery again","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /webhooks/{id}/deliveries/{deliveryID}/redeliver","href":"/api-reference/integrations/send-a-delivery-again"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /webhooks/{id}/test","href":"/api-reference/integrations/send-a-test-event"}]},{"group":"IVR","pages":[{"title":"List IVR flows","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /ivr-flows","href":"/api-reference/ivr/list-ivr-flows"},{"title":"Create an IVR flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /ivr-flows","href":"/api-reference/ivr/create-an-ivr-flow"},{"title":"Get one IVR flow with its graph","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /ivr-flows/{id}","href":"/api-reference/ivr/get-one-ivr-flow-with-its-graph"},{"title":"Delete an IVR flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json delete /ivr-flows/{id}","href":"/api-reference/ivr/delete-an-ivr-flow"},{"title":"Update an IVR flow's metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /ivr-flows/{id}","href":"/api-reference/ivr/update-an-ivr-flows-metadata"},{"title":"Get a one-time link to the IVR designer","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /ivr-flows/{id}/designer-session","href":"/api-reference/ivr/get-a-one-time-link-to-the-ivr-designer"},{"title":"Publish the draft revision","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /ivr-flows/{id}/publish","href":"/api-reference/ivr/publish-the-draft-revision"}]},{"group":"Tickets","pages":[{"title":"List tickets","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /tickets","href":"/api-reference/tickets/list-tickets"},{"title":"Raise a ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /tickets","href":"/api-reference/tickets/raise-a-ticket"},{"title":"One ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /tickets/{id}","href":"/api-reference/tickets/one-ticket"},{"title":"Update a ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json patch /tickets/{id}","href":"/api-reference/tickets/update-a-ticket"},{"title":"Ticket history","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /tickets/{id}/updates","href":"/api-reference/tickets/ticket-history"},{"title":"Add a note","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json post /tickets/{id}/updates","href":"/api-reference/tickets/add-a-note"}]},{"group":"Voicemail","pages":[{"title":"List voicemail messages","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /voicemail","href":"/api-reference/voicemail/list-voicemail-messages"},{"title":"Get one voicemail message","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /voicemail/{id}","href":"/api-reference/voicemail/get-one-voicemail-message"},{"title":"Play a voicemail recording","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public.json get /voicemail/{id}/audio","href":"/api-reference/voicemail/play-a-voicemail-recording"}]}]}]}]},"basePath":"","title":"Click to call - FireTone","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}