Skip to main content
POST /responses aceita requisições no formato Responses API da OpenAI e retorna itens de saída tipados, como reasoning, message e function_call. Ele funciona com todos os modelos de texto da Venice e aceita uma chave de API ou autenticação por carteira x402.
Este endpoint está em beta e disponível para todos os usuários da API. Os modelos OpenAI são atendidos nativamente, então se comportam como a própria Responses API da OpenAI. Todos os outros modelos passam por uma camada de tradução com algumas lacunas. Leia Como as requisições são atendidas e Limitações antes de construir sobre ele.

Quando usar

Use /responses quando seu cliente já fala o formato Responses, por exemplo agentes de programação e SDKs construídos sobre o responses.create da OpenAI. É a melhor forma de executar agentes no estilo Codex em modelos OpenAI por meio da Venice. Para modelos que não são da OpenAI, /chat/completions ainda é a opção mais completa: ele suporta saídas estruturadas, entradas de arquivo, modelos E2EE e todas as opções de venice_parameters em todos os modelos.

Início rápido

A resposta contém um array output de itens tipados e um objeto usage:

Como as requisições são atendidas

A Venice atende cada requisição em um de dois modos.
  • Nativo. Requisições para modelos OpenAI são encaminhadas à Responses API da OpenAI sem tradução. Isso abrange todos os modelos openai-*, exceto openai-gpt-oss-120b. Itens de resposta, IDs, raciocínio e eventos de stream retornam exatamente como a OpenAI os retorna.
  • Traduzido. Todos os outros modelos, além de openai-gpt-oss-120b, passam por uma camada de tradução: a Venice converte a requisição em uma requisição de Chat Completions, a executa e converte o resultado de volta. Qualquer coisa que o formato Chat Completions não consiga expressar é ignorada ou rejeitada. Veja Limitações.
Requisições a modelos OpenAI que usam um recurso exclusivo da Venice são atendidas no modo traduzido para que o recurso continue funcionando. Isso inclui a busca na web da Venice (uma ferramenta web_search, web_search: true ou venice_parameters.enable_web_search), x_search, venice_parameters.character_slug e venice_parameters.enable_web_scraping. Requisições com campos que o modo nativo não consegue atender, listados em Modo nativo, recorrem ao modo traduzido da mesma forma. Você pode controlar e inspecionar o modo com headers:

Conversas são stateless

A Venice não armazena respostas, em nenhum dos modos. Envie a conversa inteira em input a cada requisição, anexando os itens de output anteriores e quaisquer resultados de ferramentas.
store é sempre tratado como false. previous_response_id e conversation não podem ser resolvidos porque nada é armazenado. Com o modo padrão auto, essas requisições são atendidas no modo traduzido, onde esses campos são ignorados. Com x-venice-responses-mode: native, elas retornam 400.

Modo nativo

O modo nativo suporta os recursos da Responses API que o próprio endpoint da OpenAI suporta, incluindo:
  • instructions, aplicadas como escritas.
  • Saídas estruturadas com text.format. A OpenAI valida schemas de forma estrita, então um schema inválido retorna 400. Por exemplo, strict: true exige additionalProperties: false, e json_object exige a palavra “json” em algum lugar do input.
  • Ferramentas de função e tool_choice no formato Responses da OpenAI {"type": "function", "name": "..."}, além de chamadas de ferramentas paralelas.
  • Ferramentas executadas pelo cliente: custom (input livre), namespace, tool_search, apply_patch, shell e local_shell com um ambiente local, e computer use.
  • Resumos de raciocínio, ativados por padrão. Modelos de raciocínio sempre retornam encrypted_content nos itens de raciocínio. Envie esses itens de volta em input no próximo turno para manter o contexto de raciocínio do modelo.
  • Prompt caching com prompt_cache_key. A Venice limita o escopo da chave à sua conta, de modo que ela nunca compartilha cache com outros usuários, e retorna sua chave original na resposta.
  • Entradas de imagem, incluindo detail: "original", e input_file com file_data inline.
  • Modelos Pro (*-pro), que executam automaticamente o modo de raciocínio Pro da OpenAI.
O prompt de sistema da Venice fica desativado por padrão no modo nativo, então suas instructions são aplicadas sem alterações. Defina venice_parameters.include_venice_system_prompt: true para adicioná-lo. Os itens a seguir precisam de armazenamento no servidor ou de recursos hospedados pelo provedor, então não estão disponíveis nativamente: Essas restrições também se aplicam a ferramentas carregadas mais adiante na conversa por meio de itens additional_tools ou tool_search_output. Uma ferramenta de busca da Venice declarada ali também direciona a requisição para o modo traduzido. Campos de requisição não reconhecidos são tratados da mesma forma: com auto, a requisição é atendida no modo traduzido, e com native, ela retorna 400.

Streaming

Defina stream: true para receber server-sent events. Ambos os modos encerram o stream com data: [DONE]. No modo nativo, os eventos são exatamente os da OpenAI, incluindo response.reasoning_summary_text.delta para resumos de raciocínio e response.function_call_arguments.delta para argumentos de ferramentas. No modo traduzido, os eventos são response.created, response.output_item.added, response.content_part.added, response.output_text.delta, response.function_call_arguments.delta, response.content_part.done, response.output_item.done e, por fim, response.completed, response.incomplete ou response.failed. Dois eventos diferem dos da OpenAI:
  • O texto de raciocínio é transmitido como response.reasoning.delta, e não como os eventos de resumo de raciocínio da OpenAI.
  • Quando a busca na web é executada, um evento response.web_search.done traz os resultados da busca antes que a resposta seja transmitida.

Parâmetros do modo traduzido

A busca na web é cobrada como aumento por busca, assim como em /chat/completions. Alguns comportamentos do modo traduzido para levar em conta:
  • instructions são aplicadas como uma mensagem de sistema.
  • Ferramentas custom retornam itens custom_tool_call com o input bruto. Se um modelo retornar argumentos malformados para uma ferramenta custom, ou chamar uma ferramenta que não foi declarada na requisição, a chamada volta como um function_call comum com os argumentos originais, para que seu cliente possa reportar um erro de ferramenta e continuar.
  • Enquanto o input de uma ferramenta custom é transmitido, o item de chamada e os itens posteriores podem chegar apenas depois que o input estiver completo. O stream envia comentários SSE de keep-alive enquanto aguarda.
  • Imagens com detail: "original" são enviadas como high para provedores que não suportam esse valor.

Limitações

Estas lacunas se aplicam ao modo traduzido: todos os modelos que não são da OpenAI, openai-gpt-oss-120b e requisições a modelos OpenAI que usam recursos exclusivos da Venice. Salvo indicação em contrário, a requisição ainda é bem-sucedida e o campo é ignorado.

Relacionados