Source: https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/
Canonical: https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/
Language: nl-be

# Google: Nano Banana (Gemini 2.5 Flash Image)

[Markdown](https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/index.md) · [JSON](https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/facts.json)

## [Google: Nano Banana (Gemini 2.5 Flash Image)](https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/)

Nano Banana (Gemini 2.5 Flash Image) genereert en bewerkt beelden op basis van tekst en afbeeldingen. Gebruik de gespreksworkflow om een scène samen te stellen, een geselecteerd element te wijzigen, visuele referenties te combineren of een productbeeld te verfijnen, met expliciete aanwijzingen over welke details behouden moeten blijven.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/#method-0)
- [**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations` `google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/#method-1)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/google-gemini-2-5-flash-image/#method-2)

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Gemini 2.5 Flash Image, ook bekend als Nano Banana, is Googles tekst-en-beeldmodel voor visuele creatie en beeldbewerking via gesprekken. Het accepteert een instructie met optionele beeldreferenties en kan afbeeldingen met begeleidende tekst teruggeven. Deze specifieke editie 2.5 Flash Image verschilt van Nano Banana 2, Nano Banana Pro en latere Lite-beeldmodellen. Het bruikbare resultaat is een gegenereerd of aangepast visueel bestand, geen antwoord van het algemene Gemini 2.5-tekstmodel.

De modelspecifieke kaart vermeldt 65.536 invoertokens en 32.768 uitvoertokens. Afbeeldingen en instructies maken deel uit van de invoer; de teruggegeven afbeelding of tekst maakt deel uit van het resultaat. De resolutietabel in de gids geeft onder meer 1:1-uitvoer op 1024×1024, 3:4 op 864×1184 en 16:9 op 1344×768 als ondersteunde beeldverhoudingen. Kies de beoogde weergavevorm voordat je de scène ontwerpt. De opties voor hoge resolutie van een latere Gemini-beeldeditie mogen niet worden behandeld als gedocumenteerde instellingen voor dit specifieke model.

Specificeer bij tekst-naar-beeldcreatie het onderwerp, de actie, omgeving, stijl, belichting en het standpunt. Een productillustratie kan een aangeleverde visuele identiteit gebruiken en om een duidelijk zichtbaar materiaaldetail in een passende omgeving vragen. Leg het doel van het beeld uit, zodat het model ruimte kan verdelen tussen het onderwerp en eventuele tekst. Fotografische beschrijvingen zoals een close-up, een compositie van bovenaf of een laag perspectief bepalen de kadrering duidelijker dan een lijst ongerelateerde stijlwoorden.

Lever voor bewerking de oorspronkelijke afbeelding aan en wijs het te wijzigen onderdeel aan. De gids van de maker beschrijft het toevoegen of verwijderen van elementen, semantische maskering, stijloverdracht en compositie met referenties. Een bruikbaar verzoek benoemt zowel de wijziging als de te behouden voorwaarden: verander bijvoorbeeld de achtergrond met behoud van de vorm, het oppervlak en het etiket van het product. Label bij het combineren van referenties de rol van elke invoer, zoals uiterlijk van het onderwerp, omgeving of stijl. Volgens de gids werkt deze editie het best met maximaal drie invoerafbeeldingen; dit is praktische begeleiding, geen reden om onbeperkt tegenstrijdige referenties te combineren.

Verfijning via een gesprek kan hetzelfde onderwerp behouden terwijl een specifieke visuele keuze verandert. Vraag om één samenhangende wijziging per keer en bewaar de bronafbeelding en het geaccepteerde resultaat dat voor die beurt is gebruikt. Beschrijf wat consistent moet blijven en wat mag variëren. Benoem bij een reeks beelden expliciet het gedeelde onderwerp, de kleuren en visuele regels, in plaats van aan te nemen dat een nieuwe losse prompt die terughaalt. Vergelijk het aangepaste beeld met de referentie voordat je een behoudsinstructie als succesvol uitgevoerd beschouwt.

Leg voor tekst in het beeld eerst de exacte formulering vast en vraag daarna om de afbeelding met die tekst, zoals de gids aanbeveelt. Geef de taal, leesvolgorde, plaatsing en relatieve nadruk van labels op. Een verzoek voor een infographic moet benoemen welk verband elk label uitlegt en welke visuele elementen dat ondersteunen. Controleer spelling, interpunctie en visuele koppeling op de werkelijke weergavegrootte; een ogenschijnlijk leesbaar gegenereerd label kan toch een naam, getal of bedoelde betekenis wijzigen.

De modelkaart vermeldt voor deze editie geen denken, search grounding, function calling, code-uitvoering of gestructureerde uitvoer met vaste beperkingen. Ze vermeldt evenmin audiogeneratie of de Live API. De gedocumenteerde invoer is tekst en afbeeldingen; functies voor audio-, video- en documentverwerking uit andere Gemini-modellen mogen daarom niet aan dit profiel worden gekoppeld. Een toepassing moet de teruggegeven inhoudsdelen expliciet verwerken, in plaats van aan te nemen dat een gewoon proza-antwoord het voltooide beeldbestand bevat.

De gids merkt op dat het gevraagde aantal afbeeldingen niet altijd wordt gevolgd en dat gegenereerde afbeeldingen een SynthID-markering bevatten. Controleer elk teruggegeven beeld op compositie, getrouwe weergave van het onderwerp, aantal objecten en exacte formulering. Beschrijf bij een scène met meerdere onderdelen hun beoogde opstelling in een duidelijke volgorde en formuleer het gewenste uiterlijk positief. Bewaar de exacte modelidentiteit, prompt en referenties samen met het resultaat. Zo wordt de visuele generatie- of bewerkingstaak controleerbaar en krijgt een latere wijziging een concreet uitgangspunt.

Praktische taak

### Praktische taak

Technisch voorbeeld in het Engels

```
Change a product photo background

Using the supplied product photograph, preserve the ceramic mug's shape, handle, glaze and existing logo exactly. Replace only the background with a pale stone tabletop and soft morning side light. Keep the camera angle and mug position. Remove unrelated background clutter and add no new lettering, props or decorative marks.
```

#### Verwacht resultaat

```
An edited image retaining the reference mug while changing its setting and light as requested.
```

#### Resultaat controleren

```
Compare the result with the reference for mug geometry, logo fidelity, camera angle and removal of clutter.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `google/gemini-2.5-flash-image`

[`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=chat)

