Referência da API
Geração de PDF
Entra HTML — o seu, ou escrito pelo modelo a partir de uma instrução —, sai um PDF renderizado.
/v1/documents/generateDois modos mutuamente exclusivos. Enviar os dois campos, ou nenhum, devolve 400.
htmlstringOpcionalModo direto. Você já tem o HTML pronto (vindo de uma resposta de chat anterior, por exemplo) e só quer renderizá-lo. Não há inferência — esta chamada não passa pelo modelo, funciona mesmo enquanto o modelo está carregando e não conta na sua cota de tokens.
userstringOpcionalModo instrução. Descreva o que o documento deve conter; o gateway pede o HTML ao modelo e renderiza o resultado — uma requisição em vez de duas.
systemstringOpcionalSó com user. Substitui o system prompt configurado na sua stack para esta
requisição.
max_tokensintegerOpcionalPadrão: 8000Só com user. Teto da resposta do modelo, até 16000.
Modo direto
curl -X POST "https://api.trystac.com/v1/documents/generate" \
-H "Authorization: Bearer $STAC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"html": "<h1>Report</h1><p>already-rendered content</p>"}' \
-o report.pdfModo instrução
curl -X POST "https://api.trystac.com/v1/documents/generate" \
-H "Authorization: Bearer $STAC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"user": "A sales report for August, with one table per region."}' \
-o report.pdfA resposta, nos dois modos, é o PDF em bytes
(Content-Type: application/pdf) — não é JSON; salve direto num arquivo.
O HTML precisa ser autossuficiente
O motor de renderização nunca busca nenhuma URL referenciada no HTML — nada
de <img src="https://...">, @import ou fontes remotas. Por segurança, as
requisições de saída para URLs arbitrárias ficam totalmente desativadas, não
apenas filtradas. Qualquer referência desse tipo é ignorada em silêncio em
vez de bloquear a requisição — o PDF é renderizado sem ela.
Em vez disso, incorpore imagens e fontes como URIs data::
<img src="data:image/png;base64,iVBORw0KG...">No modo instrução, essa regra já vem embutida no prompt que o gateway envia ao modelo. No modo direto, se o seu HTML veio de uma resposta de chat separada com uma URL de imagem real, peça ao modelo (pelo seu prompt) que a incorpore como URI data, ou faça a conversão você mesmo antes de chamar este endpoint.
Erros
| Status | Significado |
|---|---|
400 | html e user enviados juntos (ou nenhum dos dois), HTML que não pôde ser renderizado ou (modo instrução) resposta do modelo truncada |
413 | HTML (enviado ou gerado pelo modelo) ou número de páginas do PDF resultante acima do limite do plano |
422 | max_tokens fora do intervalo aceito (só no modo instrução) |
429 | Gerações demais em andamento neste momento — o servidor recusa na hora em vez de enfileirar; repita em instantes |
502 | (modo instrução) falha ao chamar o modelo |
Limites
| Limite | Go | Pro | Enterprise |
|---|---|---|---|
| Tamanho do HTML (enviado ou gerado pelo modelo) | 2 MB | 5 MB | Personalizado |
| Páginas do PDF resultante | 20 | 50 | Personalizado |
O teto de páginas é verificado depois da diagramação, mas antes de os bytes finais do PDF serem produzidos, então uma tentativa de ultrapassá-lo falha sem custo extra de renderização. No modo instrução, o HTML devolvido pelo modelo passa pela mesma verificação de tamanho do modo direto — nada garante que o modelo respeitou a instrução.