Api.Airforce
API REFERENCE

Generazione di immagini

Genera e modifica immagini con un unico endpoint compatibile con OpenAI. La stessa forma di richiesta raggiunge ogni modello di immagini del catalogo.

Un unico endpoint di immagini compatibile con OpenAI si dirama verso Flux, Nano-Banana, Wan e altri provider. Invia la stessa struttura di richiesta indipendentemente dall'upstream; le opzioni specifiche del provider vengono passate e validate rispetto alle capacità di ciascun modello.

Individua i modelli di immagini elencando l'endpoint dei modelli e tenendo quelli le cui output modalities includono image.

POST /v1/images/generations

Drop-in compatibile con OpenAI images.generate SDK. I parametri specifici del provider convivono insieme a quelli standard: il backend inoltra ciò che comprende ciascun modello.

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

Modelli di immagine

…· live

Parametri comuni

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.

Esempio di base

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 della risposta

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 in streaming

Passaggio sse: true durante l'inoltro tramite middleware con timeout di inattività ridotti. La risposta è quindi un evento SSE con il JSON completo [DONE].

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

data: [DONE]

Immagine per immagine e riferimento

Modelli con image_caps.max_input_images > 0 accettare immagini di riferimento. Passa URL o dati con codifica 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"}
    ]
  }'

Modifica immagini

L’endpoint di modifica compatibile con OpenAI. Invia l’immagine di partenza come file multipart, come fanno gli SDK OpenAI per images.edit, oppure invia il corpo JSON mostrato sopra con input_images. Segue lo stesso percorso di /v1/images/generations: stessi modelli, prezzi e formato di risposta.

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)

Fino a 16 immagini di input per richiesta, 25 MB ciascuna; il limite del modello è image_caps.max_input_images. Una richiesta senza immagine di input viene rifiutata con 400 invece di diventare una chiamata testo-immagine. Ogni immagine di input può aumentare il prezzo, come indicato nella pagina del modello.


Parametri specifici del modello

Oltre ai parametri comuni di cui sopra, le singole famiglie di modelli accettano extra. I parametri sconosciuti vengono inoltrati all'upstream così come sono, quindi qualsiasi futura manopola specifica del provider funzionerà anche senza un aggiornamento dell'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 erano storicamente accettati su questo endpoint. Ora appartengono all’API musicale nativa su /v1/audio/music — le chiamate qui vengono rifiutate con `wrong_endpoint`.


Alla scoperta delle capacità

Ogni modello di immagine espone image_caps SU /v1/models in modo che i client possano convalidare gli input prima di inviare:

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

Il prezzo delle immagini non è in image_caps — usa i campi di prezzo del modello su /v1/models per il costo.