Bas-URL: https://call-my-call-backend.fly.dev
Snabbstartsrequest (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/start-call \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone_number":"+46700000000","task":"Bekräfta min bokning","language":"sv","voice_gender":"female","webhook":"https://example.com/cmc","metadata":{"client_request_id":"req_123"}}' Snabbstart lyckat svar
Kopiera {
"success": true,
"sid": "CA1234567890abcdef"
} share_policy-exempel
Kopiera "share_policy": {
"name_voice": true,
"phone_voice": false,
"phone_dtmf": true,
"pnr_voice": false,
"pnr_dtmf": true
} Idempotensguide: skicka ditt eget metadata.client_request_id och deduplicera retries i ditt system.
Resultatflöde: behåll returnerat sid, hantera webhook-händelser och hämta sedan samtalsdetaljer via ID vid behov.
Kärnendpoints
POST /v1/start-call Starta ett utgående AI-samtal.
Fält / parameter Typ Krävs Beskrivning phone_numberstring ja Who to call. Must be E.164 format (for example +46700000000). taskstring ja What the AI should do/say on this call (your main instruction). userPhonestring villkorligt Phone number of your human operator/user (E.164) who will be added to the call once the call has connected. Used with userOnCall where AI and user are on the call flow at the same time. additionalPromptstring nej Extra instructions appended to task. Default: empty string. languagestring nej Language code (e.g. sv/en/de) for the language the AI will speak. Default: sv (normalized aliases supported). tts_providerstring nej Which TTS engine to use: auto | openai | elevenlabs | azure. If omitted, auto is used (Swedish -> ElevenLabs, English -> OpenAI). voice_genderstring nej Voice gender selector for defaults. Allowed: female | male (alias: voiceGender). Defaults to male when omitted. Used to auto-select default OpenAI + ElevenLabs voices when explicit voice IDs are not provided.
Visa alla (20)
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/start-call \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone_number":"+46700000000","task":"Confirm booking","language":"en","voice_gender":"female","webhook":"https://example.com/cmc"}' Lyckat svar
Kopiera {
"success": true,
"sid": "CA1234567890abcdef"
} Felsvar
Kopiera {
"error": "Insufficient credits",
"credits_balance": 3,
"minimum_required": 5
} GET /v1/calls/:callId Hämta samtalsdetaljer och senaste transkript via call id/sid.
Fält / parameter Typ Krävs Beskrivning callIdstring ja Call SID from start-call response.
Förfrågningsexempel (cURL)
Kopiera curl -X GET https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"call": {
"call_id": "CA1234567890abcdef",
"status": "completed",
"to": "+46700000000",
"created_at": "2026-02-14T10:00:00.000Z"
},
"transcripts": [
{ "role": "assistant", "text": "Hello.", "seq": 1 }
]
} GET /v1/calls/:callId/transcripts/stream Prenumerera på realtime-transkriptuppdateringar via Server-Sent Events.
Fält / parameter Typ Krävs Beskrivning callIdstring ja Call SID from start-call response.
Förfrågningsexempel (cURL)
Kopiera curl -N https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef/transcripts/stream Exempel på stream-eventpayload
Kopiera event: added
data: {"role":"assistant","text":"Hello.","seq":1}
event: ping
data: {"ts":1739511142} GET /v1/calls/:callSid/recording Hämta signerad inspelnings-URL för avslutade samtal (om inspelning aktiverad).
Fält / parameter Typ Krävs Beskrivning formatstring nej Audio format for signed URL. Allowed: mp3 or wav. Default: mp3.
Förfrågningsexempel (cURL)
Kopiera curl -X GET "https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef/recording?format=mp3" \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"recording_url": "https://call-my-call-backend.fly.dev/v1/recordings/RE123.mp3?token=...",
"expires_at": "2026-02-14T12:00:00.000Z"
} Felsvar
Kopiera {
"error": "Recording not found for this call"
} POST /v1/verify-caller-id Starta verifiering av caller ID för anpassad from_number-användning.
Fält / parameter Typ Krävs Beskrivning phone_numberstring ja E.164 number to verify.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/verify-caller-id \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone_number":"+46123456789"}' GET /v1/verification-status/:id Kontrollera verifieringsstatus (pending, verified, failed).
Förfrågningsexempel (cURL)
Kopiera curl -X GET https://call-my-call-backend.fly.dev/v1/verification-status/CA_VERIFICATION_ID \
-H "Authorization: Bearer YOUR_API_KEY" GET /v1/verified-caller-ids Lista verifierade caller IDs för din API-nyckel/ditt konto.
Förfrågningsexempel (cURL)
Kopiera curl -X GET https://call-my-call-backend.fly.dev/v1/verified-caller-ids \
-H "Authorization: Bearer YOUR_API_KEY" DELETE /v1/verified-caller-ids/:phone_number Ta bort ett verifierat caller ID som ägs av din API-nyckel.
Förfrågningsexempel (cURL)
Kopiera curl -X DELETE https://call-my-call-backend.fly.dev/v1/verified-caller-ids/+46123456789 \
-H "Authorization: Bearer YOUR_API_KEY" POST /v1/webhook/test Skicka en syntetisk webhook-payload till din endpoint.
Fält / parameter Typ Krävs Beskrivning webhook_urlstring ja HTTPS URL to receive test event. eventstring nej Defaults to call_completed.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/webhook/test \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"webhook_url":"https://example.com/cmc","event":"call_completed"}' GET /auth/google/calendar Starta Google Calendar OAuth-auktoriseringsflöde.
Fält / parameter Typ Krävs Beskrivning Authorizationheader ja Bearer API key. You may also pass api_key as query param, but header is recommended. formatquery string nej Set format=json to receive auth_url in JSON instead of HTTP redirect.
Förfrågningsexempel (cURL)
Kopiera curl -X GET "https://call-my-call-backend.fly.dev/auth/google/calendar?format=json" \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"success": true,
"auth_url": "https://accounts.google.com/o/oauth2/v2/auth?...",
"state": "a1b2c3..."
} Felsvar
Kopiera {
"error": "Failed to initiate calendar authorization",
"details": "API key required for calendar authorization"
} GET /auth/google/callback OAuth-callback efter Google-samtycke; öppnas vanligtvis via webbläsarredirect.
Fält / parameter Typ Krävs Beskrivning codequery string ja OAuth authorization code from Google. statequery string ja State value from /auth/google/calendar to prevent CSRF. errorquery string nej If user denied consent, Google returns error instead of code.
Förfrågningsexempel (cURL)
Kopiera curl -X GET "https://call-my-call-backend.fly.dev/auth/google/callback?code=GOOGLE_CODE&state=OAUTH_STATE" Lyckat svar
Kopiera <!DOCTYPE html>
<html>...Calendar Authorization Successful...</html> Felsvar
Kopiera {
"error": "Invalid or expired authorization request"
} GET /calendar/status Kontrollera om API-nyckeln har aktiv Google Calendar-auktorisering.
Fält / parameter Typ Krävs Beskrivning Authorizationheader ja Bearer API key.
Förfrågningsexempel (cURL)
Kopiera curl -X GET https://call-my-call-backend.fly.dev/calendar/status \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"authorized": true,
"scopes": ["https://www.googleapis.com/auth/calendar"],
"expires_at": "2026-02-16T20:00:00.000Z"
} Felsvar
Kopiera {
"error": "Failed to check calendar authorization status",
"details": "..."
} POST /auth/google/revoke Återkalla Google Calendar-auktorisering för API-nyckeln.
Fält / parameter Typ Krävs Beskrivning Authorizationheader ja Bearer API key.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/auth/google/revoke \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"success": true,
"message": "Calendar authorization revoked successfully"
} Felsvar
Kopiera {
"error": "Failed to revoke calendar authorization",
"details": "..."
} GET /v1/recordings/:sid.:ext Strömma inspelningsbytes via signerad kortlivad token-URL.
Fält / parameter Typ Krävs Beskrivning sidstring ja Recording SID. extstring ja mp3 or wav. tokenstring ja Signed token query parameter.
Förfrågningsexempel (cURL)
Kopiera curl -L "https://call-my-call-backend.fly.dev/v1/recordings/RE123.mp3?token=SIGNED_TOKEN" POST /v1/elevenlabs/voices Proxy-endpoint för ElevenLabs röstkloning via multipart-uppladdning.
Fält / parameter Typ Krävs Beskrivning namestring ja Voice name label. filesfile[] ja One or more audio sample files. remove_background_noiseboolean nej Noise removal hint for cloning.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/elevenlabs/voices \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "name=My Voice" \
-F "files=@sample1.wav" \
-F "files=@sample2.wav" Endpoints för pågående samtal
POST /v1/end-call Avsluta ett aktivt samtal.
Fält / parameter Typ Krävs Beskrivning callSidstring ja Call SID returned by start-call (the call you want to end).
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/end-call \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"callSid":"CA1234567890abcdef"}' Lyckat svar
Kopiera {
"ok": true,
"alreadyClosed": false,
"transcript": []
} Felsvar
Kopiera {
"error": "Missing callSid"
} POST /v1/calls/:callSid/transfer Överför ett aktivt samtal till en annan destination.
Fält / parameter Typ Krävs Beskrivning destinationstring ja Where to transfer the active call (E.164 phone number). warmboolean nej Transfer mode. true = warm transfer (default), false = cold transfer. reasonstring nej Optional note for audit/logging (not spoken to caller).
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef/transfer \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"+46123456789","warm":true,"reason":"human_requested"}' Lyckat svar
Kopiera {
"success": true,
"transferType": "warm",
"callSid": "CA1234567890abcdef"
} PATCH /v1/calls/:callSid Uppdatera parametrar för aktivt samtal medan samtalet pågår.
Fält / parameter Typ Krävs Beskrivning taskstring nej Replace current AI task for this active call. transfer_numberstring nej Update transfer destination for this active call (E.164). additional_promptstring nej Append extra instructions to current prompt context. max_durationnumber nej Update maximum connected duration (seconds).
Visa alla (1)
Förfrågningsexempel (cURL)
Kopiera curl -X PATCH https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"task":"Updated task","transfer_number":"+46123456789"}' User-on-call-endpoints
POST /v1/calls/:callSid/activate Aktivera AI-övertagning för user-on-call-sessioner.
Fält / parameter Typ Krävs Beskrivning taskstring nej New instruction for AI at takeover time. If omitted, existing task is used. drop_userboolean nej Whether to disconnect the human user when AI takes over. Default: true. additional_promptstring nej Extra instruction appended during activation. transfer_numberstring nej Overrides/sets the handoff destination used by transfer logic during AI phase.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef/activate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"task":"Take over now","drop_user":true}' Lyckat svar
Kopiera {
"success": true,
"ai_activated": true,
"user_dropped": true,
"message": "Call redirected to AI bidirectional stream"
} Felsvar
Kopiera {
"error": "Call not found or not a userOnCall session"
} GET /v1/calls/:callSid/conference-status Hämta user-on-call-konferensens tillstånd och deltagare.
Förfrågningsexempel (cURL)
Kopiera curl -X GET https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef/conference-status \
-H "Authorization: Bearer YOUR_API_KEY" POST /v1/calls/:callSid/drop-user Koppla bort användarbenet från en user-on-call-session.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/v1/calls/CA1234567890abcdef/drop-user \
-H "Authorization: Bearer YOUR_API_KEY" Kalenderautentiseringsendpoints
Kalenderautentiseringsflöde För samtal med enable_calendar=true, auktorisera en gång per API-nyckel: starta OAuth, godkänn samtycke, verifiera status och återkalla vid behov.
GET /auth/google/calendar Starta Google Calendar OAuth-auktoriseringsflöde.
Fält / parameter Typ Krävs Beskrivning Authorizationheader ja Bearer API key. You may also pass api_key as query param, but header is recommended. formatquery string nej Set format=json to receive auth_url in JSON instead of HTTP redirect.
Förfrågningsexempel (cURL)
Kopiera curl -X GET "https://call-my-call-backend.fly.dev/auth/google/calendar?format=json" \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"success": true,
"auth_url": "https://accounts.google.com/o/oauth2/v2/auth?...",
"state": "a1b2c3..."
} Felsvar
Kopiera {
"error": "Failed to initiate calendar authorization",
"details": "API key required for calendar authorization"
} GET /auth/google/callback OAuth-callback efter Google-samtycke; öppnas vanligtvis via webbläsarredirect.
Fält / parameter Typ Krävs Beskrivning codequery string ja OAuth authorization code from Google. statequery string ja State value from /auth/google/calendar to prevent CSRF. errorquery string nej If user denied consent, Google returns error instead of code.
Förfrågningsexempel (cURL)
Kopiera curl -X GET "https://call-my-call-backend.fly.dev/auth/google/callback?code=GOOGLE_CODE&state=OAUTH_STATE" Lyckat svar
Kopiera <!DOCTYPE html>
<html>...Calendar Authorization Successful...</html> Felsvar
Kopiera {
"error": "Invalid or expired authorization request"
} GET /calendar/status Kontrollera om API-nyckeln har aktiv Google Calendar-auktorisering.
Fält / parameter Typ Krävs Beskrivning Authorizationheader ja Bearer API key.
Förfrågningsexempel (cURL)
Kopiera curl -X GET https://call-my-call-backend.fly.dev/calendar/status \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"authorized": true,
"scopes": ["https://www.googleapis.com/auth/calendar"],
"expires_at": "2026-02-16T20:00:00.000Z"
} Felsvar
Kopiera {
"error": "Failed to check calendar authorization status",
"details": "..."
} POST /auth/google/revoke Återkalla Google Calendar-auktorisering för API-nyckeln.
Fält / parameter Typ Krävs Beskrivning Authorizationheader ja Bearer API key.
Förfrågningsexempel (cURL)
Kopiera curl -X POST https://call-my-call-backend.fly.dev/auth/google/revoke \
-H "Authorization: Bearer YOUR_API_KEY" Lyckat svar
Kopiera {
"success": true,
"message": "Calendar authorization revoked successfully"
} Felsvar
Kopiera {
"error": "Failed to revoke calendar authorization",
"details": "..."
} User-on-call förklarat Använd userOnCall: true när AI ska vänta genom IVR/köflöde tills en verklig människa svarar, medan din operatör kan stanna kvar i samtalet och trigga AI-övertagning via /activate vid rätt tillfälle.
Fas Vem hör vad Före activateAnvändare och mål är uppkopplade. AI kan vara tyst/lyssna. Activate anropadBackend omdirigerar målbenet till AI realtime-ström. Om drop_user=true, kopplas användarbenet bort. Efter activateAI hanterar live-samtalet (inklusive kö-/IVR-progression). Om drop_user=true and transfer_number är satt kan AI återansluta/överföra samtalet till det numret när överföringslogik triggas.
Typisk API-sekvens:
1) POST /v1/start-call { userOnCall: true, userPhone, ... }
2) Wait until call is connected
3) POST /v1/calls/:callSid/activate { drop_user?: true|false, task?: string }
4) Optional: GET /v1/calls/:callSid/conference-status
5) Optional: POST /v1/calls/:callSid/drop-user Vanliga fel: samtal hittades inte/inte user-on-call-session (404), AI redan aktiv (400), Twilio redirect/connect-problem (500).
Tillståndsmodell för user-on-call Tillstånd Beteende Nästa initiatedMål- och användarben ringes upp. connected or failedconnectedAnvändare och mål pratar medan AI kan lyssna tyst. ai_takeover or completedai_takeover/activate omdirigerar samtal till AI realtime-ström.activeactiveAI hanterar kö/IVR + samtalsflöde; den kan överföra till transfer_number baserat på uppgift/logik. transferred or completedcompletedSamtalet avslutas och completion-webhook triggas. -