Api.Airforce
API REFERENCE

Beeldgeneratie

Genereer en bewerk afbeeldingen via één OpenAI-compatibel eindpunt. Dezelfde verzoekvorm bereikt elk afbeeldingsmodel in de catalogus.

Eén OpenAI-compatibel image-endpoint verdeelt naar Flux, Nano-Banana, Wan en andere providers. Stuur dezelfde request-shape ongeacht de upstream; provider-specifieke opties gaan door en worden gevalideerd tegen de capabilities van elk model.

Ontdek image-modellen door het models-endpoint op te vragen en degene te behouden waarvan de output-modalities image bevatten.

POST /v1/images/generations

Drop-in compatibel met de OpenAI images.generate SDK. Provider-specifieke parameters leven naast de standaardparameters: de backend geeft door wat elk model begrijpt.

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

Beeldmodellen

…· live

Gemeenschappelijke parameters

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.

Eenvoudig voorbeeld

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"
  }'

Reactie vorm

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"
  }]
}

Streaming-variant

Doorgang sse: true bij proxying via middleware met krappe time-outs voor inactiviteit. Het antwoord is dan één SSE-gebeurtenis met de volledige JSON [DONE].

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

data: [DONE]

Afbeelding-naar-afbeelding en referentie

Modellen met image_caps.max_input_images > 0 accepteer referentieafbeeldingen. Geef URL's of base64-gecodeerde gegevens door.

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"}
    ]
  }'

Afbeeldingen bewerken

Het OpenAI-compatibele edit-endpoint. Stuur de bronafbeelding als multipart-bestand, zoals de OpenAI-SDK’s doen voor images.edit, of stuur de JSON-body van hierboven met input_images. Het volgt hetzelfde pad als /v1/images/generations: dezelfde modellen, prijzen en hetzelfde antwoordformaat.

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)

Tot 16 invoerafbeeldingen per verzoek, elk 25 MB; de eigen limiet van het model staat in image_caps.max_input_images. Een verzoek zonder invoerafbeelding wordt met 400 geweigerd in plaats van een tekst-naar-afbeelding-aanroep te worden. Elke invoerafbeelding kan de prijs verhogen, zoals op de modelpagina staat.


Modelspecifieke parameters

Naast de bovenstaande gemeenschappelijke parameters accepteren individuele modelfamilies extra's. Onbekende parameters worden as-is doorgestuurd naar de upstream, dus elke toekomstige providerspecifieke knop werkt ook zonder SDK-update.

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 en suno-v5.5 werden hier historisch geaccepteerd. Ze horen nu bij de native muziek-API op /v1/audio/music — aanroepen hier worden geweigerd met `wrong_endpoint`.


Mogelijkheden ontdekken

Elk beeldmodel legt bloot image_caps op /v1/models zodat klanten de invoer kunnen valideren voordat ze het volgende verzenden:

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

Image-prijzen staan niet op image_caps — gebruik de prijsvelden van het model op /v1/models voor de kosten.