Guider
Uppgifter
En uppgift ringer upp en lista med mottagare med en enda agent enligt regler som ställs in i förväg - budget, samtalsfönster, antal försök. Ingenting ringas upp förrän uppgiften startas manuellt.
Vad en uppgift är
En uppgift (task_...) är en utgående kampanj: en agent på volais motor, en lista med mottagare med telefonnummer och valfria variabler för systemprompten, samt regler (budget, samtalsfönster, högsta antal försök och samtalslängd). Tre typer efter syfte - invoice (betalningspåminnelse), appointment (bekräftelse av tid) och custom (allt annat) - för de två första dessutom, när source är integration, bär varje mottagare en referens till ett dokument eller en händelse (externalRefs) som agenten nämner i samtalet.
Agenten måste ligga på volais egen motor (useForOutboundTasks: true vid skapandet, se POST /v1/agents), inte på ElevenLabs - motorn hanterar variabler för systemprompten, tak för samtalslängd och kontroll av att dess konfiguration inte har ändrats under kampanjens gång. Agentens utkast måste vara PUBLICERAT (PATCH /v1/agents/{id} eller POST /v1/agents/{id}/draft/publish) OCH den publicerade versionen måste vara TESTAD (POST /v1/agents/{id}/simulate) - saknas något av stegen returnerar start agent_not_ready.
Statusar och övergångar
I praktiken går en uppgift alltid från `draft` direkt till `running` (`start`); borttagning (`DELETE`) går bara i markerade statusar.
draftstart har aldrig körts. Redigerbar (PATCH), kan tas bort.readydraft och running som start godtar som utgångspunkt - ingen publik endpoint (varken REST eller MCP) flyttar dock i dag en uppgift dit, så den dyker i praktiken inte upp. Skulle den uppstå är den redigerbar och kan tas bort på samma sätt som draft.runningPATCH returnerar task_not_editable utan undantag. Den som behöver ändra variabler måste först stoppa uppgiften (POST .../pause) och ändra först i paused - och bara så länge ingen mottagare ännu har ringts upp; efter det första försöket går recipients (och därmed variablerna) inte längre att byta ut (items_immutable) och det återstår att skapa en ny uppgift. Kan inte tas bort. När uppgiften når en samtalsgräns (rate_limited - gränsen för utgående minuter på den egna motorn, taket för dess samtidiga utgående samtal, som standard 10 samtal per minut eller 1000 per dygn) förblir den running: den sätter lastError: "rate_limited", försöket räknas inte och väntande kontakter får items[].nextAttemptAt vid gränsens slut (enligt Retry-After, annars efter 5 minuter; vid motorns tak för samtidiga samtal skickar motorn Retry-After: 30). När tiden gått fortsätter den av sig själv. På samma sätt väntar den när kontots kvot för samtidiga samtal med agenten är full (relay_lease_limit, som standard 2 pågående samtal): lastError: "relay_lease_limit", nästa försök om en minut, försöket räknas inte. Ett upptaget nummer (destination_busy - ett annat samtal pågår just nu till samma nummer, till exempel från en annan uppgift eller ett manuellt samtal, eller så är numret låst i 15 minuter efter en osäker uppringning) får bara den berörda kontakten att vänta, inte hela uppgiften: items[].lastError: "destination_busy", items[].nextAttemptAt enligt återstående låstid för numret (minst 30 s, högst 16 min, utan lås 90 s), försöket räknas inte (countsAsAttempt: false) och övriga kontakter rings vidare. Efter den 6:e upptagetsignalen i rad (alltså efter 5 väntetider) går kontakten till review med reviewReason: "dial:destination_busy". Ett bestående hinder i numret (on_dnc, destination_auto_blocked, cannot_call_own_number, cannot_call_volai_number, invalid_number, unsupported_country, blocked_destination) stoppar inte heller uppgiften: kontakten går till review med reviewReason: "dial:<code>" (inget samtal uppstod, så försöket har countsAsAttempt: false och förbrukar inte maxAttempts), uppgiften förblir running, ringer övriga kontakter och går över till needs_attention först när inget annat arbete återstår. Om volais operatör manuellt pausar uppgiftens agent förblir uppgiften running och ringer ingenting; efter återupptagandet fortsätter den av sig själv. En pausad agent känns igen på suspended: true i GET /v1/agents/{id}.pausedPOST .../pause); ett samtal som redan pågår avslutas. Redigerbar, kan tas bort, start återupptar den. En paus mitt i ett samtal lämnar reviewReason: "dispatch_in_flight" tills reconcile (schemaläggaren kör den inom några minuter) har avräknat det samtalet, och fram till dess avvisar start med task_needs_attention; därefter förblir en uppgift med arbete kvar paused även om andra kontakter väntar i review. En paus som infaller strax före själva samtalet (samtalet har ännu inte uppstått) lämnar inte dispatch_in_flight: schemaläggaren återför kontakten till de väntande och uppgiften är direkt paused utan orsak. En kontakt vars hantering avbröts av ett krasch innan samtalet uppstod frigörs av reconcile tidigast 15 minuter efter att uppringningen påbörjades (claim 10 minuter plus marginal på 5 minuter) och återförs till de väntande; en uppgift som under tiden stoppades av en utgången claim (dispatch_claim_expired) går då över till paused. Om ett pågående samtal slutar utan känt pris går uppgiften först till needs_attention med reviewReason: "billing_unknown" och återgår till paused när priset kommit (reconcile kompletterar det). Om maxAttempts under tiden sänks så att ingen kontakt som väntar på nästa försök längre har ett ledigt försök förblir uppgiften paused (en sådan kontakt räknas som arbete), men start avvisar den med task_not_startable tills maxAttempts höjs.completedneeds_attentionagent_version_changed), motorn varit tillfälligt otillgänglig (engine_contract_unavailable) eller så är priset för ett redan genomfört samtal ännu inte känt (billing_unknown). POST .../reconcile justerar läget; kan tas bort så länge ingen post har förblivit in_progress. En kontakt i status review hanteras via POST .../items/{itemId}/resolve (retry/skip); en kontakt med ett bestående hinder i numret (dial:on_dnc, dial:destination_auto_blocked, dial:cannot_call_own_number, dial:cannot_call_volai_number, dial:invalid_number, dial:unsupported_country, dial:blocked_destination, eller dial:destination_busy efter den 6:e upptagetsignalen i rad) stoppar därmed uppgiften först när övriga kontakter har körts klart. Ett osäkert resultat av uppringningen (till exempel dial:engine_unavailable) skickar uppgiften till needs_attention genast och övriga kontakter rings inte upp. När samtalet bakom ett sådant avbrott (eller ett okänt pris) har avräknats via reconcile går uppgiften över till paused så länge någon kontakt väntar på nästa försök, även om andra ligger i review; till needs_attention bara när inget återstår att ringa utom en kontakt i review, och till completed när inget återstår. En uppringning vars resultat förblir osäkert (samtalet går inte att hitta) håller uppgiften i needs_attention tills kontakten avgjorts. Vid en vanlig orsak går uppgiften efter det sista avgörandet över till paused om arbete återstår, eller till completed om alla kontakter är klara eller överhoppade. En orsak på hela uppgiftens nivå ligger kvar i needs_attention tills den är löst; undantaget är budget_exceeded, där överhoppning av alla kontakter som väntar på nästa försök slutför uppgiften om ingen leverantörsstatus väntar längre. Särskilt förfarande för billing_unknown finns nedan.Exakt villkor för borttagning: statusen är en av de markerade ovan OCH INGEN post har status: "in_progress" (ett pågående samtal som ännu inte slutat) - annars task_not_deletable.
Import av mottagare (CSV)
POST /v1/tasks/csv-preview tolkar CSV-filen och returnerar den med fel för enskilda rader - INGET sparas, det är bara en förhandsgranskning före skapande eller ändring av en uppgift. Samma funktion anropas av formuläret för ny uppgift i portalen.
- Avgränsaren känns igen automatiskt (kommatecken eller semikolon) utifrån första raden.
- Kolumnen
phonemåste finnas - versaler, mellanslag runt namnet och kolon efter det spelar ingen roll, och äventelefon,telellermobilgodtas; i förhandsgranskningen returneras kolumnen alltid somphone. En ren lista med nummer utan rubrik (ett per rad, en enda kolumn) godtas också. Annars faller hela CSV-filen på ett enda felphonevid rubriken. - Varje ytterligare kolumn är en variabel för agentens systemprompt (
{{column_name}}) - högst 20 kolumner, namn högst 64 tecken, värde högst 512 tecken. - Telefonnumret normaliseras på samma sätt som överallt i API:t (
normalizePhone) - ett ogiltigt eller tomt nummer är ett fel bara på DEN raden, resten av CSV-filen behandlas vidare. - En cell som ser ut som en kalkylbladsformel (börjar med
=,+,-eller@) avvisas - skydd mot CSV-injektion när filen öppnas i Excel. - Högst 1000 rader per CSV (samma tak som antalet mottagare i en uppgift) och 1 MB rå text; hela uppgiften med underlag måste rymmas inom 2 MB, annars returnerar skapandet
validation.
Svaret innehåller headers, delimiter, rows (varje rad med sina fel), validRows (bara felfria, exakt i den form som recipients i POST /v1/tasks förväntar sig) och sammanfattande errors. validRows skickas direkt som recipients vid skapande eller ändring av en uppgift.
Budget och samtalsfönster
Budget
budgetHal är TAKET för utgifterna i minsta enhet (hal) för hela uppgiften. Vid skapandet måste det täcka minst ett försök av maximal längd (annars budget_too_low); vid start reserveras före VARJE uppringning det högsta möjliga priset för försöket (reservedBudgetHal), och först ett besvarat samtal för över det till spentHal. Reservationen är priset för ett samtal på exakt maxDurationSecs (samtalsbenet och agentbenet, vart och ett avrundat uppåt till en hal på samma sätt som vid debiteringen) och ett samtal som avslutas av längdtaket debiteras högst för maxDurationSecs, även om det slutar en bråkdels sekund senare. En uppgift spenderar aldrig mer än det som anges i budgetHal.
Samtalsfönster
callingWindow är {timezone: "Europe/Prague", start, end, days} - i dag stöds bara Pragtidszonen, start/end i formatet HH:MM (slutet inklusive hela minuten: fönstret 09:00-18:00 släpper igenom det sista samtalet kl. 18:00:59, ett fönster till 23:59 täcker hela dygnet) och days är talen 0-6 (0 = söndag). Utan angivelse gäller vardagar 9:00-18:00. Utanför fönstret returnerar start window_closed - vänta antingen tills fönstret öppnas eller ändra fönstret via PATCH. Det valfria expiresAt är kampanjens slut som ett positivt säkert heltal i Unix-millisekunder. Det kontrolleras vid start och före varje uppringning, den första inräknad. Från den tidpunkten påbörjas inget nytt samtal och ett försök förbrukas inte; ett pågående samtal avslutas. Horisonten för upprepning i policyn lorela_enterprise (retryMaxAgeDays, standard 5) räknas däremot som N × 24 timmar från det första räknade försöket, inte från att uppgiften skapades.
Försök och samtalslängd
maxAttempts är 1-3 utan policy (standard 1), med retryPolicy: "lorela_enterprise" 1-4 (vid skapandet standard 4). Det anger det högsta antalet automatiska uppringningar av en kontakt, den första inräknad (1 = ingen upprepning). Varje försök där samtalet kunde ha genomförts räknas, alltså även obesvarade eller avvisade av den uppringda och ett försök med osäkert resultat. Ett försök som volai avvisade redan före uppringningen räknas inte (till exempel ett blockerat, eget eller ogiltigt nummer, spärrlistan, ett nummer dit just nu ett annat samtal pågår, samtalsgränser); ett sådant försök har items[].attempts[].countsAsAttempt: false. Inte heller räknas ett samtal vars mål operatören inte fick i tid, så att den uppringdas telefon aldrig ringde (försöket har errorCode: "relay_not_routed", samtalet endReason: "rejected"): kontakten får ett nytt försök tidigast efter en minut (med policyn lorela_enterprise enligt dess schema) och efter det tredje sådana försöket i rad går den till kontroll med reviewReason: "call:relay_not_routed". Inte heller räknas ett samtal som vår röstmotor aldrig rapporterade och som vi efter två timmar utan meddelande stängde som ej uppringt och utan pris (försöket har errorCode: "no_provider_report"): kontakten återgår bland de väntande och får ett nytt försök tidigast efter en minut (med policyn lorela_enterprise enligt dess schema). Tre icke räknade försök i rad, även blandade med försök av typen relay_not_routed, skickar kontakten till kontroll med reviewReason enligt det sista av dem, alltså call:no_provider_report; kontakter som ett sådant samtal tidigare skickade till kontroll (call:failed, med policyn call:unknown) återupptas inte av sig själva. Utan policy gäller taket bara automatiska uppringningar: en kontakt som efter förbrukade försök får resolve med action: "retry" får ytterligare en uppringning. maxDurationSecs (30-300) är taket för längden på ETT samtal, varefter det avslutas automatiskt - standardlängden är 120 sekunder. Den valfria policyn lorela_enterprise slås på via API eller MCP före det första försöket; befintliga uppgifter ändras inte av sig själva. Det andra försöket sker tidigast 8 minuter efter början av det första faktiska försöket under tiden 08:00-22:00 Europe/Prague. Det tredje går till nästa andra fönster 08:00-09:00 eller 17:00-19:00, det fjärde till det motsatta fönstret nästa kalenderdag. Alltid gäller också callingWindow och dess dagar; efter upprepningshorisonten ringer policyn inte igen: det valfria retryMaxAgeDays är ett heltal dagar 1-30 (utan angivelse 5) och gäller bara med policyn. Horisonten slutar N × 24 timmar efter kontaktens första räknade försök (fasta 24-timmarsdygn, så över en tidsomställning förskjuts slutets lokala tid med en timme). Den kan ändras via PATCH även efter att försöken börjat (inte för en uppgift som är running eller completed, den kan inte ändras): en höjning för en pausad uppgift återför kontakter som föll bort bara på grund av horisonten (reviewReason: "retry_age_expired") till status failed (väntar på nästa försök) med nytt nextAttemptAt, om de ännu har ett ledigt försök och schemats närmaste slot hamnar inom den nya horisonten och före expiresAt; en sänkning öppnar ingenting. Bara en PATCH som höjer horisonten öppnar på nytt, så retryMaxAgeDays och ett förlängt expiresAt ska skickas i samma anrop. Policyn upprepar bara no_answer, missed, busy, en slutförd röstbrevlåda och ett besvarat samtal där den uppringda inte sa något (allt utan kontakt med en människa). Kontakt med en människa, avvisande och motorfel stoppar den automatiska upprepningen; ett oklart resultat går till kontroll. Det sista tillåtna försöket (maxAttempts) som slutar med ett sådant upprepningsbart resultat (obesvarat, upptaget, röstbrevlåda eller ett besvarat samtal där den uppringda inte sa något) stänger kontakten som skipped med reviewReason: "retry_policy_exhausted" (som retry_age_expired efter att horisonten löpt ut): det finns inget att kontrollera eller upprepa. Ett oklart resultat av det sista försöket stannar i review med samma orsak. Utan policy ändras ingenting: det sista obesvarade försöket är fortfarande review. En verifierad mänsklig återuppringning efter förbrukade försök sätter kontakten på completed. DNC, budget och gränser gäller fortfarande: den automatiska blockeringen efter 3 misslyckanden på 24 timmar kan stoppa även ett fjärde försök. Vid PATCH utan maxAttempts ligger den hittillsvarande gränsen kvar. Med policyn returnerar en manuell resolve med action: "retry" felet validation; tillåtna är bara dess automatiskt schemalagda försök. Undantaget är återställning av en bevisligen ej uppringd utgången claim före det första faktiska försöket: utan aktiv worker, dispatch-avsikt, provider call ID, reservation, pris eller callback och bara med belagda avvisanden före uppringningen i historiken. Återställningen bevarar historiken och taken och återför kontakten bland de väntande i den pausade uppgiften; den ringer inte själv. Påminnelser kan inte öppnas på nytt på det här sättet. Manuell upprepning kringgår alltså inte fyra försök, upprepningshorisonten eller avslutet efter kontakt med en människa.
Global genomströmning
Uppringningen av alla uppgifter på HELA plattformen (inte bara det egna kontot) går genom ett enda cron som körs varannan minut och behandlar högst 20 poster per körning - MEN taket delas mellan samtidigt körande uppgifter, så att en enda uppgift inte kan förbruka det: från VARJE aktiv uppgift rings per körning exakt EN mottagare upp. Även på en helt tom plattform ringer därför en uppgift aldrig upp fler än en mottagare per 2 minuter - hundra mottagare hinns alltså inte med på ~20 minuter, utan på ungefär 200 minuter (100 x 2 minuter). Planera samtalsfönstret efter det för tidskänsliga kampanjer (till exempel appointment dagen före tiden).
Arbetsgång för agenten
Ett typiskt förlopp, i den här ordningen:
- Uppgiftens agent måste vara PUBLICERAD och den publicerade versionen TESTAD (
POST /v1/agents/{id}/draft/publish, därefterPOST /v1/agents/{id}/simulate) - annars returnerar en senarestartagent_not_ready. - Valfritt
POST /v1/tasks/csv-preview- kontrollerar mottagarnas CSV innan uppgiften skapas. POST /v1/tasks- skapar uppgiften i statusdraft. Ingenting ringas upp.GET /v1/tasks/{id}- läsissues(dry-run-validering) och kontrollera att uppgiften är redo för start.- Vid behov
PATCH /v1/tasks/{id}- justera reglerna, ALLTID medrevisionfrån den senaste läsningen. POST /v1/tasks/{id}/start- startar uppringningen. Varje besvarat samtal debiteras genast.POST /v1/tasks/{id}/pausenär som helst under körningen,POST /v1/tasks/{id}/startåterupptar igen.- Efter ett avbrott (paus mitt i ett samtal, utgången claim, ett samtal med ännu okänt pris eller en osäker uppringning där samtalet hittats) justerar
POST /v1/tasks/{id}/reconcileläget mot de faktiska samtalen; en sådan uppgift med arbete kvar hamnar ipausedäven om vissa kontakter väntar ireview, och går att starta på nytt viastart. En körande uppgift eller en annan orsak (variables_limit, misslyckad kontroll av faktura eller kalender, en osäker uppringning där samtalet inte hittats) ändras inte avreconcile; kontakter för kontroll hanteras viaresolve. - En kontakt som hamnat i kontroll (
items[].status: "review") hanteras medPOST /v1/tasks/{id}/items/{itemId}/resolvemedaction: "retry"eller"skip". Vid en vanlig orsak återförretrykontakten bland de väntande och uppgiften tillpaused;skipstänger den och uppgiften går över tillpausedom arbete återstår, eller tillcompletedom alla kontakter är klara eller överhoppade. En uppgift ipausedåterupptas sedan medPOST /v1/tasks/{id}/start. - När en kontakt har
reviewReason: "dial:destination_auto_blocked"är numret automatiskt blockerat i 30 dagar efter upprepade obesvarade samtal och enbartretryhäver inte blockeringen - kontakten skulle genast hamna ireviewigen. Häv först blockeringen (POST /v1/dnc/{e164}/unblock, i MCPunblock_destination, numret hämtas frånitems[].phone) och gör därefterresolvemedaction: "retry". Viddial:on_dnctas först numret bort från spärrlistan (DELETE /v1/dnc/{e164}), annars hoppas kontakten över. För kontots eget nummer, ett annat volai-kontos nummer, ett ogiltigt nummer, ett nummer utanför Tjeckien och Slovakien och en premiumlinje (dial:cannot_call_own_number,dial:cannot_call_volai_number,dial:invalid_number,dial:unsupported_country,dial:blocked_destination) hjälper inget ytterligare försök: använd baraskip. - När en kontakt har
reviewReason: "billing_unknown"kan det ursprungliga samtalet redan ha genomförts, bara utan känt pris ännu. Anropa förstreconcileoch kontrollera det kopplade samtalet.retrynoterar att kontakten ska prövas igen men tillåter inget nytt samtal förrän det ursprungliga priset har landat; därefter går uppgiften över tillpausedoch kräver en nystart.skipförhindrar ytterligare samtal; det ursprungliga samtalet förblir kopplat och dess reservation räknas fortfarande in i budgeten tills priset har landat. Återstår arbete går uppgiften efterskipdirekt tillpausedoch kan startas; utan mer arbete väntar den ineeds_attentionoch hamnar icompletednär priset har landat. Ett samtal som aldrig ringdes upp (motorn avvisade det) debiteras aldrig och landar genast på 0. - En kontakt som under tiden har köpt eller avregistrerat sig hoppas över utan samtal via
resolvemedaction: "skip",reason: "customer_purchased"eller"unsubscribed",revision, ett stabiltoperationIdoch enevidenceRefsom pekar på underlaget för köpet eller avregistreringen (aldrig på telefon eller e-post). Det går för enpending-kontakt i en uppgift idraftoch förpending/failedi en uppgift ipausedutan olöst samtal; försök, priser och spärrlistan bevaras.GET /v1/tasks/{id}visar sedan underlaget iitems[].resolution(reason,operationId,evidenceRef,resolvedAt); samma body kan upprepas säkert, ett annatreasoneller en annanevidenceRefför samma kontakt ger409 revision_conflict. Överhoppningen skriver inte numret till spärrlistan: ska en kontakt aldrig mer ringas läggs den till viaPOST /v1/dnc. DELETE /v1/tasks/{id}i slutet, om uppgiften aldrig har körts eller redan är klar och posten ska tas bort.
Nästan varje skrivande anrop (PATCH, start, pause, DELETE) tar revision från den senaste läsningen av uppgiften - samma optimistiska samtidighet som för agentutkast. En avvikelse returnerar revision_conflict: läs uppgiften på nytt (GET) och upprepa med den aktuella revision. reconcile är ett undantag - revision är där valfri.
MCP
Samma verktyg som i REST (list_tasks, get_task, create_task, update_task, pause_task, resolve_task_item, reconcile_task, start_task) - förutom en skillnad vid start.
start_task bekräftar siffrorna
MCP start_task tar dessutom confirmedRecipients och confirmedBudgetHal - de måste stämma exakt med det faktiska antalet mottagare och uppgiftens budget, annars returneras validation med de faktiska värdena utskrivna och INGET startas. En främmande AI-agent kan därmed inte på grund av en enda missförstådd instruktion av misstag sätta igång en betald kampanj på påhittade siffror - REST POST .../start har inte den mekaniken, eftersom där kontoägaren själv anropar med sin egen nyckel.
delete_task och CSV-förhandsgranskning finns inte i MCP - borttagning finns kvar i REST och portalen (en oåterkallelig åtgärd med inskrivning av namnet), CSV-förhandsgranskningen är bara ett steg i formuläret.
Fel
task_not_found- Ingen uppgift med det häridfinns på kontot.task_not_editable- Uppgiften körs eller är klar (running/completed), eller ärneeds_attentionutan möjlighet till återupptagande - reglerna går inte att ändra nu. Samma kod returneras även avPOST .../items/{itemId}/resolveför en körande uppgift: en kontakt ireviewdyker upp redan när uppgiften ringer övriga kontakter och fortfarande ärrunning- vänta tills den går över tillneeds_attention, eller pausa den (POST .../pause).items_immutable- Mottagarlistan kan inte ersättas efter att minst ett uppringningsförsök har ägt rum eller en kontakt har hoppats över medreason(köp eller avregistrering).budget_too_low- Budgeten täcker inte ens ett försök av maximal samtalslängd - höjbudgetHaleller sänkmaxDurationSecs.task_not_startable- Uppgiften är inte i statusdraft/ready/paused, eller har ingen väntande mottagare.task_needs_attention- Före nästa start behövsPOST .../reconcile- något (agentens version, motorn) har ändrats under körningen.agent_not_ready- Agentens utkast är antingen inte publicerat, eller så är den publicerade versionen inte testad - publicera det (POST /v1/agents/{id}/draft/publish) och testa sedan den publicerade versionen (POST /v1/agents/{id}/simulate) före start.agent_version_changed- Agentens konfiguration ändrades UNDER en körande uppgift - testa och starta om viareconcile.engine_required- Uppgiftens agent ligger inte på volais motor (useForOutboundTasks: true) - utgående kampanjer kräver i dag motorn, inte ElevenLabs.engine_contract_unavailable- Motorn annonserar för tillfället inget stöd för variabler och tak för utgående uppgifter - försök starta igen senare.window_closed- Utanför det inställda samtalsfönstret - vänta tills det öppnas eller ändracallingWindow.task_not_running- Paus går bara för en körande uppgift.item_not_resolvable- Kontakten är inte i statusreview- avgörande (retry/skip) går bara för en kontakt som väntar på kontroll, och bara för en uppgift som inte körs. Undantaget är överhoppning medreason(customer_purchased,unsubscribed): den kräver en inaktivpending-kontakt i en uppgift idraft, ellerpending/failedipaused, utan olöst samtal.task_not_deletable- Bara en uppgift utan post iin_progressi statusdraft/ready/paused/completed/needs_attentionkan tas bort.revision_conflict- Uppgiften har under tiden ändrats - läs den på nytt (GET) och upprepa med den aktuellarevision.
Den fullständiga felkodstabellen för varje endpoint finns i avsnittet Uppgifter i REST-API-referensen.
Relaterat
MCP server
Connect Claude Code, Codex CLI, Codex desktop, Cursor and other AI editors.
REST API
Complete reference for every endpoint: numbers, calls, SMS, mobile numbers for SMS, agents and their drafts, tools, recordings, webhooks, do-not-call list, relay, account, tasks, credit, documents, calendars and integrations.
Voice agent
System prompt, tools, handoff to a human, recordings and structured call data.