Api.Airforce
API REFERENCE

Generowanie obrazu

Generuj i edytuj obrazy przez jeden punkt końcowy zgodny z OpenAI. Ten sam kształt żądania dociera do każdego modelu obrazu w katalogu.

Jeden zgodny z OpenAI endpoint obrazów rozgałęzia się do Flux, Nano-Banana, Wan i innych dostawców. Wysyłaj ten sam kształt żądania niezależnie od źródła; opcje specyficzne dla dostawcy są przekazywane dalej i walidowane względem możliwości każdego modelu.

Odkryj modele obrazów, listując endpoint models i zachowując te, których output modalities obejmują image.

POST /v1/images/generations

Drop-in kompatybilny z OpenAI images.generate SDK. Parametry specyficzne dla dostawcy działają równolegle ze standardowymi — backend przekazuje dalej to, co rozumie każdy model.

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

Modele obrazu

…· live

Wspólne parametry

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.

Podstawowy przykład

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

Kształt odpowiedzi

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

Wariant strumieniowy

Przekaż sse: true podczas proxy przez oprogramowanie pośredniczące, które ma małe limity czasu bezczynności. Odpowiedzią jest zatem jedno zdarzenie SSE z pełnym kodem JSON [DONE].

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

data: [DONE]

Obraz do obrazu i odniesienie

Modele z image_caps.max_input_images > 0 zaakceptuj obrazy referencyjne. Przekaż adresy URL lub dane zakodowane w formacie 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"}
    ]
  }'

Edycja obrazów

Endpoint edycji zgodny z OpenAI. Wyślij obraz źródłowy jako plik multipart, tak jak robią to SDK OpenAI w images.edit, albo wyślij powyższe ciało JSON z input_images. Działa tą samą ścieżką co /v1/images/generations: te same modele, ceny i format odpowiedzi.

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)

Do 16 obrazów wejściowych na żądanie, po 25 MB; własny limit modelu to image_caps.max_input_images. Żądanie bez obrazu wejściowego jest odrzucane z kodem 400, zamiast stać się wywołaniem tekst-na-obraz. Każdy obraz wejściowy może podnieść cenę, jak podano na stronie modelu.


Parametry specyficzne dla modelu

Poza powyższymi wspólnymi parametrami, poszczególne rodziny modeli akceptują dodatki. Nieznane parametry są przesyłane do źródła w stanie niezmienionym, więc każde przyszłe pokrętło specyficzne dla dostawcy będzie działać również bez aktualizacji 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 i suno-v5.5 były historycznie akceptowane na tym endpoincie. Teraz należą do natywnego API muzycznego pod /v1/audio/music — wywołania tutaj są odrzucane z `wrong_endpoint`.


Odkrywanie możliwości

Każdy model obrazu eksponuje image_caps NA /v1/models aby klienci mogli sprawdzić dane wejściowe przed wysłaniem:

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

Cennik obrazów nie znajduje się w image_caps — koszt sprawdzaj w polach cenowych modelu na /v1/models.