Is dit de Gemini-image API van Google?
Nee. Als je hier kwam zoeken naar een Gemini-image endpoint, is het eerste wat je moet ophelderen wie wat draait. Gemini is de modelfamilie van Google, en Google biedt image generatie aan via eigen developer producten. Wat die producten ook kunnen doen, je bereikt ze via Google, met Google-accounts, sleutels en voorwaarden.
Deze site is iets anders. Het is een gehoste tekst-API waarbij één open-weight model, beheerd door een onafhankelijke provider, is afgestemd om te antwoorden zonder inhoudelijke weigeringen voor legaal gebruik door volwassenen. Het is geen doorverkoper van Gemini, het routeert geen verzoeken naar Google en het draagt geen goedkeuring van Google of een andere modelleverancier. De domeinnaam vermeldt image generation omdat veel bezoekers zoeken naar hulp bij prompts, niet omdat er hier afbeeldingen worden gegenereerd.
Wat je echt krijgt
Het bereik is bewust klein, wat het in enkele minuten makkelijk maakt te evalueren.
- Protocol: OpenAI-compatible. Elke OpenAI SDK of client werkt na het wijzigen van twee dingen: de base URL en de sleutel.
- Base URL:
https://api.imagegenapi.com/v1 - Model ID:
uncensored - Methoden:
POST /v1/chat/completionsenGET /v1/models - Features: streaming over SSE, tool calling, JSON-modus, en pass-through sampling parameters (
temperature,top_p,stop,seed, penalties). - Context: 100.000 tokens, prompt plus completion.
Niet inbegrepen: image generation, image input, audio, video, embeddings en fine-tuning. Als een feature niet op de bovenstaande lijst staat, neem dan aan dat deze afwezig is. De docs-pagina bevat het verzoekformaat en de foutcodes.
Derden versus officieel: hoe het te onderscheiden
De verwarring is over de hele markt gebruikelijk, dus een snelle checklist helpt telkens als je een API tegenkomt waarvan de naam lijkt op die van een grote leverancier.
- Kijk naar het domein en de voorwaarden. Een officiële API leeft onder het domein en de voorwaarden van de leverancier zelf. Een service van derden zegt dit, of noemt ten minste zijn eigen operator.
- Controleer de modellijst. Hier retourneert
GET /v1/modelshet ene model,uncensored. Een router zou veel modelnamen van verschillende vendors tonen. - Lees wat er wordt beloofd. Claims zoals "het echte spul, maar goedkoper" verdienen wantrouwen. Een betrouwbare service vertelt je welke features ontbreken.
- Test het. Stuur een paar verzoeken met het gratis proeftegoed voordat je een workload verplaatst.
Op deze site zijn de antwoorden duidelijk: onafhankelijke aanbieder, één open-weight model, alleen tekst. Beschouw elke andere interpretatie als een fout. Je kunt de identiteit van het model verifiëren door het gedrag, maar je kunt niet verwachten dat het zich uitgeeft als een product van een specifieke vendor.
Een verstandige manier om tekst en image tools te combineren
Image models worden aangestuurd door prompts, en het schrijven van goede prompts is vooral een teksttaak. Een veelvoorkomende workflow bestaat daarom uit twee stappen: vraag een language model om een gedetailleerde prompt te genereren, en plak of pipe die prompt vervolgens naar de image service die je hebt gekozen, van Google of een andere leverancier. Het text model hier behandelt stap één.
from openai import OpenAI
client = OpenAI(base_url="https://api.imagegenapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
temperature=0.7,
messages=[
{"role": "system", "content": "Turn a short idea into a detailed prompt for a text-to-image model. Include subject, setting, lighting, color palette and mood. One paragraph."},
{"role": "user", "content": "A smuggler's market inside a hollowed-out whale skeleton, neon lanterns."},
],
)
print(resp.choices[0].message.content)
Voor een pipeline vraag je om JSON, zodat de volgende fase velden kan lezen. Hier is het in Node met de officiële openai package:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.imagegenapi.com/v1",
apiKey: process.env.API_KEY,
});
const res = await client.chat.completions.create({
model: "uncensored",
response_format: { type: "json_object" },
messages: [
{ role: "user", content: "Return JSON with keys prompt and style for: a whale-skeleton night market." },
],
});
const out = JSON.parse(res.choices[0].message.content);
console.log(out.prompt);
Een paar opmerkingen bij die snippets. De system message doet het zware werk, dus besteed daar je tijd aan. De API key hoort in een environment variable, nooit in source control. En als de call faalt met een 429, wacht dan en probeer het opnieuw in plaats van in een strakke loop op volle snelheid te draaien, omdat een strakke loop je per-minute allowance sneller opmaakt. Dezelfde code draait ongewijzigd tegen andere OpenAI-compatible hosts, wat het punt is van het gedeelde protocol: je kunt van provider wisselen door de base URL en de modelnaam aan te passen.
Onthoud dat een focus op legaal gebruik door volwassenen van toepassing is op de content die je opvraagt. Fictie, roleplay en companion apps zijn het gebruikelijke gebruik, en seksuele content met minderjarigen wordt zonder uitzondering geblokkeerd.
Prompts schrijven die passen bij een image model
De meeste waarde in de tekststap komt van de instructies die je geeft, niet van het model alleen. Een paar gewoontes maken de output veel bruikbaarder.
Geef het model een vast recept
Geef de volgorde van de onderdelen die je wilt: eerst het onderwerp, dan de setting, dan het licht, dan het palet, dan de stijl. Image models wegen vroege woorden zwaarder, dus een stabiele volgorde zorgt voor vergelijkbare resultaten tussen runs. Voeg een woordlimiet toe, omdat zeer lange prompts het hoofdonderwerp vaak verwateren in plaats van verbeteren.
Zeg wat je wilt uitsluiten
Sommige image tools gebruiken een aparte negative prompt, andere negeren deze. Vraag het text model om de twee delen als aparte JSON velden terug te geven, en laat het tweede deel weg als je tool er geen gebruik van maakt. Dit is eenvoudiger dan een lange alinea handmatig bewerken.
Itereer in hetzelfde gesprek
Houd eerdere messages in de messages lijst en vraag om aanpassingen: warmer licht, een breder shot, minder personages. Het contextvenster is 100.000 tokens, dus zelfs een lange editsessie past erin. Verlaag temperature als je kleine aanpassingen wilt en verhoog het als je nieuwe ideeën wilt.
Test een paar seeds
Als je dezelfde seed doorgeeft met dezelfde messages en instellingen, blijft de output van run tot run vergelijkbaar. Verander maar één ding tegelijk, zoals de system message, en je kunt zien welke wijziging het resultaat verbeterde. Die discipline bespaart meer geld dan elke prijsklasse, want minder verspilte image generation is de echte kostenbesparing.
Kosten van de tekststap
De prijs is $0,15 per 1M input tokens en $0,50 per 1M output tokens, van prepaid credit, zonder abonnement. Geweigerde of mislukte requests worden niet in rekening gebracht. Neem een batch van 1.000 prompt-writing calls, elk met 400 input tokens en 250 output tokens.
- Input per call: 400 / 1.000.000 x $0,15 = $0,00006.
- Output per call: 250 / 1.000.000 x $0,50 = $0,000125.
- Per call: $0,000185.
- Per 1.000 calls: $0,185.
Dat is 18,5 cent voor de batch. Vergelijk het met de prijs per afbeelding van je image provider, die je op hun prijspagina moet opzoeken, en je zult meestal zien dat de prompt-writing stap de goedkopere is.
Aan de slag met credit
Nieuwe gebruikers kunnen $0,50 aan gratis proeftegoed claimen met één klik op de API-sleutelpagina na het inloggen met Google of met e-mail en wachtwoord. Het vereist geen betaling en duurt 7 dagen. Daarna kun je opwaarderen met elk geheel bedrag van $20 tot $500 in crypto (USDT op TRC20 of USDC op Base). Bonussen zijn +5% vanaf $50, +10% vanaf $100 en +15% vanaf $200, en credit verloopt nooit. Zie prijzen voor het volledige plaatje.
Limieten om rekening mee te houden
Een volledige key staat 8 gelijktijdige requests toe en 300 requests per minuut. Een trial key staat 2 gelijktijdige en 60 per minuut toe. Het overschrijden van de eerste geeft HTTP 429 met code rate_limited, het overschrijden van de tweede geeft 429 met code concurrency, en tijdelijke overbelasting geeft 429 met een Retry-After: 5 header. Een gestreamd request houdt zijn slot vast tot de stream klaar is, dus sluit streams die je niet meer nodig hebt.
Response headers omvatten X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests en X-RateLimit-Limit-Concurrency. Log de request ID bij elke fout, omdat dit de snelste manier is om hulp te krijgen van support. De maximale body grootte is 8 MB.
Als je een native Gemini-afbeeldingsaanroep nodig hebt, ga dan naar Google en lees hun huidige documentatie. Als je een ongecensureerd tekstmodel nodig hebt dat het OpenAI-protocol spreekt, om prompts, verhalen of personagedialogen te schrijven voor legaal gebruik door volwassenen, dan is dit daarvoor gebouwd.
