> ## 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.

# MAI-Image-2.6 Geração de imagens

> Texto para imagem, edição individual, composição com até 5 imagens de referência e pesquisa na web. Versões de alta qualidade e Flash.

## Escolha do modelo

| ID do modelo | Características |
| - | - |
| `mai-image-2.6` | Versão de alta qualidade para usos que priorizam a qualidade visual |
| `mai-image-2.6-flash` | Versão mais rápida e econômica, com qualidade ligeiramente inferior |

Os dois modelos têm os mesmos recursos e parâmetros e geram apenas 1 imagem por solicitação. Consulte os [preços dos modelos](https://apimart.ai/pricing).

<Info>
  Este endpoint é assíncrono. Após o envio, obtenha o ID em `data[0].task_id` e use a [consulta de tarefas](/pt/api-reference/tasks/status). Consulte a cada 3–5 segundos com um limite total de espera de 3 minutos. Pare quando o status for `completed` ou `failed`.
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/images/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "mai-image-2.6",
      "prompt": "Pôster fotorrealista de um campus universitário ao pôr do sol, iluminação cinematográfica",
      "size": "16:9",
      "resolution": "2K"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "mai-image-2.6",
          "prompt": "Pôster fotorrealista de um campus universitário ao pôr do sol, iluminação cinematográfica",
          "size": "16:9",
          "resolution": "2K"
      }
  )
  response.raise_for_status()
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.apimart.ai/v1/images/generations", {
    method: "POST",
    headers: {
      Authorization: "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "mai-image-2.6",
      prompt: "Pôster fotorrealista de um campus universitário ao pôr do sol, iluminação cinematográfica",
      size: "16:9",
      resolution: "2K"
    })
  });
  if (!response.ok) throw new Error(await response.text());
  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01K..."
      }
    ]
  }
  ```
</ResponseExample>

## Cabeçalhos da solicitação

<ParamField header="Authorization" type="string" required>
  Autenticação Bearer no formato `Bearer <token>`, em que `<token>` é sua APIMart API Key.
</ParamField>

## Parâmetros da solicitação

<ParamField body="model" type="string" required>
  ID do modelo: `mai-image-2.6` ou `mai-image-2.6-flash`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Descrição da imagem ou instruções de edição. Suporta chinês e inglês, até aproximadamente 32.000 tokens (não caracteres).
</ParamField>

<ParamField body="size" type="string" default="1:1">
  Aceita proporção (como `16:9`), dimensões em pixels (como `1536x1024`) ou `auto`.

  * Proporção: qualquer razão de inteiros de `1:4` a `4:1`, junto com `resolution`.
  * Pixels: aceita `larguraxaltura`, `largura*altura` ou `largura×altura`. Nesse modo, `resolution` não determina as dimensões.
  * `auto`: o modelo escolhe a proporção com base no prompt.

  Apenas para texto para imagem. Com referências, o modelo determina as dimensões de saída.
</ParamField>

<ParamField body="resolution" type="string" default="1K">
  Suporta `1K` e `2K`, inclusive em minúsculas. Outras faixas, como `4K`, retornam HTTP 400.

  Determina a faixa de tamanho em texto para imagem com proporção. Não calcula dimensões quando pixels exatos são usados. Não define dimensões em imagem para imagem.
</ParamField>

<ParamField body="width" type="integer">
  Largura exata em pixels, obrigatoriamente junto com `height`. Essa dupla tem prioridade sobre `size` e `resolution` em texto para imagem.

  Largura e altura devem ser no mínimo 768, com até 2.359.296 pixels no total. Use múltiplos de 32; caso contrário, cada dimensão é arredondada para baixo até um múltiplo de 32.

  Este parâmetro não determina as dimensões em imagem para imagem.
</ParamField>

<ParamField body="height" type="integer">
  Altura exata em pixels, junto com `width`, seguindo os limites acima. Não determina as dimensões em imagem para imagem.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Lista de até 5 referências. Omita para texto para imagem; uma imagem permite edição individual e várias permitem composição.

  Cada item aceita uma URL de imagem HTTP(S) acessível publicamente ou uma Data URL Base64 como `data:image/png;base64,...`.

  JPEG e PNG são suportados; WEBP e GIF são convertidos automaticamente para PNG. As URLs devem ser públicas ou a tarefa falhará.

  **Em imagem para imagem, o modelo determina as dimensões pelas referências**, cerca de 1 milhão de pixels com proporção semelhante. `size`, `resolution`, `width` e `height` não podem definir essas dimensões.
</ParamField>

<ParamField body="auto_aspect_ratio" type="boolean" default="false">
  Com `true`, o modelo escolhe a proporção pelo prompt, equivalente a `size: "auto"`.
</ParamField>

<ParamField body="web_grounding" type="boolean" default="false">
  Com `true`, pesquisa informações em tempo real antes da geração, útil para pessoas, lugares ou eventos reais.
</ParamField>

<ParamField body="n" type="integer" default="1">
  Apenas `1` é suportado. Envie tarefas separadas para várias imagens. Valores acima de 1 retornam HTTP 400.
</ParamField>

## Dimensões de texto para imagem

| Necessidade | Parâmetros |
| - | - |
| Quadrado padrão | Omitir tamanho: `1:1` + `1K`, saída 1024×1024 |
| Resolução + proporção | `size: "16:9"`, `resolution: "2K"` |
| Pixels exatos | `size: "1536x1024"` ou `width: 1536`, `height: 1024` |
| Proporção automática | `size: "auto"` ou `auto_aspect_ratio: true` |

Prioridade em texto para imagem: par `width` / `height` → `size` em pixels → `size` como proporção combinado com `resolution`.

### Faixas e proporções

| Proporção | 1K | 2K |
| - | - | - |
| 1:1 | 1024×1024 | 1536×1536 |
| 4:3 / 3:4 | 1152×864 / 864×1152 | 1760×1312 / 1312×1760 |
| 3:2 / 2:3 | 1248×832 / 832×1248 | 1856×1248 / 1248×1856 |
| 16:9 / 9:16 | 1344×768 / 768×1344 | 2048×1152 / 1152×2048 |
| 2:1 / 1:2 | 1536×768 / 768×1536 | 2144×1056 / 1056×2144 |
| 21:9 / 9:21 | 1792×768 / 768×1792 | 2336×992 / 992×2336 |
| 4:1 / 1:4 | 3072×768 / 768×3072 | 3072×768 / 768×3072 |

As dimensões são convertidas em múltiplos de 32. Como o lado menor deve ter pelo menos 768, proporções extremas podem ultrapassar aproximadamente 1 milhão de pixels mesmo em `1K`. A cobrança usa os tokens correspondentes aos pixels reais de saída.

### Limites de pixels exatos

* Largura e altura devem ser no mínimo 768.
* Largura × altura não pode ultrapassar 2.359.296 (1536 × 1536).
* Cada dimensão é arredondada para baixo a um múltiplo de 32. Por exemplo, `1000x1000` produz `992x992`. Use múltiplos de 32 para dimensões exatas.

`1536x1024`, `2048x1152` e `3072x768` são suportados. `512x512` é rejeitado por lados pequenos demais; `2048x2048` ultrapassa o total de pixels.

<Warning>
  O limite é de **pixels totais**, não de 1536 por lado. Portanto, `2048x1152` e `3072x768` são válidos, mas a faixa 4K não é suportada. Esses ajustes se aplicam apenas a texto para imagem.
</Warning>

## Exemplos de solicitações

### Pixels exatos e pesquisa na web

```json theme={null}
{
  "model": "mai-image-2.6-flash",
  "prompt": "A Torre Eiffel à noite com fogos de artifício, estilo pôster de viagem",
  "width": 2048,
  "height": 1152,
  "web_grounding": true
}
```

### Edição individual

```json theme={null}
{
  "model": "mai-image-2.6",
  "prompt": "Deixe a bicicleta azul e adicione um cachorro pequeno ao lado dela",
  "image_urls": ["https://example.com/bicycle.png"]
}
```

### Composição de várias imagens

```json theme={null}
{
  "model": "mai-image-2.6-flash",
  "prompt": "Combine as duas imagens de referência em uma foto de produto limpa e futurista",
  "image_urls": [
    "https://example.com/first.png",
    "https://example.com/second.jpg"
  ]
}
```

Substitua as URLs de exemplo por endereços de imagens acessíveis.

## Parâmetros não suportados

`quality`, `style`, `background`, `output_format`, `response_format` e `mask_url` não são suportados e são ignorados. A saída é sempre PNG. Edição por máscara não é suportada.

## Resposta do envio

<ResponseField name="code" type="integer">
  Código de status da resposta. `200` indica sucesso.
</ResponseField>

<ResponseField name="data" type="array">
  Resultado do envio da tarefa.

  <Expandable title="Mostrar campos da tarefa">
    <ResponseField name="status" type="string">
      `submitted` indica envio bem-sucedido, não geração concluída.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      ID da tarefa usado para consultar status e resultados.
    </ResponseField>
  </Expandable>
</ResponseField>

## Consultar resultados

```bash theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01K... \
  --header 'Authorization: Bearer <token>'
