Documentação da API
A API da Yris é compatível com o padrão OpenAI. Se o seu time já usa um cliente de IA, é só apontar a base_url para a Yris e seguir o trabalho — em português.
Comece em poucas linhas
Base URL e autenticação
Todas as chamadas vão para https://yrisia.com.br/v1 e usam uma chave no header Authorization: Bearer SUA_CHAVE_YRIS (sua chave começa com yris-sk-). Gere sua chave em Chaves de API (basta entrar com sua conta Google) — ou, para planos empresariais, fale com nosso time pelo formulário para empresas.
Python (biblioteca OpenAI)
from openai import OpenAI
client = OpenAI(
api_key="SUA_CHAVE_YRIS",
base_url="https://yrisia.com.br/v1",
)
resposta = client.chat.completions.create(
model="yris-1",
messages=[
{"role": "user",
"content": "Resuma este contrato em 3 tópicos."}
],
)
print(resposta.choices[0].message.content)
cURL
curl https://yrisia.com.br/v1/chat/completions \
-H "Authorization: Bearer SUA_CHAVE_YRIS" \
-H "Content-Type: application/json" \
-d '{
"model": "yris-1",
"messages": [{"role": "user", "content": "Olá, Yris!"}]
}'
Endpoints
| Método | Rota | Descrição |
|---|---|---|
| POST | /v1/chat/completions | Gera uma resposta a partir de uma lista de messages (formato OpenAI). |
| GET | /v1/models | Lista os modelos disponíveis. |
Parâmetros de /v1/chat/completions
| Campo | Tipo | Descrição |
|---|---|---|
model | string | Identificador do modelo (ex.: yris-1). |
messages | array | Lista de {role, content} com user e assistant. Mensagens system são aceitas mas ignoradas: a Yris usa sempre a própria persona. Quer um comportamento específico? Coloque a instrução na primeira mensagem user ou fale com nosso time pelo formulário para empresas. |
temperature | number | Opcional. Criatividade da resposta: maior que 0 e até 5 (padrão 0,3). Valor 0 devolve 422. |
max_tokens | integer | Opcional. Limite de tokens gerados, de 1 a 8192. |
stream | boolean | Opcional. true para receber a resposta em streaming (SSE). Padrão false. |
Limites e erros
Os limites valem para POST /v1/chat/completions e contam numa janela deslizante de 60 segundos:
- 60 requisições por minuto por chave (a contagem segue o valor enviado em
Authorization: Bearer). - 120 requisições por minuto por endereço IP, somando todas as chaves que saem dele.
- 300 requisições POST por minuto por endereço IP no site inteiro (teto contra abuso).
Códigos de erro
| Código | Quando acontece | O que fazer |
|---|---|---|
| 400 | Nenhuma mensagem com role user, a última mensagem user está vazia, ou ela é grande demais para caber no contexto do modelo. | Inclua ao menos uma mensagem user com conteúdo; se for longa demais, divida em partes. |
| 401 | Chave ausente, fora do formato Bearer, inválida ou revogada. | Confira o header Authorization: Bearer SUA_CHAVE_YRIS ou gere outra chave em Chaves de API. |
| 422 | Parâmetro fora da faixa: temperature maior que 0 e até 5; max_tokens de 1 a 8192; top_k negativo; messages vazio; content que não é texto (listas de partes não são aceitas). | Corrija o corpo da requisição. O campo detail da resposta aponta o campo com problema. |
| 429 | Passou de um dos limites por minuto acima. A resposta traz o header Retry-After. | Aguarde os segundos indicados em Retry-After e reenvie. |
| 403 | O model pedido é de acesso restrito e a sua conta não tem permissão. | Use yris-1 ou peça acesso. |
| 500 | Falha inesperada ao gerar a resposta. | Tente de novo; se persistir, fale com a gente. |
| 503 | Modelo indisponível no momento. | Tente de novo em instantes. |
Exemplo de resposta 429:
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json
{
"detail": "Você passou de 60 mensagens por minuto neste endereço. Aguarde cerca de 12 s e tente de novo.",
"retry_after": 12
}
Retry-After e retry_after trazem o mesmo número: os segundos que faltam para a requisição mais antiga sair da janela (no mínimo 1). No teto de 120 por IP o texto cita 120; no teto global de POST o detail muda para “Muitas requisições em pouco tempo a partir deste endereço. Aguarde cerca de 12 s e tente de novo.” Programe a espera pelo header, não pelo texto.
system continuam sendo ignoradas (a Yris usa sempre a própria persona). Ainda não suportamos tools/function calling nem outros campos além dos listados; campos desconhecidos são ignorados.stream — envie stream=true para receber Server-Sent Events com chunks chat.completion.chunk (formato OpenAI), encerrando com data: [DONE]. Com stream=false (padrão) a resposta vem completa, no formato chat.completion.