Configurar provedor do atendente
/v1/instances/{id}/attendantdesde M5btoken adminQuando usar
Só o token admin. Atualização parcial: provider (anthropic | openai, qualquer servidor OpenAI-compatível), model (padrão claude-sonnet-5-5), base_url, api_key (cifrada em repouso com data/attendant_key; "" remove), daily_call_cap (padrão 300 chamadas/dia, inclui transcrição e voz), max_tokens, vision, audio (servidor OpenAI-compatível de /audio/transcriptions e /audio/speech) e preços para o log de custo.
Autenticação
Exige o token admin. Com um token de instância a resposta é 403 forbidden.
Parâmetros
Caminho
| Nome | Tipo | Descrição |
|---|---|---|
idobrigatório | string | Id da instância (inst_...). |
Corpo (JSON)
| Nome | Tipo | Descrição |
|---|---|---|
provider | "anthropic" | "openai" | |
model | string | |
base_url | string | |
max_tokens | integer | (64–8192) |
daily_call_cap | integer | |
chat_daily_call_cap | integer | Chamadas por conversa por dia (padrão 40). |
simulate_daily_cap | integer | Chamadas do simulador por dia (padrão 50). |
vision | boolean | |
audio | AttendantAudio | |
audio.base_url | string | Servidor OpenAI-compatível; vazio com provider openai = o mesmo servidor. |
audio.transcription_model | string | Ex.: whisper-1; vazio desliga a transcrição. |
audio.speech_model | string | Ex.: gpt-4o-mini-tts; vazio desliga a voz. |
audio.voice | string | |
price_input_per_mtok | number | |
price_output_per_mtok | number | |
api_key | string | |
audio_api_key | string |
Exemplo
curl -s -X PUT "$LITEZAP_URL/v1/instances/$ID/attendant" \ -H "Authorization: Bearer $LITEZAP_ADMIN_TOKEN" \ -d '{"provider":"anthropic","api_key":"sk-ant-...","daily_call_cap":300}'const res = await fetch("http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/attendant", { method: "PUT", headers: { Authorization: `Bearer ${process.env.LITEZAP_ADMIN_TOKEN}`, "Content-Type": "application/json" }, body: JSON.stringify({ "provider": "anthropic", "api_key": "sk-ant-...", "daily_call_cap": 300 }),});console.log(res.status, res.status === 204 ? "" : await res.json());import osimport requests
r = requests.put( "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/attendant", headers={"Authorization": f"Bearer {os.environ['LITEZAP_ADMIN_TOKEN']}"}, json={ "provider": "anthropic", "api_key": "sk-ant-...", "daily_call_cap": 300, }, timeout=150,)print(r.status_code, r.json() if r.content else "")package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { req, _ := http.NewRequest("PUT", "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/attendant", strings.NewReader(`{"provider":"anthropic","api_key":"sk-ant-...","daily_call_cap":300}`)) req.Header.Set("Authorization", "Bearer "+os.Getenv("LITEZAP_ADMIN_TOKEN")) req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.Status, string(out))}<?phprequire 'vendor/autoload.php'; // composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client(['base_uri' => 'http://localhost:8787']);$res = $client->request('PUT', '/v1/instances/inst_7f3a9c2e5b1d4086/attendant', [ 'headers' => ['Authorization' => 'Bearer ' . getenv('LITEZAP_ADMIN_TOKEN')], 'json' => [ 'provider' => 'anthropic', 'api_key' => 'sk-ant-...', 'daily_call_cap' => 300, ], 'http_errors' => false,]);echo $res->getStatusCode(), ' ', $res->getBody(), PHP_EOL;Outros corpos de exemplo
{ "provider": "openai", "base_url": "http://127.0.0.1:11434/v1", "model": "llama3.1"}Nos exemplos, LITEZAP_URL é a URL base (ex.: http://localhost:8787) e o token vem deLITEZAP_TOKEN (instância) ou LITEZAP_ADMIN_TOKEN.
Resposta
200 Configuração salva (sem as chaves).
Campos de AttendantSettings
configured | boolean | |
provider | "anthropic" | "openai" | |
model | string | |
base_url | string | |
max_tokens | integer | |
daily_call_cap | integer | |
chat_daily_call_cap | integer | |
simulate_daily_cap | integer | |
active_agent_id | string | |
vision | boolean | |
audio | AttendantAudio | |
audio.base_url | string | Servidor OpenAI-compatível; vazio com provider openai = o mesmo servidor. |
audio.transcription_model | string | Ex.: whisper-1; vazio desliga a transcrição. |
audio.speech_model | string | Ex.: gpt-4o-mini-tts; vazio desliga a voz. |
audio.voice | string | |
price_input_per_mtok | number | |
price_output_per_mtok | number | |
api_key_set | boolean | |
audio_api_key_set | boolean | |
ready | boolean | |
not_ready | string | |
transcription | boolean | |
speech | boolean | |
today | object | |
today.day | string | |
today.calls | integer | |
today.input_tokens | integer | |
today.output_tokens | integer | |
today.cost_usd | number |
Erros
| Código | HTTP | Retentável | O que fazer |
|---|---|---|---|
validation_failed | 400 | não | Corrija o corpo ou os parâmetros; a message diz o campo. |
unauthorized | 401 | não | Envie Authorization: Bearer <token> válido. |
forbidden | 403 | não | Use o token certo (admin, ou o da própria instância). |
instance_not_found | 404 | não | Confira o id da instância. |
Todo erro usa o envelope {"error":{"code","message","retryable"}}. Tabela completa em Erros.
Outras operações de Atendente IA: Ler hook de agente · Configurar hook de agente · Remover hook de agente · Ligar ou desligar o atendente numa conversa · Últimas chamadas do atendente · Ler o Atendente LiteZap · Modos prontos do atendente · Listar agentes · Criar agente · Ler agente · Alterar agente · Excluir agente · Ativar agente · Simular conversa · Uso e custo do atendente

