# Text completions

> POST /v1/completions para o formato legado, com prompt na entrada e texto na saída.


O endpoint de prompt legado, para ferramentas que ainda falam esse formato. Ele roda o prompt como uma única mensagem de usuário nos mesmos modelos. Para qualquer coisa nova, use [chat completions](/pt-br/api/chat-completions).

```endpoint
POST https://api.notholy.com/v1/completions
```

## Requisição

| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
| `model` | string | Sim | Um ID de modelo |
| `prompt` | string ou array | Sim | Uma string ou um array com exatamente uma string |
| `max_tokens` | number | Não | O padrão é 16. Limitado à saída máxima do modelo |
| `stream` | boolean | Não | `true` retorna chunks `text_completion` e `data: [DONE]` |
| `temperature`, `top_p`, `stop` | | Não | Repassados ao modelo |
| `n` | number | Não | Só `1` |

Aqui não há ferramentas nem esforço de raciocínio. `echo`, `logprobs` e `suffix` são ignorados.

## Resposta

```json
{
  "id": "cmpl-4Qz7",
  "object": "text_completion",
  "created": 1793836800,
  "model": "notholy-specter",
  "choices": [{ "index": 0, "text": " ../../etc/passwd encoded as %2e%2e%2f…", "finish_reason": "length", "logprobs": null }],
  "usage": { "prompt_tokens": 14, "completion_tokens": 60, "total_tokens": 74 }
}
```

- Num stream, cada chunk traz `choices[0].text`. O último chunk tem `finish_reason` e `usage`.

## Exemplo

```bash test
curl https://api.notholy.com/v1/completions \
  -H "Authorization: Bearer $NOTHOLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "notholy-specter", "prompt": "A path traversal payload in a file download parameter looks like", "max_tokens": 60}'
```

```python test
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])

r = client.completions.create(model="notholy-specter", prompt="The OWASP category for SSRF is", max_tokens=30)
print(r.choices[0].text)
```

## Erros

`400` falta `prompt`, mais de um prompt ou `n` acima de 1 · `401` chave inválida · `402` sem créditos · `404` modelo desconhecido · `429` ocupado · `503` modelo indisponível. Veja [Erros](/pt-br/guides/errors).
