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"
}'
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())
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());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
MAI-Image-2.6
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.
POST
/
v1
/
images
/
generations
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"
}'
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())
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());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
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 |
Este endpoint é assíncrono. Após o envio, obtenha o ID em
data[0].task_id e use a consulta de tarefas. Consulte a cada 3–5 segundos com um limite total de espera de 3 minutos. Pare quando o status for completed ou failed.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"
}'
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())
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());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Cabeçalhos da solicitação
string
obrigatório
Autenticação Bearer no formato
Bearer <token>, em que <token> é sua APIMart API Key.Parâmetros da solicitação
string
obrigatório
ID do modelo:
mai-image-2.6 ou mai-image-2.6-flash.string
obrigatório
Descrição da imagem ou instruções de edição. Suporta chinês e inglês, até aproximadamente 32.000 tokens (não caracteres).
string
padrão:"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:4a4:1, junto comresolution. - Pixels: aceita
larguraxaltura,largura*alturaoulargura×altura. Nesse modo,resolutionnão determina as dimensões. auto: o modelo escolhe a proporção com base no prompt.
string
padrão:"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.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.integer
Altura exata em pixels, junto com
width, seguindo os limites acima. Não determina as dimensões em imagem para imagem.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.boolean
padrão:"false"
Com
true, o modelo escolhe a proporção pelo prompt, equivalente a size: "auto".boolean
padrão:"false"
Com
true, pesquisa informações em tempo real antes da geração, útil para pessoas, lugares ou eventos reais.integer
padrão:"1"
Apenas
1 é suportado. Envie tarefas separadas para várias imagens. Valores acima de 1 retornam HTTP 400.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 |
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 |
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,
1000x1000produz992x992. 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.
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.Exemplos de solicitações
Pixels exatos e pesquisa na web
{
"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
{
"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
{
"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"
]
}
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
integer
Código de status da resposta.
200 indica sucesso.array
Consultar resultados
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01K... \
--header 'Authorization: Bearer <token>'
{
"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.- 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 |