curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-kontext-pro",
"prompt": "Change the hair color to blue",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "1:1",
"output_format": "png"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "Change the hair color to blue",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "1:1",
"output_format": "png"
}
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-kontext-pro",
prompt: "Change the hair color to blue",
image_urls: ["https://example.com/portrait.jpg"],
size: "1:1",
output_format: "png"
};
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 Kontext
Geração e edição de imagens com FLUX Kontext
Envie tarefas assíncronas do FLUX Kontext para geração ou edição de imagens. 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-kontext-pro",
"prompt": "Change the hair color to blue",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "1:1",
"output_format": "png"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "Change the hair color to blue",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "1:1",
"output_format": "png"
}
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-kontext-pro",
prompt: "Change the hair color to blue",
image_urls: ["https://example.com/portrait.jpg"],
size: "1:1",
output_format: "png"
};
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-kontext-pro",
"prompt": "Change the hair color to blue",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "1:1",
"output_format": "png"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "Change the hair color to blue",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "1:1",
"output_format": "png"
}
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-kontext-pro",
prompt: "Change the hair color to blue",
image_urls: ["https://example.com/portrait.jpg"],
size: "1:1",
output_format: "png"
};
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-kontext-pro | Geração e edição de imagens com reconhecimento de contexto para fluxos de trabalho em geral. |
flux-kontext-max | Geração e edição de imagens com reconhecimento de contexto e qualidade superior. |
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-kontext-proflux-kontext-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.
array
Imagens de referência para edição. Forneça-as por URL acessível publicamente ou em Base64.
- Máximo: 4 imagens
- A soma da saída com todas as imagens de referência não pode ultrapassar 9 MP
temporarily unavailable dependency; nesse caso, verifique primeiro se a URL é pública, não está expirada e não bloqueia acesso externo.string
padrão:"1:1"
Proporção da imagem de saída. Proporções e modo automático compatíveis:
1:1(padrão)4:33:416:99:163:22:321:99:21auto- Seguir a proporção da imagem de referência
size é definido como auto, a saída segue a proporção da imagem de referência se o campo image_urls for informado. Sem uma imagem de referência, é usada a proporção padrão 1:1.Também é possível informar uma string de pixels, como 1024x1536; o Kontext a converte para a proporção compatível mais próxima, sem garantir essas dimensões exatas.O parâmetro resolution não altera a saída do Kontext, que permanece em torno de 1 MP. Não envie width nem height: esses parâmetros não são compatíveis com o Kontext e fazem a tarefa falhar.string
padrão:"png"
Formato da imagem de saída:
png, jpeg ou webp. O padrão é png.string
Parâmetro de compatibilidade para a forma da resposta. Valores aceitos:
url e b64_json. Ele não altera o formato da imagem; se output_format também for enviado, output_format terá prioridade.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.Defina este parâmetro explicitamente como
false para desativar a reescrita do prompt.integer
padrão:"2"
Tolerância de segurança de
0 a 6. Valores mais altos são mais permissivos.Proporções compatíveis
| Proporção | Orientação |
|---|---|
1:1 | Quadrado (padrão) |
4:3 | Paisagem |
3:4 | Retrato |
16:9 | Paisagem em tela ampla |
9:16 | Retrato vertical |
3:2 | Paisagem clássica |
2:3 | Retrato clássico |
21:9 | Paisagem ultra-ampla |
9:21 | Retrato ultra-alto |
Dimensões reais da saída
| Proporção | Dimensões reais |
|---|---|
1:1 | 1024×1024 |
4:3 | 1184×880 |
3:4 | 880×1184 |
16:9 | 1392×752 |
9:16 | 752×1392 |
3:2 | 1248×832 |
2:3 | 832×1248 |
21:9 | 1568×672 |
9:21 | 672×1568 |
Exemplos de uso
Geração de texto para imagem
{
"model": "flux-kontext-pro",
"prompt": "A cozy reading nook with warm lamplight",
"size": "4:3"
}
Edição de imagem
{
"model": "flux-kontext-max",
"prompt": "Replace the background with a beach while preserving the person",
"image_urls": ["https://example.com/portrait.jpg"],
"size": "16:9",
"output_format": "webp"
}
Várias imagens de referência
{
"model": "flux-kontext-pro",
"prompt": "Place the product from the first image into the room from the second image",
"image_urls": [
"https://example.com/product.jpg",
"https://example.com/room.jpg"
],
"size": "4:3"
}
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-kontext.png"],
"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": "width/height are not supported by flux-kontext-pro"
}
}
}
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é 4 imagens de referência, e a soma da saída com todas as referências não pode ultrapassar 9 MP.
- Defina explicitamente
prompt_upsampling: falsepara desativar a reescrita do prompt. - A expiração da URL do resultado é determinada pelo valor de
expires_atretornado na resposta da tarefa.