Guias
Tarefas
Uma tarefa liga a uma lista de destinatários com um único agente, segundo regras que define à partida - orçamento, janela de chamadas, número de tentativas. Nada é marcado enquanto não iniciar a tarefa por si.
O que é uma tarefa
Uma tarefa (task_...) é uma campanha de chamadas efetuadas: um agente no motor da volai, uma lista de destinatários com número de telefone e variáveis opcionais para o prompt de sistema, e regras (orçamento, janela de chamadas, máximo de tentativas e duração da chamada). Existem três tipos consoante a finalidade - invoice (lembrete de pagamento), appointment (confirmação de marcação) e custom (tudo o resto) - nos dois primeiros, quando source é integration, cada destinatário traz ainda uma referência à fatura ou ao evento (externalRefs) que o agente menciona durante a chamada.
O agente tem de estar no motor próprio da volai (useForOutboundTasks: true na criação, ver POST /v1/agents), e não na ElevenLabs - o motor suporta variáveis no prompt de sistema, limites de duração das chamadas e a verificação de que a sua configuração não mudou durante a campanha. O rascunho do agente tem de estar PUBLICADO (PATCH /v1/agents/{id} ou POST /v1/agents/{id}/draft/publish) E a versão publicada tem de estar TESTADA (POST /v1/agents/{id}/simulate) - se omitir um dos passos, o início devolve agent_not_ready.
Estados e transições
Na prática, uma tarefa passa sempre de `draft` diretamente para `running` (`start`); a eliminação (`DELETE`) só funciona nos estados assinalados.
draftPATCH), pode ser eliminada.readydraft e running que o start aceita como ponto de partida válido - atualmente nenhum endpoint público (REST ou MCP) coloca realmente uma tarefa neste estado, pelo que não o encontrará na prática. Se ocorresse, seria editável e eliminável tal como draft.runningPATCH devolve task_not_editable, sem exceção. Quem precisar de alterar variáveis tem de parar primeiro a tarefa (POST .../pause) e editá-la enquanto estiver paused - e apenas enquanto nenhum destinatário tiver sido contactado; depois da primeira tentativa já não é possível substituir recipients (items_immutable), pelo que deve criar uma nova tarefa. Não pode ser eliminada. Quando atinge um limite de chamadas (rate_limited - o limite de minutos de chamadas efetuadas do motor interno, o seu teto de chamadas efetuadas em simultâneo, por omissão 10 chamadas por minuto ou 1000 por dia), mantém-se running: define lastError: "rate_limited", a tentativa não conta e os contactos em espera recebem items[].nextAttemptAt no fim do limite (a partir de Retry-After, caso contrário daqui a 5 minutos; para o teto de chamadas simultâneas do motor, este envia Retry-After: 30). Depois continua por si. Espera da mesma forma quando a quota de chamadas simultâneas de agentes da conta está cheia (relay_lease_limit, por omissão 2 chamadas em curso): lastError: "relay_lease_limit", próxima tentativa daqui a um minuto, a tentativa não conta. Um número ocupado (destination_busy - está neste momento em curso outra chamada para o mesmo número, por exemplo de outra tarefa ou de uma chamada manual, ou o número está bloqueado durante 15 minutos após uma marcação incerta) faz esperar apenas o contacto afetado, e não a tarefa inteira: items[].lastError: "destination_busy", items[].nextAttemptAt a partir do tempo restante do bloqueio do número (no mínimo 30 s, no máximo 16 min, 90 s sem bloqueio), a tentativa não conta (countsAsAttempt: false) e os restantes contactos continuam a ser chamados. Após o 6.º resultado de ocupado consecutivo (5 esperas), o contacto passa para review com reviewReason: "dial:destination_busy". Um problema permanente com o número (on_dnc, destination_auto_blocked, cannot_call_own_number, cannot_call_volai_number, invalid_number, unsupported_country, blocked_destination) também não pára a tarefa: o contacto passa para review com reviewReason: "dial:<code>" (a chamada nunca aconteceu, pelo que a tentativa tem countsAsAttempt: false e não consome maxAttempts), a tarefa mantém-se running, continua a ligar aos restantes contactos e só passa para needs_attention quando já não houver outro trabalho. Se o operador da volai suspender manualmente o agente da tarefa, esta mantém-se running e não liga a ninguém; continua por si assim que o agente for restabelecido. Um agente suspenso mostra suspended: true em GET /v1/agents/{id}.pausedPOST .../pause); uma chamada já em curso termina. Editável, eliminável, e start retoma-a. Uma pausa a meio de uma chamada deixa reviewReason: "dispatch_in_flight" até que reconcile (o agendador fá-lo em poucos minutos) resolva essa chamada, e o start é recusado com task_needs_attention até lá; depois, uma tarefa com trabalho por fazer mantém-se paused mesmo enquanto outros contactos aguardam em review. Uma pausa que ocorra mesmo antes da própria chamada (ainda não existe nenhuma chamada) não deixa dispatch_in_flight: o agendador devolve o contacto à espera e a tarefa fica de imediato paused sem motivo. Um contacto cujo processamento foi interrompido por uma falha antes de ser efetuada qualquer chamada é libertado por reconcile o mais cedo 15 minutos após o início da marcação (uma reserva de trabalho de 10 minutos mais uma margem de 5 minutos) e volta à espera; uma tarefa que a reserva expirada tenha parado (dispatch_claim_expired) passa então a paused. Se a chamada em curso terminar sem um preço conhecido, a tarefa passa primeiro a needs_attention com reviewReason: "billing_unknown" e volta a paused quando o preço chegar (reconcile preenche-o). Se entretanto baixar maxAttempts de modo a que nenhum contacto à espera de nova tentativa tenha ainda alguma disponível, a tarefa mantém-se paused (esse contacto conta como trabalho), mas o start é recusado com task_not_startable até voltar a aumentar maxAttempts.completedneeds_attentionagent_version_changed), o motor esteve temporariamente inacessível (engine_contract_unavailable), ou ainda não se conhece o preço de uma chamada que já foi efetuada (billing_unknown). POST .../reconcile reconcilia o estado; eliminável desde que nenhum item esteja ainda in_progress. Decida um contacto em review através de POST .../items/{itemId}/resolve (retry/skip); um contacto com um problema permanente no número (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, ou dial:destination_busy após o 6.º resultado de ocupado consecutivo) só pára a tarefa depois de os restantes contactos terminarem. Um resultado de marcação incerto (por exemplo dial:engine_unavailable) move a tarefa de imediato para needs_attention e os restantes contactos não são chamados. Quando a chamada por trás dessa interrupção (ou de um preço desconhecido) é resolvida por reconcile, a tarefa passa a paused enquanto algum contacto aguardar uma tentativa, mesmo que outros estejam em review; a needs_attention apenas quando já não resta nada para marcar além de um contacto em review, e a completed quando não resta nada. Uma marcação cujo resultado continua incerto (não se encontra nenhuma chamada correspondente) mantém a tarefa em needs_attention até esse contacto ser decidido. Para um motivo ao nível do item, após a decisão final a tarefa passa a paused se ainda houver trabalho, ou a completed se todos os contactos estiverem concluídos ou ignorados. Um motivo ao nível da tarefa mantém-se em needs_attention até a sua própria recuperação estar concluída; a exceção é budget_exceeded, em que ignorar todos os contactos que aguardam nova tentativa conclui a tarefa quando não restar nenhum estado do fornecedor por resolver. Veja abaixo o fluxo especial de billing_unknown.A condição exata de eliminação: o estado é um dos assinalados E nenhum item tem status: "in_progress" (uma chamada que começou a ser marcada e ainda não terminou) - caso contrário, task_not_deletable.
Importação de destinatários (CSV)
POST /v1/tasks/csv-preview analisa um CSV e devolve-o com os erros de cada linha - NADA é guardado, é apenas uma pré-visualização antes de criar ou atualizar uma tarefa. O formulário de nova tarefa no portal chama a mesma função.
- O separador é detetado automaticamente (vírgula ou ponto e vírgula) a partir da primeira linha.
- Tem de existir uma coluna
phone- não importam as maiúsculas, os espaços à volta nem dois pontos finais, e são aceites tambémtelefon,teloumobile; a pré-visualização devolve sempre a coluna comophone. Funciona igualmente uma simples lista de números sem cabeçalho (um por linha, uma só coluna). Caso contrário, todo o CSV falha com um único errophoneno cabeçalho. - Todas as outras colunas são variáveis para o prompt de sistema do agente (
{{column_name}}) - no máximo 20 colunas, nome até 64 carateres, valor até 512 carateres. - O número de telefone é normalizado da mesma forma que em todo o resto da API (
normalizePhone) - um número inválido ou vazio é um erro apenas NESSA linha, o resto do CSV continua a ser processado. - Uma célula que pareça uma fórmula de folha de cálculo (começa por
=,+,-ou@) é rejeitada - proteção contra injeção de CSV quando o ficheiro é aberto no Excel. - No máximo 1000 linhas por CSV (o mesmo limite do número de destinatários de uma tarefa) e 1 MB de texto bruto; a tarefa completa, incluindo as suas variáveis, tem de caber em 2 MB, caso contrário a criação devolve
validation.
A resposta contém headers, delimiter, rows (cada linha com os seus próprios erros), validRows (apenas as linhas corretas, exatamente no formato que recipients em POST /v1/tasks espera) e uma matriz resumo errors. Envie validRows diretamente como recipients ao criar ou atualizar a tarefa.
Orçamento e janela de chamadas
Orçamento
budgetHal é o LIMITE de despesa de toda a tarefa, em cêntimos de coroa (heller). Na criação tem de cobrir pelo menos uma tentativa com a duração máxima (caso contrário, budget_too_low); no início, antes de CADA marcação é reservado o preço máximo possível da tentativa (reservedBudgetHal), e apenas uma chamada atendida o converte em spentHal. A reserva é o preço de uma chamada com a duração exata de maxDurationSecs (o troço da chamada e o troço do agente, cada um arredondado por excesso ao heller, tal como na faturação), e uma chamada terminada pelo limite de duração é faturada, no máximo, por maxDurationSecs, mesmo que termine uma fração de segundo depois. Uma tarefa nunca gasta mais do que o budgetHal que lhe atribuiu.
Janela de chamadas
callingWindow é {timezone: "Europe/Prague", start, end, days} - atualmente o único fuso horário suportado é o de Praga, start/end no formato HH:MM (o fim inclui todo esse minuto: uma janela 09:00-18:00 ainda permite uma chamada às 18:00:59, e uma janela que termine às 23:59 cobre o dia inteiro) e days são números de 0 a 6 (0 = domingo). Sem janela, aplicam-se os dias úteis das 9:00 às 18:00. Fora da janela, start devolve window_closed - aguarde pela reabertura ou altere a janela com PATCH. O campo opcional expiresAt é o prazo da campanha como timestamp Unix positivo, inteiro seguro, em milissegundos. É verificado no início e antes de cada marcação, incluindo a primeira. Nesse prazo ou depois dele, nenhuma nova chamada é iniciada e nenhuma tentativa é consumida; uma chamada em curso termina normalmente. O horizonte de repetições de lorela_enterprise (retryMaxAgeDays, 5 por omissão) conta, por seu lado, N × 24 horas a partir da primeira tentativa contabilizada, e não a partir da criação da tarefa.
Tentativas e duração da chamada
maxAttempts é de 1 a 3 sem política (por omissão 1), ou de 1 a 4 com retryPolicy: "lorela_enterprise" (por omissão na criação 4). É o número máximo de marcações automáticas a um contacto, incluindo a primeira chamada (1 = sem repetições). Contam todas as tentativas em que a chamada poderia ter acontecido, incluindo uma chamada sem resposta, uma chamada recusada pela pessoa contactada e uma tentativa com resultado incerto. Uma tentativa que a volai rejeitou antes de marcar não conta (por exemplo um número bloqueado, o seu próprio número ou um número inválido, a lista de não contactar, um número com outra chamada em curso, limites de chamadas); essa tentativa tem items[].attempts[].countsAsAttempt: false. Também não conta uma chamada cuja rota nunca chegou a tempo ao operador, de modo que o telefone do destinatário nunca tocou (a tentativa tem errorCode: "relay_not_routed", a chamada endReason: "rejected"): o contacto recebe uma nova tentativa não antes de um minuto depois (com lorela_enterprise, segundo o seu calendário), e após a terceira tentativa assim consecutiva passa para revisão com reviewReason: "call:relay_not_routed". Também não conta uma chamada que o nosso motor de voz nunca comunicou e que encerrámos, após duas horas sem comunicação, como não marcada e gratuita (a tentativa tem errorCode: "no_provider_report"): o contacto volta à espera e recebe uma nova tentativa não antes de um minuto depois (com lorela_enterprise, segundo o seu calendário). Três tentativas não contabilizadas consecutivas, também misturadas com tentativas relay_not_routed, enviam o contacto para revisão com o reviewReason da última, ou seja, call:no_provider_report; os contactos que uma chamada destas já tinha enviado antes para revisão (call:failed, ou call:unknown com a política) não são reabertos automaticamente. Sem política, o limite aplica-se apenas às marcações automáticas: um contacto a que aplique resolve com action: "retry" depois de esgotadas as suas tentativas recebe mais uma marcação. maxDurationSecs (30-300) limita a duração de UMA chamada, após a qual esta termina automaticamente - a duração por omissão é de 120 segundos. Ative a política opcional lorela_enterprise através da API ou do MCP antes da primeira tentativa; as tarefas existentes não mudam automaticamente. A segunda tentativa ocorre, no mínimo, 8 minutos depois de começar a primeira tentativa real, entre as 08:00 e as 22:00 de Europe/Prague. A terceira usa a janela seguinte, diferente, das 08:00-09:00 ou das 17:00-19:00; a quarta usa a janela oposta no dia de calendário seguinte. A callingWindow da tarefa e os seus dias da semana continuam a aplicar-se; nenhuma repetição da política começa depois do horizonte de repetições: o retryMaxAgeDays opcional, um número inteiro de dias de 1 a 30 (5 se omitido), válido apenas com a política. O horizonte termina N × 24 horas depois da primeira tentativa contabilizada de cada contacto (dias fixos de 24 horas, pelo que, numa mudança de hora, a hora local de fim se desloca uma hora). Pode ser alterado com PATCH também depois de as tentativas terem começado (não numa tarefa running ou completed, que não pode ser editada): aumentá-lo numa tarefa em pausa devolve a failed (à espera da sua próxima tentativa) os contactos que tinham sido ignorados apenas por causa do horizonte (reviewReason: "retry_age_expired"), com um novo nextAttemptAt, quando ainda lhes resta uma tentativa e o próximo horário do calendário cai dentro do novo horizonte e antes de expiresAt; diminuí-lo não reabre nada. Só um PATCH que aumente o horizonte reabre contactos, por isso envie retryMaxAgeDays juntamente com um expiresAt prolongado num único pedido. Apenas no_answer, missed, busy, correio de voz concluído e uma chamada atendida em que a pessoa contactada não disse nada se qualificam (todos sem contacto humano). O contacto humano, a recusa e a falha do motor param as repetições automáticas; os resultados ambíguos requerem revisão. A última tentativa permitida (maxAttempts) que termine com um resultado repetível deste tipo (sem resposta, ocupado, correio de voz, ou uma chamada atendida em que a pessoa contactada não disse nada) encerra o contacto como skipped com reviewReason: "retry_policy_exhausted" (tal como retry_age_expired quando o horizonte se esgota): não há nada a rever nem a repetir. Um resultado ambíguo da última tentativa permanece em review com o mesmo motivo. Sem política nada muda: a última tentativa sem resposta continua a ser review. Uma chamada de retorno humana verificada depois de esgotadas as tentativas converte o contacto em completed. A DNC, o orçamento e os limites de chamadas continuam a aplicar-se: o bloqueio automático após 3 falhas em 24 horas pode impedir a quarta tentativa. Um PATCH sem maxAttempts preserva o limite existente. Com a política, um resolve manual com action: "retry" devolve validation; só são permitidas tentativas automáticas agendadas. Uma reserva expirada comprovadamente sem marcação pode ser restabelecida antes da primeira tentativa real: sem trabalhador ativo, intenção de envio, chamada do fornecedor, reserva, cobrança ou chamada de retorno, e apenas com rejeições comprovadas anteriores à marcação no seu histórico. A recuperação preserva o histórico e os limites e devolve o contacto a pendente numa tarefa em pausa; não marca. Os lembretes de cupões não podem ser reabertos. Uma repetição manual não pode contornar quatro tentativas, o horizonte de repetições nem a paragem após contacto humano.
Débito global
A marcação de todas as tarefas em TODA a plataforma (e não apenas na sua conta) passa por uma única tarefa cron que corre de 2 em 2 minutos e processa, no máximo, 20 itens por execução - MAS esse limite é partilhado entre as tarefas em execução simultânea, não é algo que uma única tarefa possa esgotar sozinha: é chamado exatamente UM destinatário de CADA tarefa ativa por execução. Assim, mesmo numa plataforma completamente vazia, uma tarefa nunca liga a mais do que um destinatário de 2 em 2 minutos - 100 destinatários não ficam, portanto, concluídos em cerca de 20 minutos, mas em aproximadamente 200 minutos (100 x 2 minutos). Planeie em conformidade a janela de chamadas das campanhas sensíveis ao tempo (por exemplo, um lembrete appointment no dia anterior).
Fluxo para um agente
Uma execução típica, por esta ordem:
- O agente da tarefa tem de estar PUBLICADO e a versão publicada TESTADA (
POST /v1/agents/{id}/draft/publishe depoisPOST /v1/agents/{id}/simulate) - caso contrário, umstartposterior devolveagent_not_ready. - Opcionalmente
POST /v1/tasks/csv-preview- verifica o CSV dos destinatários antes de criar a tarefa. POST /v1/tasks- cria a tarefa no estadodraft. Nada é marcado.GET /v1/tasks/{id}- leiaissues(validação em simulação) e confirme que a tarefa está pronta para começar.- Se necessário,
PATCH /v1/tasks/{id}- ajuste as regras, SEMPRE com arevisionda última leitura. POST /v1/tasks/{id}/start- inicia a marcação. Cada chamada atendida é faturada de imediato.POST /v1/tasks/{id}/pauseem qualquer momento durante a execução;POST /v1/tasks/{id}/startvolta a retomá-la.- Após uma interrupção (uma pausa a meio de uma chamada, uma reserva expirada, uma chamada com preço ainda desconhecido, ou uma marcação incerta cuja chamada foi encontrada),
POST /v1/tasks/{id}/reconcilereconcilia o estado com as chamadas reais; uma tarefa assim, com trabalho por fazer, fica empausedmesmo que alguns contactos aguardem emreview, de modo que ostarta possa retomar. Uma tarefa em execução e outros motivos (variables_limit, uma verificação de fatura ou de calendário falhada, uma marcação cuja chamada não é encontrada) não são alterados porreconcile; decida os contactos em revisão comresolve. - Decida um contacto que acabou em revisão (
items[].status: "review") comPOST /v1/tasks/{id}/items/{itemId}/resolveeaction: "retry"ou"skip". Para um motivo habitual ao nível do item,retrydevolve o contacto a pendente e a tarefa apaused;skipencerra o contacto e a tarefa passa apausedse ainda houver trabalho, ou acompletedse todos os contactos estiverem concluídos ou ignorados. Retome uma tarefapausedcomPOST /v1/tasks/{id}/start. - Quando um contacto tem
reviewReason: "dial:destination_auto_blocked", o número fica bloqueado automaticamente durante 30 dias após repetidas chamadas sem resposta, e sóretrynão o desbloqueia - o contacto voltaria logo parareview. Levante primeiro o bloqueio (POST /v1/dnc/{e164}/unblock, no MCPunblock_destination, retire o número deitems[].phone) e só depois façaresolvecomaction: "retry". Paradial:on_dnc, retire primeiro o número da lista de não contactar (DELETE /v1/dnc/{e164}); caso contrário, ignore o contacto. Para o número da própria conta, um número de outra conta da volai, um número inválido, um número fora da Chéquia e da Eslováquia e uma linha de tarifa especial (dial:cannot_call_own_number,dial:cannot_call_volai_number,dial:invalid_number,dial:unsupported_country,dial:blocked_destination), outra tentativa não ajuda: use apenasskip. - Quando um contacto tem
reviewReason: "billing_unknown", a chamada original pode já ter acontecido, mas o seu preço ainda é desconhecido. Chame primeiroreconcilee inspecione a chamada associada.retryregista que o contacto deve ser tentado de novo, mas nenhuma nova chamada é permitida até o preço original ficar acertado; a tarefa passa então apausede precisa de um novostart.skipimpede outra chamada; a chamada original continua associada e a sua reserva continua a contar para o orçamento até o preço ficar acertado. Quando ainda há trabalho, a tarefa passa diretamente apausedapósskipe pode ser iniciada; sem trabalho restante, aguarda emneeds_attentione passa acompletedassim que o preço ficar acertado. Uma chamada que nunca foi marcada (o motor recusou-a) nunca é faturada e fica acertada de imediato a 0. - Para ignorar um contacto sem chamada porque entretanto comprou ou cancelou a subscrição, envie
resolvecomaction: "skip",reason: "customer_purchased"ou"unsubscribed",revision, umoperationIdestável e umevidenceRefque aponte para o registo da compra ou do cancelamento (nunca para um número de telefone ou e-mail). Funciona num contactopendingde uma tarefadrafte empending/failednuma tarefapausedsem chamada por acertar, e preserva tentativas, custos e a lista de não contactar.GET /v1/tasks/{id}mostra então o comprovativo emitems[].resolution(reason,operationId,evidenceRef,resolvedAt); repetir o mesmo corpo é seguro, ao passo que umreasonouevidenceRefdiferente para o mesmo contacto devolve409 revision_conflict. Oskipnão adiciona o número à lista de não contactar: faça-o comPOST /v1/dncse o contacto nunca mais deva ser chamado. DELETE /v1/tasks/{id}no fim, se a tarefa nunca correu ou já terminou e pretende eliminar o registo.
Quase todas as chamadas de escrita (PATCH, start, pause, DELETE) usam a revision da última leitura da tarefa - a mesma concorrência otimista que nos rascunhos de agentes. Uma divergência devolve revision_conflict: leia de novo a tarefa (GET) e repita com a revision atual. reconcile é a exceção - a sua revision é opcional.
MCP
As mesmas ferramentas que no REST (list_tasks, get_task, create_task, update_task, pause_task, resolve_task_item, reconcile_task, start_task) - exceto por uma diferença no início.
start_task confirma os números
O start_task do MCP aceita adicionalmente confirmedRecipients e confirmedBudgetHal - têm de corresponder exatamente ao número real de destinatários e ao orçamento da tarefa, caso contrário devolve validation com os valores reais indicados e não inicia NADA. Assim, um agente de IA de terceiros que atue com base numa única instrução vagamente entendida não consegue lançar acidentalmente uma campanha paga com números inventados - o POST .../start do REST não tem tal mecanismo, porque aí é o titular da conta que o chama diretamente com a sua própria chave.
delete_task e a pré-visualização de CSV não existem no MCP - a eliminação permanece no REST e no portal (uma ação irreversível que exige escrever o nome), e a pré-visualização de CSV é apenas um passo de formulário.
Erros
task_not_found- Não existe nenhuma tarefa com esteidna conta.task_not_editable- A tarefa está em execução ou concluída, ou está emneeds_attentionsem forma de recuperar - as suas regras não podem ser alteradas neste momento.POST .../items/{itemId}/resolvedevolve o mesmo código para uma tarefa em execução: um contacto emreviewaparece enquanto a tarefa ainda estárunninge liga aos outros - aguarde até passar aneeds_attentionou ponha-a em pausa (POST .../pause).items_immutable- A lista de destinatários não pode ser substituída depois de ter ocorrido pelo menos uma tentativa de marcação ou de um contacto ter sido ignorado com umreason(compra ou cancelamento da subscrição).budget_too_low- O orçamento não cobre sequer uma tentativa com a duração máxima da chamada - aumentebudgetHalou reduzamaxDurationSecs.task_not_startable- A tarefa não está no estadodraft/ready/pausedou já não tem nenhum destinatário por contactar.task_needs_attention- É necessário umPOST .../reconcileantes do início seguinte - algo (a versão do agente, o motor) mudou durante a execução.agent_not_ready- O rascunho do agente não está publicado ou a versão publicada não foi testada - publique-o (POST /v1/agents/{id}/draft/publish) e depois simule a versão publicada (POST /v1/agents/{id}/simulate) antes de iniciar.agent_version_changed- A configuração do agente mudou ENQUANTO a tarefa estava em execução - teste-a e reinicie através dereconcile.engine_required- O agente da tarefa não está no motor da volai (useForOutboundTasks: true) - atualmente as tarefas de chamadas efetuadas exigem o motor, e não a ElevenLabs.engine_contract_unavailable- Neste momento o motor não anuncia suporte para variáveis e limites de tarefas de chamadas efetuadas - tente iniciar novamente mais tarde.window_closed- Fora da janela de chamadas configurada - aguarde pela reabertura ou alterecallingWindow.task_not_running- A pausa só funciona numa tarefa em execução.item_not_resolvable- O contacto não está emreview- uma decisão (retry/skip) só é possível para um contacto que aguarda revisão, e apenas enquanto a tarefa não estiver em execução. Oskipcom umreason(customer_purchased,unsubscribed) é a exceção: exige um contactopendinginativo numa tarefadraft, oupending/failednuma tarefapaused, sem chamada por acertar.task_not_deletable- Só pode ser eliminada uma tarefa sem itens em curso, nos estadosdraft/ready/paused/completed/needs_attention.revision_conflict- A tarefa mudou entretanto - leia-a de novo (GET) e repita com arevisionatual.
A tabela completa de erros de cada endpoint encontra-se na secção Tasks da referência da API REST.
Relacionado
Servidor MCP
Ligue o Claude Code, o Codex CLI, o Codex desktop, o Cursor e outros editores de IA.
API REST
Referência completa de todos os endpoints: números, chamadas, SMS, números de telemóvel para SMS, agentes e os seus rascunhos, ferramentas, gravações, webhooks, lista de não contactar, relay, conta, tarefas, saldo, documentos, calendários e integrações.
Agente de voz
Prompt de sistema, ferramentas, passagem a uma pessoa, gravações e dados estruturados da chamada.