Google /`google/gemini-2.5-flash-image`

### Aan de slag

Nano Banana (Gemini 2.5 Flash Image) genereert en bewerkt beelden op basis van tekst en afbeeldingen. Gebruik de gespreksworkflow om een scène samen te stellen, een geselecteerd element te wijzigen, visuele referenties te combineren of een productbeeld te verfijnen, met expliciete aanwijzingen over welke details behouden moeten blijven.

Toegestane invoer

Tekst

Resultaten

Tekst

### Beschikbaar in Ailoot · invoer en methoden

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Invoer

`text`

Uitvoer

`text`

Uitvoerformaat

json of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten google/gemini-2.5-flash-image | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten Voorbeelden: system, user, assistant, tool, function Voorwaarden: Deze rollen worden expliciet weergegeven door compatibiliteitstypen in de broncode; de exacte rollenverzameling van het model blijft modelspecifiek. Afhankelijk van het model | Standaard— |
| Veld`messages[].content` | Type`string\|content_part[]\|null` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].tool_calls` | Type`tool_call[]` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].tool_call_id` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: role=tool; gebruik het werkelijk teruggegeven ID | Standaard— |
| Veld`messages[].name` | Type`string` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`messages[].reasoning_content` | Type`string` | VereisteOptioneel | Waarden en limieten Geldt wanneer: Stuur de werkelijk teruggegeven redeneringen terug wanneer dit model ze gebruikt | Standaard— |
| Veld`messages[].reasoning_details` | Type`object\|array` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Afhankelijk van het model | Standaard— |
| Veld`max_completion_tokens` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Afhankelijk van het model | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |
| Veld`stream_options.include_usage` | Type`boolean` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`temperature` | Type`number` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`top_p` | Type`number` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`stop` | Type`string\|string[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`tools` | Type`function_tool[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`tools[].type` | Type`string` | VereisteOptioneel | Waarden en limieten function Afhankelijk van het model | Standaard— |
| Veld`tools[].function.name` | Type`string` | VereisteVereist | Waarden en limieten Geldt wanneer: functietool opgegeven | Standaard— |
| Veld`tools[].function.description` | Type`string` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`tools[].function.parameters` | Type`JSON_schema` | VereisteOptioneel | Waarden en limieten | Standaard— |
| Veld`tool_choice` | Type`string\|object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`parallel_tool_calls` | Type`boolean` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`response_format` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`reasoning_effort` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`reasoning` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`service_tier` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`instructions` | Type`string` | VereisteOptioneel | Waarden en limieten Compatibiliteitsveld | Standaard— |
| Veld`functions` | Type`function[]` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`function_call` | Type`string\|object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`prompt_cache_options` | Type`object` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`modalities` | Type`string[]` | VereisteOptioneel | Waarden en limieten text | Standaard— |
| Veld`provider` | Type`object` | VereisteOptioneel | Waarden en limieten Voorwaarden: provider.options wordt op deze Ultra-tekstroute geweigerd | Standaard— |
| Veld`cache_control.ttl` | Type`string` | VereisteOptioneel | Waarden en limieten Voorwaarden: 1h wordt op de daadwerkelijke locaties voor promptcaching geweigerd | Standaard— |

Combinaties van invoermaterialen

**Tekst** · UTF8-tekst

`messages[].content`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages |
| Parameter`material_types` | Contracttext |
| Parameter`messages` | Contractberichtenarray met de structuur role/content |
| Parameter`file_material` | Contractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid |
| Parameter`optional_controls` | Contractstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Contractmodelspecifiek; functietools van de gebruiker verschillen van gehoste tools |
| Parameter`output_modalities` | Contracttext |
| Parameter`hosted_operations` | Contractfalse |
| Parameter`multimodal_input_binding` | Contractnull |

Levenscyclus: `synchronous_or_streamed`

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Standaardtarief Wanneer de snelle modus geselecteerd is

Flex-modus

Standaardtarief Wanneer de flex-modus geselecteerd is

Maximale redeneerinspanning

Standaardtarief Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt

Tarieven voor expliciete caching

Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd

#### Ailoot-tarieven

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
| --- | --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.005** / 1K tokens Invoer · Cache lezen **$0.00006** / 1K tokens Invoer · Cache schrijven **$0.0001666666666666666** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens Uitvoer · Tokens voor afbeeldingsuitvoer **$0.06** / 1K afbeeldingstokens |
| ConfiguratieAanvraaglengte · niveau 1 | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.005** / 1K tokens Invoer · Cache lezen **$0.00006** / 1K tokens Invoer · Cache schrijven **$0.0001666666666666666** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

#### Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

google/gemini-2.5-flash-image

#### Prijzen per configuratie

| Configuratie | Factureringsvoorwaarden | Kosten |
| --- | --- | --- |
| Configuratiegoogle/gemini-2.5-flash-image · Standaardconfiguratie | FactureringsvoorwaardenStandaardconfiguratie | Kosten Invoer · Invoer **US$ 0,0006** / 1K tokens Uitvoer · Uitvoer **US$ 0,06** / 1K tokens |

Google: Nano Banana (Gemini 2.5 Flash Image)

#### Prijzen per configuratie

| Configuratie | Factureringsvoorwaarden | Kosten |
| --- | --- | --- |
| ConfiguratieGoogle: Nano Banana (Gemini 2.5 Flash Image) · Standaardconfiguratie | FactureringsvoorwaardenStandaardconfiguratie | Kosten Invoer · Invoertokens **US$ 0,0006** / 1K tokens Uitvoer · Uitvoertokens **US$ 0,005** / 1K tokens Invoer · Invoerafbeelding **US$ 0,0006** / 1K tokens Uitvoer · Uitvoerafbeelding **US$ 0,06** / 1K tokens Invoer · Audio-invoer **US$ 0,002** / 1K tokens Invoer · Lezen uit audiocache **US$ 0,0002** / 1K tokens Uitvoer · Zoeken op het web **US$ 0,028** per zoekopdracht Uitvoer · Redeneertokens **US$ 0,005** / 1K tokens Invoer · Cache lezen **US$ 0,00006** / 1K tokens Invoer · Schrijven naar cache · 5 minuten **≈US$ 0,000167** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · OpenAI Chat

curlPython SDKPython-stream

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-2.5-flash-image", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='google/gemini-2.5-flash-image',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='google/gemini-2.5-flash-image',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · OpenAI Chat

json of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

| Veld | Type |
| --- | --- |
| Veld`choices[].index` | Typeinteger |
| Veld`choices[].message.content` | Typestring\|null |
| Veld`choices[].message.tool_calls` | Typetool\_call\[\] |
| Veld`choices[].message.reasoning_content` | Typestring |
| Veld`choices[].message.reasoning_details` | Typeobject\|array |
| Veld`choices[].finish_reason` | Typestring\|null |
| Veld`usage` | Typeobject |

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=chat)

