Source: https://ailoot.ai/models/nb/recraft-recraft-v4/
Canonical: https://ailoot.ai/models/nb/recraft-recraft-v4/
Language: nb

# Recraft: Recraft V4

[Markdown](https://ailoot.ai/models/nb/recraft-recraft-v4/index.md) · [JSON](https://ailoot.ai/models/nb/recraft-recraft-v4/facts.json)

## [Recraft: Recraft V4](https://ailoot.ai/models/nb/recraft-recraft-v4/)

Recraft V4 genererer rasterbilder i 1K med vekt på komposisjon, fargeforhold og detaljert kreativ regi. Den dekker illustrasjon, fotorealistiske scener og grafiske designkonsepter, med valgfrie stilinndata og en egen bilde-til-bilde-arbeidsflyt.

- [**Ailoot Ultra · Bilder** `POST /v1/images/generations` `recraft/recraft-v4`](https://ailoot.ai/models/nb/recraft-recraft-v4/#method-0)

Om modellen

Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.

Recraft V4 er standardrastermodellen i Recrafts V4-generasjon. Produsenten fremhever designvurdering: balansert komposisjon, sammenhengende fargeforhold og detaljer som støtter den visuelle hensikten. Den kan arbeide med stilisert illustrasjon, fotografiske scener og grafiske designkonsepter. Bruk den når beskrivelsen krever et bilde som kombinerer estetiske valg med promptpresisjon, enten du utforsker en stemning fra en kort retning eller angir en bevisst layout i detalj.

Den spesifikke modellkoden er recraftv4. Produsentreferansen oppgir rasterutdata i 1K som tapsfri WebP eller PNG. Et kvadratisk bilde er 1024 × 1024 piksler, 16:9 er 1344 × 768 og 2:3 er 832 × 1280; andre støttede sideforhold bruker egne dimensjoner. V4 Pro er den separate rasterutgaven i 2K, mens V4 Vector og Pro Vector returnerer redigerbar SVG. Velg den nøyaktige V4-varianten for ønsket leveranse, fremfor å kombinere disse ulike utdataegenskapene.

Produsentens veiledning skiller mellom korte, fortolkbare prompter og strukturert kreativ regi. En kort frase kan gi rom for å utforske form, stemning og utsnitt. En strukturert beskrivelse kan navngi motiv, omgivelser, positur, materiale, sekundære elementer, lyssetting og visuelt hierarki. For en fortellende illustrasjon kan du beskrive en syklist som krysser en liten bro, dristige forenklede former, varme dempede farger og en tydelig bevegelse fra venstre til høyre. Disse innholds- og komposisjonsvalgene er mer anvendelige enn en lang liste over urelaterte stiladjektiver.

V4s spenn omfatter illustrasjon, bilder med dybde og fotorealistiske bilder. Veiledningen anbefaler å beskrive tegnelogikk for illustrasjon og materiale, lys, kamera og dybde for et 3D-lignende bilde. Det siste forblir et rasterbilde fremfor et redigerbart polygonnett. For et plakat- eller emballasjekonsept angir du hvilke ord som er primære, hvor de hører hjemme og hvordan bildet og typografien samspiller. Produsenten fremhever lesbar kort og middels lang tekst; undersøk den faktiske ordlyden og oppstillingen i det returnerte bildet før det brukes.

Generering støtter prompter på opptil 10 000 tegn, en tilfeldig seed, ett til seks resultater, foretrukne farger og ønsket bakgrunnsfarge. Valgfrie kompatible egendefinerte stiler og referansebilder kan styre det visuelle uttrykket gjennom flexible eller precise matching. Velg en ren referanse eller et sett som tilhører én visuell verden, og la deretter prompten beskrive det nye motivet og scenen. Fargesamsvar mellom referanse og resultat er ikke garantert, så hold den nødvendige paletten uttrykkelig og sammenlign resultatet med den. For generering med referansestil bruker du ett til ti PNG-, JPG- eller WebP-bilder, høyst 64 MB til sammen og under 20 MB hver. Hver referanse trenger en kortside på minst 256 piksler, en langside på høyst 4 096 piksler og en oppløsning på høyst 16 megapiksler. Bruk enten disse referansene eller en kompatibel lagret stil, fremfor begge deler.

Den dokumenterte bilde-til-bilde-operasjonen kombinerer et eksisterende bilde og en prompt, med styrke fra 0 til 1 som avgjør hvor langt de nye utdataene beveger seg fra kilden. Den godtar ikke V4-stilkontroller i denne operasjonen. Den nåværende genereringsreferansen utelukker også kuraterte stilnavn, negative\_prompt, text\_layout, artistic\_level og no\_text. Klargjør en positiv beskrivelse av ønsket resultat, og vurder bildet innenfor målkomposisjonen. Standardutgaven V4 gir en avgrenset rasterbasert designtolkning, med en bestemt utgave, et bestemt format og en bestemt utdatastørrelse. For bilde-til-bilde sender du inn PNG, JPG, WebP eller SVG under 20 MB, høyst 16 megapiksler, med begge sider mellom 256 og 4 096 piksler.

**Ailoot Ultra · Bilder** `POST /v1/images/generations` `recraft/recraft-v4`

[`recraft/recraft-v4`](https://ailoot.ai/models/nb/#m=recraft%2Frecraft-v4&route=Ultra&caller=recraft%2Frecraft-v4&fmt=images)

Recraft /`recraft/recraft-v4`

### Start

Recraft V4 genererer rasterbilder i 1K med vekt på komposisjon, fargeforhold og detaljert kreativ regi. Den dekker illustrasjon, fotorealistiske scener og grafiske designkonsepter, med valgfrie stilinndata og en egen bilde-til-bilde-arbeidsflyt.

Godkjente inndata

Tekst · Bilder

Resultater

Bilder

### Tilgjengelig i Ailoot · inndata & metoder

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

Inndatatyper

`text`, `image`

Utdatatyper

`image`

Utdataformat

Bildefil

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser recraft/recraft-v4 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
| Felt`n` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 Maksimum: 6 | Standard— |
| Felt`aspect_ratio` | Type`string` | KravValgfritt | Verdier & grenser 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standard— |
| Felt`input_references` | Type`array` | KravValgfritt | Verdier & grenser Minste antall elementer: 0 Maksimalt antall elementer: 1 | Standard— |

Kombinasjoner av inngående materialer

**Tekst til bilde** · Påkrevd: prompt

**reference\_guided\_image** · Påkrevd: prompt, actual image reference

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtalemodel, prompt |
| Parameter`material_types` | Avtaletext, image |
| Parameter`optional_controls` | Avtalen, aspect\_ratio, input\_references |
| Parameter`n` | Avtale{"minimum":1,"maximum":6} |
| Parameter`reference_images` | Avtale{"minimum":0,"maximum":1,"source":"Faktisk materiale levert av kunden"} |
| Parameter`provider_specific_options` | AvtaleBare den lagrede eksakte tillatelseslisten for endepunktets style/controls/text\_layout; ingen gjettede strukturer. |

Metodealiaser: `/v1/images`

Livssyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · faktisk returnert task\_id eller oppføring i mediebiblioteket

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

`GET /v1/media/assets`

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

Eksemplet som bare bruker en ledetekst, bevarer den offisielle ImageGenerationRequest-strukturen.

Behold hvert returnert bilde og hele svaret; utdatamengden er den faktiske mengden, ikke forespurt n.

### Priser

##### Slik beregnes det endelige beløpet

De viste satsene anslår kostnaden før generering. Det endelige beløpet beregnes ut fra kostnaden som er registrert for den opprinnelige genereringen. Målt varighet på utdataene og anslåtte mengder er ikke den endelige fakturerbare mengden.

Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.

Hurtigmodus

Ikke angitt Når hurtigmodus er valgt

Flex-modus

Ikke angitt Når flex-modus er valgt

Maksimal resonneringsinnsats

Ikke angitt Når justeringen «default» brukes for maksimal resonneringsinnsats

#### Estimerte satser for sammenligning

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Forventet mengde | Faktureringsenhet | Kostnad |
| --- | --- | --- | --- | --- |
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Forventet mengde— | Faktureringsenhet— | Kostnad Inndata · Inngående tokener · Estimat kun for sammenligning **—** / 1K tokener Utdata · Utgående tokener · Estimat kun for sammenligning **—** / 1K tokener Inndata · Lesing fra hurtigbuffer · Estimat kun for sammenligning **—** / 1K tokener Inndata · Skriving til hurtigbuffer · Estimat kun for sammenligning **—** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time · Estimat kun for sammenligning **—** / 1K tokener |
| KonfigurasjonUltra | Prisplan— | Forventet mengde— | Faktureringsenhetper utdatabilde | Kostnad Utdata · utdatabilde · Estimat kun for sammenligning **$0.08** per utdatabilde |
| KonfigurasjonAnslått genereringskostnad | Prisplan— | Forventet mengdeestimat for én generering | Faktureringsenhet— | Kostnad Utdata · Anslått genereringskostnad · Estimat kun for sammenligning **$0.08** estimat før generering Dette anslaget er verken en tilleggsavgift eller en fast sats for den fullførte genereringen. |

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

#### Detaljer om referansetariffen

Referanseprisplaner på modellnivå endrer ikke metodevalg, prisoverslag eller kostnader. Aktive kostnader bruker satsene til den valgte Ailoot-metoden.

Konfigurasjoner for bildeprising

#### Priser etter konfigurasjon

| Konfigurasjon | Faktureringsvilkår | Kostnad |
| --- | --- | --- |
| KonfigurasjonUtdatabilde | FaktureringsvilkårIngen prisvariant er deklarert. | Kostnad Utdata · Utdatabilde **$0.08** per bilde Tilsvarende oppføringer beskriver samme belastning; de legger ikke til enda en avgift. |

### Eksempelforespørsler

#### Ailoot Ultra · Bilder

curlPython SDKNode.js SDK

```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': 'recraft/recraft-v4', '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
```

```python
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")

request={'model': 'recraft/recraft-v4', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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])
```

```js
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": "recraft/recraft-v4", "prompt": "a red panda astronaut floating in space, studio lighting"};
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");
```

### Motta og lagre resultater

#### Ailoot Ultra · Bilder

Last ned hvert returnerte bilde eller lagre Base64-innholdet

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

##### Behold alle ferdige resultater

Lagre hvert ferdige bilde; hent hver returnerte URL eller dekod Base64-innholdet.

Behold hvert dataelement og alt forbruk; ta eierskap til og lagre alle faktiske returnerte bilder. Ingen oppdiktede adresser eller ID-er.

##### Hvis det opprinnelige svaret må kontrolleres

Hvis et resultat fra bildegenerering eller bilderedigering må kontrolleres, bevar opprinnelig operation\_id/X-Client-Request-ID og den returnerte resultatinformasjonen. Hent eksisterende resultater du eier via mediebiblioteket, ved hjelp av faktiske task\_id- eller asset\_id-verdier. Ikke send genererings-/redigeringsforespørselen på nytt, og ikke konstruer en URL for statusavlesning fra operation\_id.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`created` | Typeinteger |
| Felt`data[].url` | Typestring |
| Felt`data[].b64_json` | Typebase64 string |
| Felt`usage` | Typeobject |

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
| Svar`server_error` | VilkårDet returnerte svaret angir at operasjonen eller resultatet må kontrolleres | Neste trinnBevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt. |

### Aliaser

#### Modellaliaser

**Ailoot Ultra** [`recraft/recraft-v4`](https://ailoot.ai/models/nb/#m=recraft%2Frecraft-v4&route=Ultra&caller=recraft%2Frecraft-v4&fmt=images)

#### Aliaser for metodestier

`/v1/images`

#### Tilknyttede anroper-ID-er

[`recraft/recraft-v4`](https://ailoot.ai/models/nb/#m=recraft%2Frecraft-v4&route=Ultra&caller=recraft%2Frecraft-v4&fmt=images)

FAQ · Recraft: Recraft V4

Hvilke inndata og resultater er tilgjengelige?

`POST /v1/images/generations` · `recraft/recraft-v4`: `text`, `image` → `image`

Hvilke felt bruker forespørselen?

`POST /v1/images/generations` · `recraft/recraft-v4`: `model`, `prompt`, `n`, `aspect_ratio`, `input_references`

Hvilke grenser gjelder?

`POST /v1/images/generations` · `recraft/recraft-v4`: `n.minimum`: `1`; `n.maximum`: `6`

Koble Ailoot til Claude Code, OpenCode, Hermes eller egen applikasjon.

## Selskapet og dets prosjektportefølje

Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.

## Kjøp tokener med rabatt.

Abonnementsrabatt for jevnlig bruk. Kampanjekoder gir opptil 50% på tokenkjøp.

Abonnement

Velg et rabattabonnement for faste forespørsler.

Kampanjekode opptil 50%

Oppgi kode ved kjøp. Prisen beregnes på nytt etter gjeldende kampanje.

Kostnader i historikken

Modell, tokener og beløp lagres for hver forespørsel.

[Velg abonnement](https://ailoot.ai/docs/nb/billing/subscriptions/) · [Se modellpriser](https://ailoot.ai/models/nb/)

## Koble API-et til produktet du selger.

SaaS, apper og boter etter Ailoots offentlige tilbud og lisensavtale. Be om forhandlerlisens for videresalg.

Kommersiell applikasjon

Bygg tekst-, bilde-, video- og lydgenerering inn i betalte funksjoner i tjenesten.

Forhandlerlisens

Send prosjektbeskrivelse og tilgangsopplegg. Be om skriftlige vilkår for bruk og videresalg.

Dokumenter på nettstedet

Offentlig tilbud, lisensavtale og retningslinjer for databehandling er tilgjengelige før tilkobling.

[Be om forhandlerlisens](mailto:support@ailoot.ai) · [Offentlig tilbud og lisensavtale](https://ailoot.ai/legal/offer?lang=nb)

## Ailoot · Selskapet og dets prosjektportefølje





Ailoot bygger på etablert driftserfaring, en stor kundebase, stabil tjeneste og løpende KPI-kontroll.





Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.





Ailoot bruker denne driftserfaringen til API-tilgang til AI-funksjoner i kundenes produkter, agenter, applikasjoner og automatiseringer.
