> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# API de Midjourney

>  - Resumen de los endpoints de Midjourney: texto-a-imagen (Imagine) / generación guiada por imagen / acciones posteriores / imagen a video
- Modo de tarea asíncrona: recibe task_id tras el envío y sondea el resultado
- Las nuevas rutas inyectan automáticamente model=midjourney y soportan parámetros nativos MJ, campos estructurados de body y metadata 

<Note>
  **Base URL:** `https://api.apimart.ai`

  **Auth:** `Authorization: Bearer <token>`

  Las nuevas rutas `/v1/midjourney/...` inyectan `model=midjourney` automáticamente; no necesita pasar `model` en el body.
</Note>

## Inicio rápido

```bash theme={null}
# 1. Enviar un trabajo Imagine
curl -X POST https://api.apimart.ai/v1/midjourney/generations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "a cute cat, watercolor style --ar 16:9"}'

# 2. Sondear la API unificada de tareas hasta status=completed
curl https://api.apimart.ai/v1/tasks/task_01JWXXXX \
  -H "Authorization: Bearer <token>"

# 3. Ampliar la imagen 1
curl -X POST https://api.apimart.ai/v1/midjourney/generations/upscale \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"task_id": "task_01JWXXXX", "index": 1}'
```

## Resumen de la API

Vea los campos completos, ejemplos y notas de cada función en su subpágina correspondiente.

| Función                      | Ruta                                                             | Documentación                      |
| ---------------------------- | ---------------------------------------------------------------- | ---------------------------------- |
| Texto a imagen (por defecto) | `POST /v1/midjourney/generations`                                | [Imagine](./imagine)               |
| Texto a imagen (explícito)   | `POST /v1/midjourney/generations/imagine`                        | [Imagine](./imagine)               |
| Mezcla de varias imágenes    | `POST /v1/midjourney/generations/blend`                          | [Blend](./blend)                   |
| Imagen a texto               | `POST /v1/midjourney/generations/describe`                       | [Describe](./describe)             |
| Edición de imagen            | `POST /v1/midjourney/generations/edits`                          | [Edits](./edits)                   |
| Ampliar una baldosa          | `POST /v1/midjourney/generations/upscale`                        | [Upscale](./upscale)               |
| Variación                    | `POST /v1/midjourney/generations/variation`                      | [Variation](./variation)           |
| Variación fuerte             | `POST /v1/midjourney/generations/high-variation`                 | [High Variation](./high-variation) |
| Variación sutil              | `POST /v1/midjourney/generations/low-variation`                  | [Low Variation](./low-variation)   |
| Regenerar                    | `POST /v1/midjourney/generations/reroll`                         | [Reroll](./reroll)                 |
| Zoom out                     | `POST /v1/midjourney/generations/zoom`                           | [Zoom](./zoom)                     |
| Paneo                        | `POST /v1/midjourney/generations/pan`                            | [Pan](./pan)                       |
| Inpaint (Vary Region)        | `POST /v1/midjourney/generations/inpaint`                        | [Inpaint](./inpaint)               |
| Modal (parámetros)           | `POST /v1/midjourney/generations/modal`                          | [Modal](./modal)                   |
| Imagen a video               | `POST /v1/midjourney/generations/video`                          | [Video](./video)                   |
| Remix (fuerte / sutil)       | `POST /v1/midjourney/generations/remix-strong` · `/remix-subtle` | [Remix](./remix)                   |
| Consulta de tareas           | `GET /v1/tasks/{task_id}` · `/v1/midjourney/{task_id}`           | [Consultar tarea](./query)         |

Véase también: [Buenas prácticas](./best-practices) (sondeo / reintentos / solución de problemas) · [Flujos completos](./workflow) (recorridos curl + wrappers de cliente)

## Flujo de extremo a extremo