#### Aliasnamen voor methodepaden

`/v1/images`

#### Gerelateerde aanroeper-ID’s

[`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=chat)

**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations` `google/gemini-2.5-flash-image`

[`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=images)

Google /`google/gemini-2.5-flash-image`

### Aan de slag

Nano Banana (Gemini 2.5 Flash Image) genereert en bewerkt beelden op basis van tekst en afbeeldingen. Gebruik de gespreksworkflow om een scène samen te stellen, een geselecteerd element te wijzigen, visuele referenties te combineren of een productbeeld te verfijnen, met expliciete aanwijzingen over welke details behouden moeten blijven.

Toegestane invoer

Tekst · Afbeeldingen

Resultaten

Afbeeldingen

### Beschikbaar in Ailoot · invoer en methoden

**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations`

Invoer

`text`, `image`

Uitvoer

`image`

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten google/gemini-2.5-flash-image | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
| Veld`aspect_ratio` | Type`string` | VereisteOptioneel | Waarden en limieten 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | Standaard— |
| Veld`n` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Maximum: 1 | Standaard— |
| Veld`input_references` | Type`array` | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 3 | Standaard— |
| Veld`provider` | Type`object` | VereisteOptioneel | Waarden en limieten | Standaard— |

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, prompt |
| Parameter`material_types` | Contracttext, image |

Levenscyclus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · daadwerkelijk teruggegeven task\_id of record in de mediabibliotheek

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Tarieven

##### Zo worden de uiteindelijke kosten berekend

De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Niet opgegeven Wanneer de snelle modus geselecteerd is

Flex-modus

Niet opgegeven Wanneer de flex-modus geselecteerd is

Maximale redeneerinspanning

Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt

#### Geschatte tarieven ter vergelijking

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Verwachte hoeveelheid | Kosten |
| --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Verwachte hoeveelheid— | Kosten Invoer · Invoertokens · Schatting uitsluitend ter vergelijking **—** / 1K tokens Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking **—** / 1K tokens Invoer · Cache lezen · Schatting uitsluitend ter vergelijking **—** / 1K tokens Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking **—** / 1K tokens Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking **—** / 1K tokens |
| ConfiguratieGeschatte generatiekosten | Tariefstaffel— | Verwachte hoeveelheidschatting voor één generatie | Kosten Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking **$0.24576** schatting vóór generatie Deze raming is geen extra kost of vast tarief voor de voltooide generatie. |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Afbeeldingen

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'google/gemini-2.5-flash-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · Afbeeldingen

Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Lezen van andere inhoud

Bestaande eigen bestanden ophalen

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
```

##### Alle voltooide resultaten bewaren

Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.

Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar de teruggegeven X-Client-Request-ID voor de reconciliatie. Lees uitsluitend daadwerkelijk teruggegeven task\_id/asset\_id-waarden of de eigen mediabibliotheek uit; bouw nooit een taak-URL op basis van de bewerkings-ID en dien de aanmaakaanvraag nooit opnieuw in.

Antwoordvelden

| Veld | Type |
| --- | --- |
| Veld`created` | Type |
| Veld`data[].url` | Type |
| Veld`data[].b64_json` | Type |
| Veld`usage` | Type |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=images)

#### Aliasnamen voor methodepaden

`/v1/images`

#### Gerelateerde aanroeper-ID’s

[`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=images)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `google/gemini-2.5-flash-image`

[`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=messages)

Google /`google/gemini-2.5-flash-image`

### Aan de slag

Nano Banana (Gemini 2.5 Flash Image) genereert en bewerkt beelden op basis van tekst en afbeeldingen. Gebruik de gespreksworkflow om een scène samen te stellen, een geselecteerd element te wijzigen, visuele referenties te combineren of een productbeeld te verfijnen, met expliciete aanwijzingen over welke details behouden moeten blijven.

Toegestane invoer

Tekst

Resultaten

json · sse

### Beschikbaar in Ailoot · invoer en methoden

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Invoer

`text`

Uitvoer

`json`, `sse`

Uitvoerformaat

JSON of SSE

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten google/gemini-2.5-flash-image | Standaard— |
| Veld`messages` | Type`message[]` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`messages[].role` | Type`string` | VereisteVereist | Waarden en limieten user, assistant | Standaard— |
| Veld`messages[].content` | Type`string` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`max_tokens` | Type`integer` | VereisteVereist | Waarden en limieten | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |

Combinaties van invoermaterialen

**Tekst** · UTF-8-tekst

`messages[].content als tekenreeks`

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, messages, max\_tokens |
| Parameter`optional_controls` | Contractstream |
| Parameter`material_types` | Contracttext |
| Parameter`text_file_material` | ContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht. |

Levenscyclus: `synchronous_or_streamed`

### Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus

Standaardtarief Wanneer de snelle modus geselecteerd is

Flex-modus

Standaardtarief Wanneer de flex-modus geselecteerd is

Maximale redeneerinspanning

Standaardtarief Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt

Tarieven voor expliciete caching

Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd

#### Ailoot-tarieven

#### Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
| --- | --- | --- | --- | --- |
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.005** / 1K tokens Invoer · Cache lezen **$0.00006** / 1K tokens Invoer · Cache schrijven **$0.0001666666666666666** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens Uitvoer · Tokens voor afbeeldingsuitvoer **$0.06** / 1K afbeeldingstokens |
| ConfiguratieAanvraaglengte · niveau 1 | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens **$0.0006** / 1K tokens Uitvoer · Uitvoertokens **$0.005** / 1K tokens Invoer · Cache lezen **$0.00006** / 1K tokens Invoer · Cache schrijven **$0.0001666666666666666** / 1K tokens Invoer · Cache schrijven, 1 uur **—** / 1K tokens |

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. [Zo werken reservering en afrekening →](https://ailoot.ai/docs/nl-be/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op

```json
{
  "model": "google/gemini-2.5-flash-image",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-flash-image', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'google/gemini-2.5-flash-image', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Resultaten ophalen en opslaan

#### Ailoot Ultra · Anthropic Messages

JSON of SSE

##### Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden

| Veld | Type |
| --- | --- |
| Veld`id` | Typestring |
| Veld`model` | Typestring |
| Veld`content[]` | Typetext\|thinking\|tool\_use\|other content block |
| Veld`stop_reason` | Typestring\|null |
| Veld`usage` | Typeobject |

Fouten en vervolgstappen

| Antwoord | Voorwaarde | Volgende stap |
| --- | --- | --- |
| Antwoord400 · `invalid_request_error` | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |

### Aliasnamen

#### Modelaliasnamen

**Ailoot Ultra** [`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=messages)

#### Aliasnamen voor methodepaden

`/v1/images`

#### Gerelateerde aanroeper-ID’s

[`google/gemini-2.5-flash-image`](https://ailoot.ai/models/nl-be/#m=google%2Fgemini-2.5-flash-image&route=Ultra&caller=google%2Fgemini-2.5-flash-image&fmt=messages)

FAQ · Google: Nano Banana (Gemini 2.5 Flash Image)

Welke invoer en resultaten zijn beschikbaar?

`POST /v1/chat/completions` · `google/gemini-2.5-flash-image`: `text` → `text` `POST /v1/images/generations` · `google/gemini-2.5-flash-image`: `text`, `image` → `image` `POST /v1/messages` · `google/gemini-2.5-flash-image`: `text` → `json`, `sse`

Welke velden gebruikt het verzoek?

`POST /v1/chat/completions` · `google/gemini-2.5-flash-image`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/images/generations` · `google/gemini-2.5-flash-image`: `model`, `prompt`, `aspect_ratio`, `n`, `input_references`, `provider` `POST /v1/messages` · `google/gemini-2.5-flash-image`: `model`, `messages`, `max_tokens`, `stream`

Welke limieten gelden?

`POST /v1/chat/completions` · `google/gemini-2.5-flash-image`: `messages.min_items`: `1` `POST /v1/images/generations` · `google/gemini-2.5-flash-image`: `n.minimum`: `1`; `n.maximum`: `1`

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

## Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

## Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement

Kies een abonnement met korting voor je terugkerende verzoeken.

Promotiecode tot 50%

Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.

Kosten in de geschiedenis

Model, tokens en bedrag worden per verzoek bewaard.

[Kies een abonnement](https://ailoot.ai/docs/nl-be/billing/subscriptions/) · [Bekijk modelprijzen](https://ailoot.ai/models/nl-be/)

## Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie

Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.

Resellerlicentie

Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.

Documenten op de site

Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

[Vraag een resellerlicentie aan](mailto:support@ailoot.ai) · [Aanbodvoorwaarden en licentieovereenkomst](https://ailoot.ai/legal/offer?lang=nl-be)

## Ailoot · Het bedrijf en zijn projectenportefeuille





Ailoot bouwt op opgebouwde operationele ervaring, een groot klantenbestand, een stabiele dienst en doorlopende KPI-controle.





Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.





Ailoot gebruikt die operationele ervaring voor API-toegang tot AI-functies in klantproducten, agents, applicaties en automatiseringen.