```

Exemplo de resposta bem-sucedida (a URL da imagem é ilustrativa):

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01K...",
    "status": "completed",
    "progress": 100,
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.png"]
        }
      ]
    }
  }
}
```

| Status | Ação |
| - | - |
| `pending` | Na fila; continuar consultando |
| `processing` | Em processamento; continuar consultando |
| `completed` | Sucesso; obter links no array `data.result.images[0].url` |
| `failed` | Falha; consultar `data.error.message` e parar as consultas. Reembolso integral |

## Cobrança

Cobrança pelo uso real de tokens de entrada e saída. Consulte os [preços dos modelos](https://apimart.ai/pricing).

* Tokens de saída da imagem = largura real × altura ÷ 1024. 1024×1024 corresponde a 1024 tokens; 1536×1536, a 2304 tokens.
* Tokens de entrada por referência ≈ largura × altura ÷ 1024. Prompts de texto também contam como entrada.
* No envio, um valor é debitado conforme a faixa; após o sucesso, é ajustado ao uso real com reembolso ou cobrança adicional.
* Tarefas com falha recebem reembolso integral automático. Erros de parâmetros rejeitados no envio não criam tarefas nem geram cobrança.

## Erros comuns

| HTTP | Causa e solução |
| - | - |
| 400 | `resolution` não suportada, como `4K`; use `1K` ou `2K` |
| 400 | Largura ou altura abaixo de 768, ou total acima de 2.359.296 pixels |
| 400 | Apenas `width` ou `height` foi enviado; ambos devem ser fornecidos juntos |
| 400 | Proporção fora de `1:4` a `4:1`, ou formato de `size` desconhecido |
| 400 | `n` acima de 1 ou mais de 5 referências |

Em caso de falha, verifique erros de download ou segurança do conteúdo e altere o prompt ou as referências antes de tentar novamente. A edição de fotos realistas envolvendo menores pode ser bloqueada pelas políticas de segurança.


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