# Documentación de la API

<!-- https://traduccionestriexpert.com/es/desarrolladores/ -->

Desarrolladores

La **API de TriExpert Translations** es una API HTTP pública y de sólo lectura. Calcula el precio de una traducción certificada y comprueba si una traducción certificada es auténtica. Sin clave, sin registro, sin darse de alta.

## Para qué sirve la API de TriExpert Translations

- **Presupuestar.** Saber cuánto cuesta una traducción certificada antes de mandar a nadie a un formulario.
- **Verificar.** Confirmar que un documento con un código TX-XXXX-XXXX lo emitimos nosotros — útil para cualquier agencia, empleador o universidad que reciba uno.
- **Leer la tarifa.** Consultar el precio por página y los multiplicadores vigentes para reproducir el cálculo por tu cuenta.

Lo que a propósito **no** hace es encargar traducciones. Un encargo implica subir un documento y cobrar, y eso necesita una persona: usa el [formulario de solicitud](https://traduccionestriexpert.com/es/solicitar/) o escribe a [support@triexpertservice.com](mailto:support@triexpertservice.com).

---

## Especificación OpenAPI

La especificación completa, OpenAPI 3.1, se genera a partir de las rutas y las tarifas vivas, así que no puede quedarse desfasada respecto a lo que la API hace de verdad:

```
https://traduccionestriexpert.com/openapi.json
```

URL base de todos los endpoints:

```
https://traduccionestriexpert.com/wp-json/triexpert/v1
```

## GET /quote — estimar un precio

Una página son 250 palabras. `processing` es `standard` (8–12 h) o `urgent` (1–2 h). `format` es `digital`, `physical` o `both`.

```
curl 'https://traduccionestriexpert.com/wp-json/triexpert/v1/quote?pages=3&processing=standard&format=digital'
```

La estimación **no es vinculante**: el precio en firme se fija cuando recibimos el documento y contamos sus páginas reales.

## GET /verify/{code} — comprobar una traducción certificada

Cada traducción certificada que emitimos lleva un código impreso y un QR. La comprobación es pública, no caduca y no revela ningún dato personal del cliente.

```
curl https://traduccionestriexpert.com/wp-json/triexpert/v1/verify/TX-4F2A-9C31
```

Mira el campo `status`: `authentic`, `in_progress`, `cancelled` o `unknown`. Un código no reconocido responde **200 con status `unknown`**, no 404 — la pregunta se ha contestado, así que no es una ruta que falte.

## GET /rates — la tarifa vigente

Devuelve el precio base por página, los multiplicadores de urgencia y de formato doble, y la fórmula exacta, para poder calcular un precio en local sin una ida y vuelta.

```
curl https://traduccionestriexpert.com/wp-json/triexpert/v1/rates
```

---

## Errores

Todos los errores son **problem details de la RFC 9457**, servidos como `application/problem+json`. Nunca una página HTML de error. El objeto lleva siempre un `code` legible por máquina para ramificar, un `detail` para una persona y una `resolution` que dice qué hacer:

```
{
  "type": "https://traduccionestriexpert.com/developers/#errors-rest-invalid-param",
  "title": "Un parámetro no vale",
  "status": 400,
  "detail": "Invalid parameter(s): pages",
  "instance": "https://traduccionestriexpert.com/wp-json/triexpert/v1/quote?pages=abc",
  "code": "rest_invalid_param",
  "resolution": "pages es un entero de 1 a 999; processing es standard o urgent; format es digital, physical o both.",
  "documentation": "https://traduccionestriexpert.com/developers/"
}
```

Los códigos sobre los que puedes ramificar:

- `rest_missing_callback_param` — 400. Falta un parámetro obligatorio.
- `rest_invalid_param` — 400. Un parámetro es de otro tipo o está fuera de rango.
- `rest_no_route` — 404. Ningún endpoint casa con esa URL.
- `tx_not_api` — 404. La ruta parece una llamada a una API, pero no es de las nuestras.
- `tx_method_not_allowed` — 405. La API es de sólo lectura; todo responde a GET.
- `tx_rate_limited` — 429. Demasiadas peticiones desde tu dirección.
- `tx_internal` — 500. Culpa nuestra, no tuya.

Conviene decirlo claro: **un código de verificación no reconocido no es un error**. `/verify/{code}` responde `200` con `"status": "unknown"`, porque la pregunta se ha contestado: no hemos emitido ese documento. Un 404 ahí significaría que falta el endpoint, que es otro problema muy distinto.

Las mismas formas están declaradas en la [especificación OpenAPI](https://traduccionestriexpert.com/openapi.json), en `components/schemas/Problem`, así que un cliente generado obtiene una sola clase de error tipada en vez de cuatro conjeturas.

## Límite de peticiones

60 peticiones cada 10 minutos, por IP y por endpoint. Al pasarse, la API responde `429`. No hay cuota diaria. Si necesitas más margen, escríbenos y cuéntanos qué estás construyendo.

## Leer el sitio en Markdown

Todas las páginas se sirven también en Markdown. Pídelo por cabecera, o añade `.md` a la URL:

```
curl -H 'Accept: text/markdown' https://traduccionestriexpert.com/es/precios/
curl https://traduccionestriexpert.com/es/precios.md
```

- [/llms.txt](https://traduccionestriexpert.com/llms.txt) — el índice corto para agentes, con cuándo este servicio es y no es el adecuado.
- [/llms-full.txt](https://traduccionestriexpert.com/llms-full.txt) — todas las páginas públicas en un solo archivo Markdown.
- [/wp-sitemap.xml](https://traduccionestriexpert.com/wp-sitemap.xml) — el mapa del sitio.
- [/openapi.json](https://traduccionestriexpert.com/openapi.json) — la especificación de la API.

## Condiciones de uso

Los endpoints son de uso libre. No uses el de verificación para enumerar códigos: está para comprobar un documento que tienes delante, no para barrer el espacio de códigos. Te pedimos que identifiques tu cliente en el User-Agent, para poder distinguirte de un raspador si algo se ve raro.

---

*Dudas, o algo que falte en esta página: [support@triexpertservice.com](mailto:support@triexpertservice.com).*

---

- Índice para agentes: https://traduccionestriexpert.com/llms.txt
- API pública: https://traduccionestriexpert.com/openapi.json
- Mapa del sitio: https://traduccionestriexpert.com/wp-sitemap.xml
