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

# Recraft: Recraft V4.1 Flash

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

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

Recraft V4.1 Flash genererer rasterbilleder i 1K fra tekst til hurtig visuel iteration. Den understøtter fotografering, portrætter, komplekse scener og logokoncepter med PNG- eller tabsfrit WebP-output og udtrykkelige farvepræferencer.

- [**Ailoot Ultra · Billeder** `POST /v1/images/generations` `recraft/recraft-v4.1-flash`](https://ailoot.ai/models/da/recraft-recraft-v4-1-flash/#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.1 Flash er Recrafts tekst-til-billede-model til hurtig iteration og visuelt arbejde i stort omfang. Producenten angiver fotografering, portrætter, atmosfære, komplekse scener, blandede medier og logokoncepter som stærke anvendelser. En skrevet beskrivelse bliver til et rasterbillede, der kan sammenlignes med andre kreative retninger, før et færdigt materiale udvikles. Flash er et specifikt medlem af V4.1-familien med sin egen outputstørrelse og understøttede kontroller.

Det oprindelige output ligger i Recrafts klasse for rasterbilleder i 1K. Vælg lærred efter den ønskede placering: en vandret illustration til en sideoverskrift, et lodret portræt eller et kvadratisk billede til et kompakt kort. Outputformaterne er tabsfri WebP og PNG.

Begynd beskrivelsen med hovedmotivet og det visuelle formål, og beskriv derefter indramning, miljø, belysning og medie. Til et produktkoncept er en nyttig instruktion: ”En kompakt cremefarvet radio på et valnøddeskrivebord, skrå synsvinkel forfra, blødt vindueslys, roligt redaktionelt fotografi, rigelig tom plads til venstre.” Ved en illustration skal du angive formsprog, palet og forholdet mellem elementerne. Hold de detaljer, der definerer idéen, udtrykkelige frem for at tilføje uvedkommende tillægsord. Flashs dokumenterede promptramme er op til 10.000 tegn, så en detaljeret scene kan beskrives, når opgaven kræver det.

Producentens kontroller omfatter foretrukne farver og en ønsket baggrundsfarve. Et seed kan medsendes til reproducerbare resultater, og genereringsgrænsefladen dokumenterer ét til seks billeder i en anmodning. Disse kontroller understøtter en nyttig sammenligningsopgave: hold motiv og komposition stabile, variér én visuel retning, og gennemgå de resulterende billeder i forhold til det ønskede layout. Farvepræferencer beskriver det ønskede resultat; sammenlign vigtige brandfarver med det færdige materiale, før det kombineres med et eksisterende designsystem.

Flash producerer rastergrafik. Et logokoncept kan hjælpe med at vælge silhuet, stemning eller opstilling, mens redigerbare kurver tilhører de særskilt navngivne Vector-modeller. Flash har heller ingen Pro-variant. Den fulde V4.1-serie tilbyder disse separate valg, når vektorredigering eller detaljer i højere opløsning er centrale for leverancen. Producenten beskriver et senere forfiningstrin til at føre et valgt udkast mod et mere detaljeret billede; dette trin er en særskilt operation frem for en anden oprindelig Flash-outputstørrelse.

Denne udgave understøtter ikke billede-til-billede-input, brugerdefinerede stilarter, stilidentifikatorer, stilmatchning eller stilreferencebilleder. Den dokumenterede grænseflade udelukker også negative prompts og udtrykkelige tekstlayoutkontroller. Sæt det ønskede udseende og kompositionen ind i den positive beskrivelse. Når tekst indgår i et koncept, skal du citere den ønskede ordlyd og undersøge de gengivne bogstaver; brug et separat layouttrin, når præcis typografi og placering er afgørende.

Et praktisk resultat fra Flash er en valgt visuel retning med en tydelig beskrivelse, passende billedformat og en brugbar rasterfil. Sammenlign motiv, indramning, baggrund og vigtige detaljer i den størrelse, billedet skal vises i. Gem den vellykkede prompt og den valgte fil sammen, så det næste kreative trin følger den valgte retning. Hurtig iteration hjælper med at udforske designet; oprindeligt vektoroutput, matchning af referencestil og opløsningen fra en anden V4.1-udgave er fortsat separate modelvalg.

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

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

Recraft /`recraft/recraft-v4.1-flash`

### Start

Recraft V4.1 Flash genererer rasterbilleder i 1K fra tekst til hurtig visuel iteration. Den understøtter fotografering, portrætter, komplekse scener og logokoncepter med PNG- eller tabsfrit WebP-output og udtrykkelige farvepræferencer.

Accepterede input

Tekst

Resultater

Billeder

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

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

Inputtyper

`text`

Outputtyper

`image`

Outputformat

Billedfil

Antal output

1 output

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser recraft/recraft-v4.1-flash | Standard— |
| Felt`prompt` | Type`string` | KravPåkrævet | Værdier og grænser Minimumslængde: 1 Betingelser: Ikke-tom UTF8-prompt. Der opfindes ingen tegngrænse, der gælder på tværs af producentens modeller. | Standard— |
| Felt`n` | Type`integer` | KravValgfrit | Værdier og grænser 1 | Standard1 |
| Felt`response_format` | Type`string` | KravValgfrit | Værdier og grænser url, b64\_json | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser false | Standardfalse |

Kombinationer af inputmaterialer

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

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, prompt |
| Parameter`material_types` | Kontrakttext |
| Parameter`optional` | Kontraktn, response\_format, stream |
| Parameter`n` | Kontrakt1 |
| Parameter`stream` | Kontraktfalse |
| Parameter`response_format` | Kontrakturl, b64\_json |
| Parameter`reference_images` | Kontraktfalse |
| Parameter`edit` | Kontraktfalse |
| Parameter`output_format_optional` | Kontrakt |
| Parameter`resolution_control` | Kontraktnull |
| Parameter`aspect_ratio_control` | Kontraktnull |
| Parameter`other_fields` | Kontraktafvises bortset fra den præcise fastlagte interne udbyderrouting |

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}`

Generér ét billede ud fra en prompt.

Gem hvert dataelement; url/b64\_json er kodninger af resultater.

### 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 · billedoutput · Estimat kun til sammenligning **$0.014** pr. outputbillede |
| KonfigurationAnslået genereringsomkostning | Takstplan— | Forventet mængdeestimat for én generering | Afregningsenhed— | Beløb Output · Anslået genereringsomkostning · Estimat kun til sammenligning **$0.014** 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.014** 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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')

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.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
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.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
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.

Gem hvert dataelement. Afkod hver b64\_json, eller hent hver returneret signeret URL. Vælg filtypenavnet ud fra den faktiske MIME-type eller de faktiske bytes.

##### 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.1-flash`](https://ailoot.ai/models/da/#m=recraft%2Frecraft-v4.1-flash&route=Ultra&caller=recraft%2Frecraft-v4.1-flash&fmt=images)

#### Aliaser for metodestier

Brug metodestierne vist ovenfor.

#### Relaterede kalder-ID’er

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

FAQ · Recraft: Recraft V4.1 Flash

Hvilke input og resultater er tilgængelige?

`POST /v1/images/generations` · `recraft/recraft-v4.1-flash`: `text` → `image`

Hvilke felter bruger anmodningen?

`POST /v1/images/generations` · `recraft/recraft-v4.1-flash`: `model`, `prompt`, `n`, `response_format`, `stream`

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.