```mermaid theme={null}
flowchart TB
  A["① POST /generations<br/>enviar Imagine"] --> B["② GET /v1/tasks/{task_id}<br/>sondear hasta completed"]
  B --> C["③ Si se necesitan botones<br/>GET /v1/midjourney/{task_id}"]
  C --> D1["/upscale"]
  C --> D2["/variation"]
  C --> D3["/reroll"]
  C --> D4["/zoom"]
  C --> D5["/inpaint<br/>(entra en MODAL)"]
  D5 --> M["/modal<br/>enviar máscara + prompt"]
```

## Errores

### Formato de respuesta de error

```json theme={null}
{
  "error": {
    "type": "invalid_request_error",
    "message": "prompt is required"
  }
}
```

### Errores comunes

| HTTP | type                    | Significado             |
| ---- | ----------------------- | ----------------------- |
| 400  | `invalid_request_error` | Parámetros inválidos    |
| 401  | `authentication_error`  | API Key inválida        |
| 402  | `payment_required`      | Saldo insuficiente      |
| 404  | `not_found`             | Tarea no encontrada     |
| 429  | `rate_limit_error`      | Límite de tasa excedido |
| 500  | `internal_error`        | Error del servidor      |

### Fallos de tarea

Valores comunes de `fail_reason`:

* `Banned prompt detected` — contenido prohibido en el prompt
* `Task timeout` — timeout (auto-reembolso tras 30+ minutos)
* `No available upstream` — servicio temporalmente no disponible, reintente más tarde

## Facturación

El nombre unificado del modelo para las nuevas rutas MJ es `midjourney`. Las claves de facturación se generan a partir de action, version y speed. El orden de match habitual es:

```text theme={null}
midjourney@<action>-<version>-<speed>
-> midjourney@<action>-<version>
-> midjourney@<action>-<speed>
-> midjourney@<action>
-> midjourney
```

| Acción         | Nombre de facturación                         | Notas                                  |
| -------------- | --------------------------------------------- | -------------------------------------- |
| Imagine        | `midjourney@imagine[-version][-speed]`        | Texto a imagen / guiado por imagen     |
| Blend          | `midjourney@blend[-speed]`                    | Mezcla de varias imágenes              |
| Describe       | `midjourney@describe[-speed]`                 | Imagen a texto                         |
| Edits          | `midjourney@edits[-speed]`                    | Edición de imagen                      |
| Upscale        | `midjourney@upscale[-version][-speed]`        | Ampliación                             |
| Variation      | `midjourney@variation[-version][-speed]`      | Variación                              |
| High Variation | `midjourney@high_variation[-version][-speed]` | Variación fuerte                       |
| Low Variation  | `midjourney@low_variation[-version][-speed]`  | Variación sutil                        |
| Reroll         | `midjourney@reroll[-version][-speed]`         | Regeneración                           |
| Zoom           | `midjourney@zoom[-version][-speed]`           | Zoom out / outpaint                    |
| Pan            | `midjourney@pan[-version][-speed]`            | Pan outpaint                           |
| Inpaint        | `midjourney@inpaint[-version][-speed]`        | Entrada de inpaint                     |
| Modal          | `midjourney@modal[-speed]`                    | Parámetros de seguimiento de inpaint   |
| Video          | `midjourney@video` / `midjourney@video-720p`  | Imagen a video, cobrado × `batch_size` |
| Remix Strong   | `midjourney@remix_strong[-speed]`             | Reshape fuerte (solo v8.1 / v8.2)      |
| Remix Subtle   | `midjourney@remix_subtle[-speed]`             | Reshape sutil (solo v8.1 / v8.2)       |

Notas:

* `speed=relax` u omitido no añade sufijo de speed; `fast` / `turbo` añaden el sufijo correspondiente.
* Las versiones principales se normalizan a `v8.2`, `v8.1`, `v7`, `v6.1`, `v5.2`, `v5.1`.
* `niji=true + version=7/6` se normaliza a `niji7` / `niji6`.

> Vea el precio en la consola. Las tareas fallidas se reembolsan completamente.
