modellen

grok-imagine-image

Markdown · JSON

grok-imagine-image

Grok Imagine Image maakt afbeeldingen uit een tekstbeschrijving, met een keuze van beeldformaat en resolutie van 1K of 2K. Geschikt voor vierkante, verticale en breedbeeldvisuals.

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.

Grok Imagine Image is een model van xAI voor visuele generatie. Het zet een tekstuele scènebeschrijving om in een afbeelding. Het model zelf heeft ook visuele invoer om met een bronafbeelding te werken; bij de gepubliceerde Ailoot-generatiemethode is de invoer een tekstverzoek.

Varianten van één idee

Eén verzoek kan met de parameter n 1 tot 10 afbeeldingen opgeven. Als geen aantal is ingesteld, wordt één afbeelding gemaakt. Dit is handig wanneer meerdere varianten van één beschrijving nodig zijn; afzonderlijke scènes worden met aparte beschrijvingen opgegeven.

Beeldformaat en resolutie

Er kan worden gekozen voor vierkant 1:1, horizontaal 16:9, verticaal 9:16, de formaten 4:3 en 3:4 en de fotografische verhoudingen 3:2 en 2:3. auto laat het model de verhoudingen uit de beschrijving kiezen en wordt standaard gebruikt.

Voor generatie zijn 1K en 2K voorzien; zonder expliciete keuze wordt 1K gebruikt. Resolutie en beeldverhouding worden afzonderlijk ingesteld: de eerste bepaalt de afbeeldinggrootte, de tweede de beeldvorm.

Werken met visueel materiaal

In de visuele xAI-modus wordt de bronafbeelding aangevuld met een tekstinstructie die de verandering van scène-inhoud of uiterlijk bepaalt. Het resultaat van één bewerking kan voor de volgende worden gebruikt om details stapsgewijs te verfijnen. Deze modus van het model zelf verschilt van de gepubliceerde generatie uit tekst.

Het model geeft een afbeelding terug; het resultaat kan als bestand via een link of als afbeeldingsgegevens in base64 worden geleverd. quality kiezen uit low, medium en auto hoort bij Image 2.0 en geldt niet voor Grok Imagine Image.

Ailoot · Afbeeldingen POST /v1/images/generations grok-imagine-image

grok-imagine-image

xAI /grok-imagine-image

Aan de slag

Grok Imagine Image maakt afbeeldingen uit een tekstbeschrijving, met een keuze van beeldformaat en resolutie van 1K of 2K. Geschikt voor vierkante, verticale en breedbeeldvisuals.

Toegestane invoer
Tekst
Resultaten
Afbeeldingen

Beschikbaar in Ailoot · invoer en methoden

Ailoot · Afbeeldingen POST /v1/images/generations
Invoertypen
text
Uitvoertypen
image
Uitvoerformaat
Afbeeldingsbestand
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
grok-imagine-image
Standaard—
VeldpromptTypestringVereisteVereistWaarden en limietenStandaard—
VeldnTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Maximum: 10
Standaard1
Veldresponse_formatTypestringVereisteOptioneelWaarden en limieten
url, b64_json
Standaardurl
VeldresolutionTypestringVereisteOptioneelWaarden en limieten
1k, 2k
Standaard1k
Veldaspect_ratioTypestringVereisteOptioneelWaarden en limieten
auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9, 5:2
Standaardauto
VeldqualityTypestringVereisteNiet ondersteundWaarden en limietenStandaard—
Combinaties van invoermaterialen

Tekst naar afbeelding · Vereist: prompt

Methodeparameters en levenscyclus
ParameterContract
Parametermaterial_typesContracttext
ParameterrequiredContractmodel, prompt
Parameteroptional_controlsContractnull
Parametercontent_typeContractapplication/json

Levenscyclus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.

Tarieven

Ailoot-methodetarieven

Ailoot AfbeeldingenPOST /v1/images/generations
Invoer
US$ 0,002 per invoerafbeelding
Uitvoer
US$ 0,02 per 1K-afbeelding
Uitvoer
US$ 0,02 per 2K-afbeelding

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 →

Voorbeeldverzoeken

Ailoot · Afbeeldingen

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "grok-imagine-image", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
from openai import OpenAI
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")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'grok-imagine-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "grok-imagine-image", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

Resultaten ophalen en opslaan

Ailoot · 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}
Alle voltooide resultaten bewaren

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

Sla elk data-item op. Decodeer elke b64_json of haal elk bestand op via elke geretourneerde ondertekende URL. Kies een bestandsextensie op basis van de daadwerkelijke MIME/bytes.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Als het resultaat van een afbeeldingsgeneratie of -bewerking moet worden gecontroleerd, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task_id- of asset_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation_id.

Antwoordvelden
VeldType
VeldcreatedTypeinteger
Velddata[].urlTypestring
Velddata[].b64_jsonTypebase64 string
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.
Antwoordserver_errorVoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerdVolgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.

Aliasnamen

Modelaliasnamen

Ailoot grok-imagine-image

Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

Gerelateerde aanroeper-ID’s

grok-imagine-image

FAQ · grok-imagine-image
Welke invoer en resultaten zijn beschikbaar?

POST /v1/images/generations · grok-imagine-image: text → image

Welke velden gebruikt het verzoek?

POST /v1/images/generations · grok-imagine-image: model, prompt, n, response_format, resolution, aspect_ratio

Welke limieten gelden?

POST /v1/images/generations · grok-imagine-image: n.minimum: 1; n.maximum: 10

Meer details

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 · Bekijk modelprijzen

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 · Aanbodvoorwaarden en licentieovereenkomst