Api.Airforce
API REFERENCE

Geração de imagem

Gere e edite imagens através de um único endpoint compatível com OpenAI. O mesmo formato de pedido chega a todos os modelos de imagem do catálogo.

Um único endpoint de imagem compatível com OpenAI se distribui para Flux, Nano-Banana, Wan e outros provedores. Envie o mesmo formato de request independentemente do upstream; opções específicas do provedor passam adiante e são validadas contra as capacidades de cada modelo.

Descubra modelos de imagem listando o endpoint de models e mantendo aqueles cujas output modalities incluem image.

POST /v1/images/generations

Drop-in compatível com OpenAI images.generate SDK. Os parâmetros específicos do provedor convivem com os padrões – o backend encaminha o que cada modelo entende.

POSThttps://api.airforce/v1/images/generations

Modelos de imagem

…· live

Parâmetros comuns

ParameterTypeRequiredDescription
modelstringRequiredImage model ID. Find them on /v1/models: image models carry media_type: "image" and an image_caps block.
promptstringRequiredImage description.
nintegerOptionalNumber of variations to generate per request. Capped by the model's image_caps.max_n.
sizestringOptionalOpenAI-style WxH, e.g. "1024x1024". Provider-specific values pass through.
aspect_ratiostringOptionalAlternative to size. "16:9", "1:1", "9:16", … Validated against image_caps.aspect_ratios.
qualitystringOptional"standard" | "hd" (OpenAI) or model-specific labels. Validated.
response_formatstringOptional"url" (default) or "b64_json".
seedintegerOptionalReproducibility seed. Same prompt + same seed = same image (where the upstream supports it).
input_imagesarrayOptional[{ url? } | { b64_json? }] for image-to-image / reference / first-frame.
ssebooleanOptionalWhen true the response is sent as Server-Sent Events. The full JSON arrives in one event followed by [DONE]. Useful to keep long upstream renders from timing out at proxies.

Exemplo básico

curl https://api.airforce/v1/images/generations \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "prompt": "A cute baby sea otter floating on its back",
    "n": 1,
    "response_format": "url"
  }'

Forma de resposta

ParameterTypeRequiredDescription
createdintegerOptionalUnix timestamp.
dataarrayOptionalGenerated assets.
data[].urlstringOptionalImage URL when response_format is "url" (default). The image is re-hosted to a file host and the link ends in /image.jpeg; null if the re-host fails.
data[].b64_jsonstringOptionalBase64-encoded image bytes when response_format is "b64_json". The format follows the upstream provider (often JPEG), not necessarily PNG.
{
  "created": 1715000000,
  "data": [{
    "url": "https://.../image.jpeg"
  }]
}

Variante de streaming

Passar sse: true ao fazer proxy por meio de middleware com tempos limite de inatividade reduzidos. A resposta é um evento SSE com o JSON completo, então [DONE].

data: {"created":1715000000,"data":[{"url":"https://.../image.jpeg"}]}

data: [DONE]

Imagem a imagem e referência

Modelos com image_caps.max_input_images > 0 aceitar imagens de referência. Passe URLs ou dados codificados em base64.

curl https://api.airforce/v1/images/generations \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "prompt": "Same character, now in a snowy forest",
    "aspect_ratio": "16:9",
    "input_images": [
      {"url": "https://example.com/character.jpg"}
    ]
  }'

Edição de imagens

O endpoint de edição compatível com OpenAI. Envie a imagem de origem como arquivo multipart, como os SDKs da OpenAI fazem em images.edit, ou envie o corpo JSON mostrado acima com input_images. Ele segue o mesmo caminho de /v1/images/generations: mesmos modelos, preços e formato de resposta.

POSThttps://api.airforce/v1/images/edits
ParameterTypeRequiredDescription
modelstringRequiredAn image model with image_caps.max_input_images > 0 (see Discovering capabilities below).
promptstringRequiredWhat to change or create from the input image(s).
imagefileRequiredThe source image. Repeat as image[] for several references; images, images[] and input_images are accepted too, as files or as image URLs.
maskfileOptionalForwarded as is, but no listed model declares mask support, so the serving model may ignore it.
nintegerOptionalNumber of images to generate.
sizestringOptionalOutput size, e.g. "1024x1024", where the model supports it.
aspect_ratiostringOptionalOutput aspect ratio, e.g. "16:9", where the model supports it.
qualitystringOptionalModel-specific quality level.
response_formatstringOptional"url" or "b64_json", as on /v1/images/generations.
curl https://api.airforce/v1/images/edits \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -F "model=nano-banana-2" \
  -F "prompt=Same character, now in a snowy forest" \
  -F "[email protected]" \
  -F "aspect_ratio=16:9"
from openai import OpenAI

client = OpenAI(base_url="https://api.airforce/v1", api_key="sk-air-YOUR_API_KEY")

with open("character.png", "rb") as image:
    result = client.images.edit(
        model="nano-banana-2",
        image=image,
        prompt="Same character, now in a snowy forest",
    )
print(result.data[0].url)

Até 16 imagens de entrada por requisição, 25 MB cada; o limite do próprio modelo é image_caps.max_input_images. Uma requisição sem imagem de entrada é recusada com 400 em vez de virar uma chamada de texto para imagem. Cada imagem de entrada pode aumentar o preço, conforme a página do modelo.


Parâmetros específicos do modelo

Além dos parâmetros comuns acima, famílias de modelos individuais aceitam extras. Parâmetros desconhecidos são encaminhados para o upstream como estão, portanto, qualquer botão futuro específico do provedor também funciona sem uma atualização do SDK.

Nano-Banana

nano-banana-2, nano-banana-pro

ParameterTypeRequiredDescription
aspect_ratiostringOptional"1:1", "16:9", "9:16", "4:3".
resolutionstringOptional"512", "1024", "2048".
image_urlsarrayOptionalReference images.

Suno (music)

suno-v4.5, suno-v5 e suno-v5.5 eram historicamente aceites neste endpoint. Agora pertencem à API de música nativa em /v1/audio/music — as chamadas aqui são rejeitadas com `wrong_endpoint`.


Descobrindo capacidades

Cada modelo de imagem expõe image_caps sobre /v1/models para que os clientes possam validar as entradas antes de enviar:

ParameterTypeRequiredDescription
image_caps.max_nintegerOptionalMaximum n per request.
image_caps.aspect_ratiosarrayOptionalAllowed aspect_ratio values.
image_caps.qualitiesarrayOptionalAllowed quality values.
image_caps.max_input_imagesintegerOptional0 = text-only model. Higher = supports reference images.
image_caps.supports_url_inputbooleanOptionalWhether input_images may be passed as URLs (vs base64).
image_caps.supports_seedbooleanOptionalWhether the model honours a seed value (most scraping-proxy upstreams ignore it).

O preço das imagens não está em image_caps — usa os campos de preço do modelo em /v1/models para o custo.