Quickstart

Do zero ao seu primeiro resultado em cinco passos.

1. Crie uma conta

Cadastre-se em app.hotdoc.io — sem necessidade de cartão de crédito.

2. Crie uma chave de API do hotdoc

No dashboard, em “API keys.” A chave completa é exibida uma única vez, na criação — salve-a. Formato: hotdoc_<id>.<secret>.

3. Tenha suas chaves BYOK prontas

O processamento de documentos precisa de duas chaves:

  • Chave do provedor do modelo (neural.apiKey) — de um dos provedores suportados: OpenAI, Anthropic (Claude), xAI (Grok), Together, DeepSeek, Xiaomi ou OpenRouter. Usada no estágio de LLM.
  • Chave do provedor de OCR (ocr.providerKey) — uma chave BYOK para o estágio de OCR. Passe o provedor via ocr.provider (por exemplo, NEURAL_CLIENT_TYPE_MISTRAL) e o modelo via ocr.model (por exemplo, mistral-ocr-latest). Obrigatória em toda requisição.

Ambas as chaves são aceitas apenas como entrada; nenhuma é armazenada em texto plano — as cópias criptografadas são excluídas junto com o job (~7 dias).

4. Crie um job

Passe as URLs dos seus arquivos, os prompts e a configuração do modelo:

curl -X POST https://api.hotdoc.io/v1/jobs \
  -H "Authorization: Bearer hotdoc_<id>.<secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceUrls": ["https://example.com/invoice.pdf"],
    "title": "Invoice #42",
    "prompts": ["Extract the invoice number, date, supplier, line items, and total. Return strict JSON."],
    "ocr": { "provider": "NEURAL_CLIENT_TYPE_MISTRAL", "model": "mistral-ocr-latest", "providerKey": "<YOUR_KEY>" },
    "neural": {
      "type": "NEURAL_CLIENT_TYPE_XIAOMI",
      "model": "mimo-v2-flash",
      "apiKey": "<YOUR_PROVIDER_KEY>",
      "reasoningEffort": "low"
    }
  }'

Qual modelo usar? Compare inteligência, preço por token e provedores no comparativo de LLM e escolha o modelo ideal.

Você receberá de volta um job com status JOB_STATUS_NEW, junto com seu id.

5. Aguarde o resultado

Consulte o status do job até ele atingir um estado terminal (JOB_STATUS_COMPLETE, JOB_STATUS_PARTIAL ou JOB_STATUS_FAILED):

curl https://api.hotdoc.io/v1/jobs/JOB_ID \
  -H "Authorization: Bearer hotdoc_<id>.<secret>"

Quando o job estiver concluído, busque o resultado completo com o texto reconhecido e as respostas do modelo:

curl https://api.hotdoc.io/v1/jobs/JOB_ID/result \
  -H "Authorization: Bearer hotdoc_<id>.<secret>"

Exemplo de resposta:

{
  "result": {
    "job": { "status": "JOB_STATUS_COMPLETE" },
    "ocr": [{ "status": "JOB_OCR_STATUS_DONE", "content": "<p>Invoice #42 dated 2026-06-01…</p>" }],
    "llm": [{ "status": "JOB_LLM_STATUS_DONE", "content": "{\"number\": \"42\", \"date\": \"2026-06-01\", \"total\": \"15000\"}" }]
  }
}

Você não precisa hospedar o arquivo em uma URL pública — pode enviá-lo diretamente. Veja “Envio de arquivos.”

Exemplos de strings de model

Passadas ao provedor exatamente como estão (atuais em 2026-06-17, confira o catálogo do provedor): Xiaomi — mimo-v2-flash (verificado); OpenAI — gpt-4o-mini; Anthropic — claude-3-5-sonnet-latest. O hotdoc não valida esse valor — se você digitá-lo errado, o provedor retorna um erro em llm[].error.