curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-2-pro",
"prompt": "A blue cat sitting on the grass",
"resolution": "2MP",
"size": "16:9",
"output_format": "jpeg"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "A blue cat sitting on the grass",
"resolution": "2MP",
"size": "16:9",
"output_format": "jpeg"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-2-pro",
prompt: "A blue cat sitting on the grass",
resolution: "2MP",
size: "16:9",
output_format: "jpeg"
};
const response = await fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance, please top up",
"type": "payment_required"
}
}
Flux 2.0
Geração de imagens com FLUX.2
Envie tarefas assíncronas do FLUX.2 para geração a partir de texto ou de imagens de referência. A API retorna um ID de tarefa; consulte o endpoint de tarefas para obter a imagem gerada.
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": "flux-2-pro",
"prompt": "A blue cat sitting on the grass",
"resolution": "2MP",
"size": "16:9",
"output_format": "jpeg"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "A blue cat sitting on the grass",
"resolution": "2MP",
"size": "16:9",
"output_format": "jpeg"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-2-pro",
prompt: "A blue cat sitting on the grass",
resolution: "2MP",
size: "16:9",
output_format: "jpeg"
};
const response = await fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance, please top up",
"type": "payment_required"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-2-pro",
"prompt": "A blue cat sitting on the grass",
"resolution": "2MP",
"size": "16:9",
"output_format": "jpeg"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "A blue cat sitting on the grass",
"resolution": "2MP",
"size": "16:9",
"output_format": "jpeg"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-2-pro",
prompt: "A blue cat sitting on the grass",
resolution: "2MP",
size: "16:9",
output_format: "jpeg"
};
const response = await fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance, please top up",
"type": "payment_required"
}
}
Modelos compatíveis
| Modelo | Descrição |
|---|---|
flux-2-flex | Geração com controle detalhado das etapas de amostragem e da intensidade de orientação. |
flux-2-pro | Equilíbrio entre qualidade e velocidade para fluxos de produção em geral. |
flux-2-max | Modelo FLUX.2 de maior qualidade, voltado ao máximo nível de detalhe. |
Autenticação
string
obrigatório
Todos os endpoints exigem autenticação com token Bearer.Obtenha uma chave de API em Gerenciamento de chaves de API e adicione-a ao cabeçalho da requisição:
Authorization: Bearer YOUR_API_KEY
Corpo da requisição
string
obrigatório
Nome do modelo:
flux-2-flexflux-2-proflux-2-max
boolean
padrão:"false"
Define se o conteúdo deve ser moderado antes do envio da tarefa de imagem.
true: verificar prompts e imagens de entrada comomni-moderation-latestfalseou omitido: não enviar solicitação de moderação, sem custo nem latência adicionais de moderação (padrão)
string
obrigatório
Descrição textual da imagem a ser gerada ou da edição a ser aplicada às imagens de referência.
string
padrão:"2MP"
Predefinição da resolução de saída. Valores compatíveis:
1MP2MP(padrão)3MP4MP
1MP corresponde a 1,048,576 pixels.Para compatibilidade com integrações antigas, os seguintes aliases também são aceitos: 512, 512P e 1M equivalem a 1MP; 1K e 1024, a 2MP; 2K e 2048, a 3MP; 4K, a 4MP. Outros valores são rejeitados.A predefinição determina as dimensões de saída quando size contém uma proporção. Ela é substituída quando dimensões exatas em pixels são fornecidas por size ou por width e height.string
padrão:"1:1"
Proporção ou dimensões em pixels da imagem de saída.
size também aceita auto: quando image_urls é fornecido, a proporção da imagem de referência é seguida mantendo o nível atual de resolution; sem imagem de referência, é usado o padrão 1:1.Opções de tamanho compatíveis:1:1(padrão)4:33:416:99:163:22:321:99:21auto- seguir a proporção da imagem de referência
1024x1536. As dimensões exatas em pixels estão sujeitas aos mesmos limites de width e height.A prioridade é: o par width + height, uma string de pixels em size, resolution + proporção em size e, por fim, o padrão 2MP + 1:1 (1440×1440).integer
Largura exata da saída em pixels. Se for informada,
height também será obrigatório. Cada dimensão deve ter pelo menos 64 pixels. Informar apenas uma das dimensões faz a tarefa falhar.Um par completo de width e height tem a maior prioridade e substitui resolution e size.integer
Altura exata da saída em pixels. Se for informada,
width também será obrigatório. Cada dimensão deve ter pelo menos 64 pixels. Informar apenas uma das dimensões faz a tarefa falhar.A saída não pode ultrapassar 4 MP (width × height ≤ 4,194,304), e a soma da saída com todas as imagens de referência não pode ultrapassar 9 MP.array
Imagens de referência para geração a partir de imagens. Forneça-as por URL acessível publicamente ou em Base64.
- Máximo: 8 imagens
- A soma da saída com todas as imagens de referência não pode ultrapassar 9 MP
string
padrão:"jpeg"
Formato da imagem de saída:
jpeg, png ou webp. O padrão é jpeg.integer
padrão:"1"
Número de imagens geradas. Somente o valor
1 é aceito.integer
Semente aleatória. Reutilize a mesma semente e os mesmos parâmetros para obter resultados reproduzíveis; omita-a para usar uma semente aleatória.
boolean
padrão:"false"
Indica se o prompt deve ser aprimorado e reescrito antes da geração. O padrão é
false; defina como true para ativar esse recurso. Envie false explicitamente para desativar a reescrita do prompt.integer
padrão:"2"
Tolerância de segurança de
0 a 5. Valores mais altos são mais permissivos.integer
padrão:"50"
Número de etapas de amostragem, de
1 a 50. Valores mais altos podem melhorar os detalhes, mas aumentam o tempo de processamento.Este parâmetro só é compatível com flux-2-flex. Não o envie com flux-2-pro ou flux-2-max.number
padrão:"5.0"
Intensidade de orientação do prompt, de
1.5 a 10. Valores mais altos seguem o prompt com mais fidelidade.Este parâmetro só é compatível com flux-2-flex. Não o envie com flux-2-pro ou flux-2-max.Tabela de referência de resoluções
| Proporção | 1MP | 2MP (padrão) | 3MP | 4MP |
|---|---|---|---|---|
1:1 | 1024×1024 | 1440×1440 | 1536×1536 | 2048×2048 |
4:3 | 1152×864 | 1664×1248 | 1824×1360 | 2336×1760 |
3:4 | 864×1152 | 1248×1664 | 1360×1824 | 1760×2336 |
16:9 | 1344×752 | 1920×1072 | 2048×1152 | 2720×1536 |
9:16 | 752×1344 | 1072×1920 | 1152×2048 | 1536×2720 |
3:2 | 1248×832 | 1728×1152 | 1872×1248 | 2496×1664 |
2:3 | 832×1248 | 1152×1728 | 1248×1872 | 1664×2496 |
21:9 | 1504×640 | 2176×928 | 2304×992 | 3072×1312 |
9:21 | 640×1504 | 928×2176 | 992×2304 | 1312×3072 |
Exemplos de uso
Geração de texto para imagem
{
"model": "flux-2-pro",
"prompt": "A cinematic city at night with neon reflections on wet streets",
"resolution": "1MP",
"size": "16:9"
}
Geração a partir de imagens de referência
{
"model": "flux-2-pro",
"prompt": "Place the person from the first image in the scene from the second image and match the lighting",
"image_urls": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
],
"resolution": "2MP",
"output_format": "webp"
}
Dimensões exatas de saída
{
"model": "flux-2-max",
"prompt": "A highly detailed botanical illustration",
"width": 1024,
"height": 1536
}
Controles do FLUX.2 Flex
{
"model": "flux-2-flex",
"prompt": "A minimalist poster with the headline SUMMER SALE and the subheading 50% OFF",
"resolution": "3MP",
"size": "3:4",
"steps": 50,
"guidance": 6.5
}
Resposta
integer
Código de status da resposta.
array
Recuperar o resultado
ConsulteGET /v1/tasks/{task_id} até que a tarefa atinja o status completed ou failed. Consulte a API de status de tarefas para ver o esquema completo da resposta.
Uma tarefa concluída contém uma imagem gerada:
{
"code": 200,
"data": {
"id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://upload.apimart.ai/f/image/xxxxxxxx-flux-2.jpeg"],
"expires_at": 1785220083
}
]
}
}
}
data.result.images[0].url[0]. A expiração é definida pelo timestamp Unix em data.result.images[0].expires_at; baixe a imagem antes desse momento.
Status da tarefa
| Status | Significado |
|---|---|
submitted / pending | A tarefa foi aceita ou está na fila; continue consultando |
processing | A imagem está sendo gerada; continue consultando |
completed | A tarefa foi concluída; o resultado está em result.images |
failed | A tarefa falhou; o motivo está em data.error.message e o valor é reembolsado integralmente |
{
"code": 200,
"data": {
"status": "failed",
"error": {
"type": "task_failed",
"code": "task_failed",
"message": "`steps` must be between 1 and 50 (got 0)"
}
}
}
task_id; durante a consulta, a tarefa passa para failed. O motivo específico está sempre em error.message, enquanto error.code é task_failed. Tarefas que falham são reembolsadas integralmente.
Observações
- As tarefas são processadas de forma assíncrona. A resposta ao envio retorna um
task_idpara consultar o status. - O parâmetro
ndeve ser1; cada requisição gera exatamente uma imagem. - As imagens de referência podem ser fornecidas por URL acessível publicamente ou em Base64.
- São permitidas até 8 imagens de referência, respeitando o limite combinado de 9 MP para a entrada e a saída.
- As dimensões exatas de saída podem ser definidas com
sizeem pixels ou comwidtheheightfornecidos juntos. Nesse segundo caso, cada dimensão deve ter pelo menos 64 pixels; a saída é limitada a 4 MP. - A expiração da URL do resultado é determinada pelo valor de
expires_atretornado na resposta da tarefa. prompt_upsamplingéfalsepor padrão.