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

# Recraft: Recraft V4

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

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

Recraft V4 genererer rasterbilleder i 1K med fokus på komposition, farverelationer og detaljeret kreativ retning. Den dækker illustration, fotorealistiske scener og grafiske designkoncepter med valgfrie stilinput og en separat billede-til-billede-arbejdsgang.

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

Om modellen

Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.

Recraft V4 er standardmodellen til rasterbilleder i Recrafts V4-generation. Producenten fremhæver designmæssig dømmekraft: afbalanceret komposition, sammenhængende farverelationer og detaljer, der understøtter den visuelle hensigt. Den kan arbejde med stiliseret illustration, fotografiske scener og grafiske designkoncepter. Brug den, når beskrivelsen kræver et billede, der kombinerer æstetiske valg med promptnøjagtighed, uanset om du udforsker en stemning ud fra en kort anvisning eller specificerer et bevidst layout i detaljer.

Den konkrete modelkode er recraftv4. Producentens reference angiver rasteroutput i 1K som tabsfri WebP eller PNG. Et kvadratisk billede er 1024 × 1024 pixels, 16:9 er 1344 × 768, og 2:3 er 832 × 1280; andre understøttede billedformater bruger deres egne dimensioner. V4 Pro er den separate rasterudgave i 2K, mens V4 Vector og Pro Vector returnerer redigerbar SVG. Vælg den præcise V4-variant til den ønskede leverance frem for at kombinere disse forskellige outputegenskaber.

Producentens vejledning skelner mellem korte fortolkende prompts og struktureret kreativ retning. En kort formulering kan levne plads til at udforske form, stemning og indramning. En struktureret beskrivelse kan navngive motiv, miljø, positur, materiale, sekundære elementer, belysning og visuelt hierarki. Til en fortællende illustration kan du beskrive en cyklist, der krydser en lille bro, markante forenklede former, varme afdæmpede farver og en tydelig bevægelse fra venstre mod højre. Disse valg af indhold og komposition er mere handlingsrettede end en lang liste af uvedkommende stiladjektiver.

V4's spænd omfatter illustration, rumlige billeder og fotorealistiske visualiseringer. Vejledningen anbefaler at beskrive tegnelogik til illustration og materiale, lys, kamera og dybde til et billede med 3D-udtryk. Sidstnævnte forbliver et rasterbillede frem for en redigerbar mesh. Til et plakat- eller emballagekoncept skal du angive, hvilke ord der er vigtigst, hvor de hører til, og hvordan billede og typografi spiller sammen. Producenten fremhæver læsbar kort og mellemlang tekst; undersøg den faktiske ordlyd og opstilling i det returnerede billede, før det bruges.

Generering understøtter prompts på op til 10.000 tegn, et tilfældigt seed, ét til seks output, foretrukne farver og en ønsket baggrundsfarve. Valgfrie kompatible brugerdefinerede stilarter og referencebilleder kan styre den visuelle behandling gennem fleksibel eller præcis matchning. Vælg en ren reference eller et sæt, der hører til samme visuelle verden, og lad derefter prompten beskrive det nye motiv og scenen. Farvematch fra reference til output er ikke garanteret, så hold den nødvendige palet udtrykkelig, og sammenlign resultatet med den. Ved generering med referencestil skal du bruge ét til ti PNG-, JPG- eller WebP-billeder, højst 64 MB i alt og under 20 MB hver. Hver reference skal have en korteste side på mindst 256 pixels, en længste side på højst 4.096 pixels og en opløsning på højst 16 megapixels. Brug enten disse referencer eller en kompatibel gemt stil frem for begge dele.

Den dokumenterede billede-til-billede-operation kombinerer et eksisterende billede og en prompt med en styrke fra 0 til 1, der bestemmer, hvor langt det nye output bevæger sig fra kilden. Den accepterer ikke V4-stilkontroller i denne operation. Den aktuelle genereringsreference udelukker også kuraterede stilnavne, negative\_prompt, text\_layout, artistic\_level og no\_text. Forbered en positiv beskrivelse af det ønskede resultat, og vurdér materialet i dets målkomposition. Standardudgaven V4 leverer en fokuseret rasterfortolkning af designet med en bestemt udgave, et format og en outputstørrelse. Til billede-til-billede skal du medsende PNG, JPG, WebP eller SVG under 20 MB, højst 16 megapixels og med begge sider mellem 256 og 4.096 pixels.

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

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

Recraft /`recraft/recraft-v4`

### Start

Recraft V4 genererer rasterbilleder i 1K med fokus på komposition, farverelationer og detaljeret kreativ retning. Den dækker illustration, fotorealistiske scener og grafiske designkoncepter med valgfrie stilinput og en separat billede-til-billede-arbejdsgang.

Accepterede input

Tekst · Billeder

Resultater

