# Completions de texto

> POST /v1/completions para el formato legado, con un prompt de entrada y texto de salida.


El endpoint de prompt legado, para las herramientas que todavía lo hablan. Ejecuta el prompt como un único mensaje de usuario sobre los mismos modelos. Para todo lo nuevo, usa [chat completions](/es/api/chat-completions).

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

## Solicitud

| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| `model` | string | Sí | Un ID de modelo |
| `prompt` | string o array | Sí | Un string o un array con exactamente un string |
| `max_tokens` | number | No | Por defecto es 16. Limitado a la salida máxima del modelo |
| `stream` | boolean | No | `true` devuelve chunks `text_completion` y `data: [DONE]` |
| `temperature`, `top_p`, `stop` | | No | Se pasan al modelo |
| `n` | number | No | Solo `1` |

Aquí no hay herramientas ni esfuerzo de razonamiento. `echo`, `logprobs` y `suffix` se ignoran.

## Respuesta

```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 }
}
```

- En un stream, cada chunk trae `choices[0].text`. El último chunk tiene `finish_reason` y `usage`.

## Ejemplo

```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)
```

## Errores

`400` falta `prompt`, hay más de un prompt o `n` es mayor que 1 · `401` clave inválida · `402` sin créditos · `404` modelo desconocido · `429` ocupado · `503` modelo no disponible. Consulta [Errores](/es/guides/errors).
