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

# Describe

> Upload an image and get prompt-ready descriptions of it.

> [!TIP]
>
> You can also submit through the unified task endpoint `POST /v1/task/submit` with `model` set to `midjourney-describe` and the parameters inside `input`. Both behave and bill the same.

Describe is synchronous: the response already holds the result (`status` is `success`, descriptions are in `descriptions`), so there is nothing to fetch.


## OpenAPI

````yaml en/openapi/midjourney.json POST /midjourney/describe
openapi: 3.1.0
info:
  title: Midjourney API
  version: 1.0.0
  description: Midjourney
servers:
  - url: https://api.ephone.ai
security:
  - bearerAuth: []
paths:
  /midjourney/describe:
    post:
      summary: Describe
      description: Upload an image and get prompt-ready descriptions of it.
      operationId: midjourney_describe
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                image:
                  type: string
                  description: >-
                    **Image**: An image URL (publicly reachable) or a base64
                    data URI, up to 20 MB each.
                notify_hook:
                  type: string
                  format: uri
                  description: >-
                    **Notify hook**: when the task ends, the same content as the
                    fetch result is POSTed to this URL (a public http / https
                    URL). Omit it to poll instead.
              required:
                - image
            example:
              image: https://example.com/cat.png
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
              example:
                task_id: mj-6f1c2b0e9a7d4e2fb1c3d5e7f9a1b2c3
                action: describe
                status: success
                descriptions:
                  - 一只橘猫趴在窗台上晒太阳……
                created_at: 1792000000
                finished_at: 1792000000
        '400':
          description: invalid_request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: invalid_request
                  message: index must be between 1 and 4
        '401':
          description: unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: unauthorized
                  message: Invalid API key
        '402':
          description: insufficient_quota
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient balance
        '429':
          description: queue_full
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: queue_full
                  message: Queue is full, please try again later
        '500':
          description: upstream_error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: upstream_error
                  message: The service is temporarily unavailable, please retry
components:
  schemas:
    Task:
      type: object
      properties:
        task_id:
          type: string
          description: Task ID.
        action:
          type: string
          description: Action name, e.g. `imagine`, `upscale`.
        status:
          type: string
          description: Task status, see the table above.
          enum:
            - submitted
            - in_progress
            - success
            - failure
        speed:
          type: string
          description: >-
            The speed tier chosen on submit: `relax`, `fast` or `turbo`, which
            is also the tier you are billed for. Describe has no speed, so it is
            omitted.
        prompt:
          type: string
          description: The prompt that was submitted.
        images:
          type: array
          items:
            type: string
          description: >-
            Image URLs in index order (the first one is `index: 1`). An image
            that failed content review is an empty string.
        videos:
          type: array
          items:
            type: string
          description: Video URLs (video endpoints) in index order.
        descriptions:
          type: array
          items:
            type: string
          description: Image descriptions (describe).
        seed:
          type: integer
          description: Seed.
        actions:
          type: array
          items:
            type: string
          description: >-
            Operations you can run next on this task, e.g. `["upscale",
            "variation", "reroll"]`. Pass one as `action` to `POST
            /midjourney/action` together with `task_id`; per-image operations
            also take `index`, `reroll` doesn't.
        fail_reason:
          type: string
          description: Failure reason.
        created_at:
          type: integer
          description: Created at (Unix seconds).
        finished_at:
          type: integer
          description: Finished at (Unix seconds).
        usage:
          type: object
          description: >-
            Usage, returned only on `success`, e.g. `{"type": "call",
            "multiplier": 2}`. `multiplier` is the spec multiplier on the unit
            price of the selected speed tier in the price table: 2 for HD, 0.5
            for a V7 draft; videos depend on resolution and count. Account
            discounts are not included; see the `X-Billing-Amount` response
            header (query with `X-Billing-Detail: true`) for what the task
            actually cost.
      required:
        - task_id
        - action
        - status
        - created_at
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Send your API key in the `Authorization: Bearer YOUR_API_KEY` header.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.