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.
https://api.airforce/v1/images/generationsModele obrazu
…· liveWspólne parametry
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | Required | Image model ID. Find them on /v1/models: image models carry media_type: "image" and an image_caps block. |
| prompt | string | Required | Image description. |
| n | integer | Optional | Number of variations to generate per request. Capped by the model's image_caps.max_n. |
| size | string | Optional | OpenAI-style WxH, e.g. "1024x1024". Provider-specific values pass through. |
| aspect_ratio | string | Optional | Alternative to size. "16:9", "1:1", "9:16", … Validated against image_caps.aspect_ratios. |
| quality | string | Optional | "standard" | "hd" (OpenAI) or model-specific labels. Validated. |
| response_format | string | Optional | "url" (default) or "b64_json". |
| seed | integer | Optional | Reproducibility seed. Same prompt + same seed = same image (where the upstream supports it). |
| input_images | array | Optional | [{ url? } | { b64_json? }] for image-to-image / reference / first-frame. |
| sse | boolean | Optional | When 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| created | integer | Optional | Unix timestamp. |
| data | array | Optional | Generated assets. |
| data[].url | string | Optional | Image 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_json | string | Optional | Base64-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.
https://api.airforce/v1/images/edits| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | Required | An image model with image_caps.max_input_images > 0 (see Discovering capabilities below). |
| prompt | string | Required | What to change or create from the input image(s). |
| image | file | Required | The source image. Repeat as image[] for several references; images, images[] and input_images are accepted too, as files or as image URLs. |
| mask | file | Optional | Forwarded as is, but no listed model declares mask support, so the serving model may ignore it. |
| n | integer | Optional | Number of images to generate. |
| size | string | Optional | Output size, e.g. "1024x1024", where the model supports it. |
| aspect_ratio | string | Optional | Output aspect ratio, e.g. "16:9", where the model supports it. |
| quality | string | Optional | Model-specific quality level. |
| response_format | string | Optional | "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
| Parameter | Type | Required | Description |
|---|---|---|---|
| aspect_ratio | string | Optional | "1:1", "16:9", "9:16", "4:3". |
| resolution | string | Optional | "512", "1024", "2048". |
| image_urls | array | Optional | Reference 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
| image_caps.max_n | integer | Optional | Maximum n per request. |
| image_caps.aspect_ratios | array | Optional | Allowed aspect_ratio values. |
| image_caps.qualities | array | Optional | Allowed quality values. |
| image_caps.max_input_images | integer | Optional | 0 = text-only model. Higher = supports reference images. |
| image_caps.supports_url_input | boolean | Optional | Whether input_images may be passed as URLs (vs base64). |
| image_caps.supports_seed | boolean | Optional | Whether 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.