Billeder

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`, `image`

Outputtyper

`image`

Outputformat

Billedfil

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser recraft/recraft-v4 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
| Felt`n` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Maksimum: 6 | Standard— |
| Felt`aspect_ratio` | Type`string` | KravValgfrit | Værdier og grænser 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standard— |
| Felt`input_references` | Type`array` | KravValgfrit | Værdier og grænser Minimumsantal elementer: 0 Maksimalt antal elementer: 1 | Standard— |

Kombinationer af inputmaterialer

**Tekst til billede** · Påkrævet: prompt

**reference\_guided\_image** · Påkrævet: prompt, actual image reference

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, prompt |
| Parameter`material_types` | Kontrakttext, image |
| Parameter`optional_controls` | Kontraktn, aspect\_ratio, input\_references |
| Parameter`n` | Kontrakt{"minimum":1,"maximum":6} |
| Parameter`reference_images` | Kontrakt{"minimum":0,"maximum":1,"source":"faktisk materiale leveret af kunden"} |
| Parameter`provider_specific_options` | KontraktKun den gemte præcise tilladelsesliste for endpointets style/controls/text\_layout; ingen gættede strukturer. |

Metodealiaser: `/v1/images`

Livscyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · det faktisk returnerede task\_id eller posten i mediebiblioteket

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

`GET /v1/media/assets`

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

Eksemplet med kun en prompt bevarer den officielle ImageGenerationRequest-struktur.

Behold hvert returneret billede og hele svaret; outputmængden er den faktiske, ikke det ønskede n.

### Priser

##### Sådan beregnes det endelige beløb

De viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Estimerede takster til sammenligning

#### Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

| Konfiguration | Takstplan | Forventet mængde | Afregningsenhed | Beløb |
| --- | --- | --- | --- | --- |
| KonfigurationGrundpriser for tokens | TakstplanGrundtakst | Forventet mængde— | Afregningsenhed— | Beløb Input · Inputtokens · Estimat kun til sammenligning **—** / 1K tokens Output · Outputtokens · Estimat kun til sammenligning **—** / 1K tokens Input · Cachelæsning · Estimat kun til sammenligning **—** / 1K tokens Input · Cacheskrivning · Estimat kun til sammenligning **—** / 1K tokens Input · Cacheskrivning, 1 time · Estimat kun til sammenligning **—** / 1K tokens |
| KonfigurationUltra | Takstplan— | Forventet mængde— | Afregningsenhedpr. outputbillede | Beløb Output · outputbillede · Estimat kun til sammenligning **$0.08** pr. outputbillede |
| KonfigurationAnslået genereringsomkostning | Takstplan— | Forventet mængdeestimat for én generering | Afregningsenhed— | Beløb Output · Anslået genereringsomkostning · Estimat kun til sammenligning **$0.08** estimat før generering Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering. |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

#### Detaljer om referencetariffen

Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.

Priskonfigurationer for billeder

#### Priser efter konfiguration

| Konfiguration | Afregningsbetingelser | Beløb |
| --- | --- | --- |
| KonfigurationOutputbillede | AfregningsbetingelserDer er ikke angivet nogen prisvariant. | Beløb Output · Outputbillede **$0.08** pr. billede Tilsvarende prisangivelser beskriver samme opkrævning; de tilføjer ikke et ekstra gebyr. |

### Eksempelanmodninger

#### Ailoot Ultra · Billeder

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

### Hent og gem resultater

#### Ailoot Ultra · Billeder

Hent hvert returneret billede, eller gem dets Base64-indhold

- `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 færdige resultater

Gem hvert færdigt billede; hent hver returneret URL eller afkod dets Base64-indhold.

Behold hvert dataelement og hele forbruget; overtag og gem alle faktisk returnerede billeder. Ingen opdigtede URL’er eller ID’er.

##### Hvis det oprindelige svar skal kontrolleres

Hvis resultatet af en billedgenerering eller -redigering skal kontrolleres, skal du gemme det oprindelige operation\_id/X-Client-Request-ID og de returnerede resultatoplysninger. Hent eksisterende resultater, som du ejer, via mediebiblioteket med de faktiske task\_id- eller asset\_id-værdier. Send ikke anmodningen om generering/redigering igen, og opbyg ikke en polling-URL ud fra operation\_id.

Svarfelter

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

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |
| Svar`server_error` | BetingelseDet returnerede svar angiver, at operationen eller resultatet skal kontrolleres | Næste trinGem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen. |

### Aliaser

#### Modelaliaser

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

#### Aliaser for metodestier

`/v1/images`

#### Relaterede kalder-ID’er

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

FAQ · Recraft: Recraft V4

Hvilke input og resultater er tilgængelige?

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

Hvilke felter bruger anmodningen?

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

Hvilke grænser gælder?

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

Tilslut Ailoot til Claude Code, OpenCode, Hermes eller din egen applikation.

## Virksomheden og dens projektportefølje

Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.

## Køb tokens med rabat.

Abonnementsrabat til regelmæssigt arbejde. Rabatkoder giver op til 50% på tokenkøb.

Abonnement

Vælg et abonnement med rabat til dine regelmæssige anmodninger.

Rabatkode på op til 50%

Indtast koden ved købet. Prisen genberegnes efter den aktuelle kampagne.

Udgifter i historikken

Model, tokens og beløb gemmes for hver anmodning.

[Vælg abonnement](https://ailoot.ai/docs/da/billing/subscriptions/) · [Se modelpriser](https://ailoot.ai/models/da/)

## Tilslut API’et til produktet, du sælger.

SaaS, apps og bots efter Ailoots tilbudsvilkår og licensaftale. Anmod om en forhandlerlicens til videresalg.

Kommerciel applikation

Byg generering af tekst, billeder, video og lyd ind i tjenestens betalte funktioner.

Licens til forhandlere

Send projektbeskrivelse og adgangsmodel. Bed om skriftlige vilkår for anvendelse og videresalg.

Dokumenter på websitet

Tilbudsvilkår, licensaftale og politik for behandling af data kan læses før tilslutning.

[Anmod om forhandlerlicens](mailto:support@ailoot.ai) · [Tilbudsvilkår og licensaftale](https://ailoot.ai/legal/offer?lang=da)

## Ailoot · Virksomheden og dens projektportefølje





Ailoot bygger på solid driftserfaring, en stor kundebase, stabil service og løbende kontrol af KPI.





Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.





Ailoot bruger denne driftserfaring til API-adgang til AI-funktioner i kundernes produkter, agenter, applikationer og automatiseringer.
