A Higan Holdings Limited Company — England & Wales, No. 16914818 --:-- JST All systems normal Client Console →
YUNAGI yunagi.cloud

Yunagi/AI Inference

YG-INF-03 · 2026.08

AI Inference

Renders by the image, or the card by the hour.

Lotus Diffusion-1 is our own image model: 3.1 billion parameters, native 1024 square, served from Tokyo and Hong Kong at $0.012 a render with the first 1,000 of each month included. If you would rather have the silicon, an L40S is $1.40 an hour and an H100 is $2.90. Both are on this page — the model card, the whole API, and the arithmetic for choosing between them.

The sun as a low flat disc above a still horizon — rendered by Lotus Diffusion-1

the sun as a low flat disc above a still horizon

seed 48226steps 20cfg 4.5

Per image $0.012/img First 1,000 renders each month included
Median render 1.9s 1024², 28 steps, queue time included
Model 3.1B Parameters · native 1024 × 1024
L40S tenancy $1.40/hr At HND-1 · $1.55 at HKG-1
GPU sites 2of 6 東京 HND-1 and 香港 HKG-1 only

Model Card

One checkpoint, stated in full.

Lotus Diffusion-1 is a single checkpoint, frozen on 30 June 2026, served from the GPU rows at Tokyo and Hong Kong. It is 3.1 billion parameters of latent diffusion trained at 1024 square, and it is good at a narrow thing: ink and wash, one subject, mist, wide empty ground. It is bad at text, hands and crowds, and we have not fixed that. The table states the corpus, the licence position and the filtering, including the parts that will disappoint you. Nothing here is benchmarked against anyone else, because we have not run those benchmarks.

← the table scrolls sideways →

型録 — Lotus Diffusion-1, checkpoint ld1-2026-06-30
Field Lotus Diffusion-1 Note
Architecture Latent diffusion, U-Net denoiser v-parameterised
Text encoders Two, frozen, 0.51 B combined English and Japanese prompts
Parameters 3.1 B total, 2.4 B in the U-Net bf16, 6.2 GB on disk
Autoencoder 4× downsample, 4-channel latent Trained on the same corpus
Native resolution 1024 × 1024 768–1536, aspect 1:2 to 2:1
Default sampler DPM-Solver++ 2M, Karras sigmas euler-a and ddim also offered
VRAM at 1024², batch 1 9.8 GB 23.1 GB at batch 8
Training corpus 412 M image–text pairs De-duplicated at 0.94 cosine
— licensed stock 61% Per-image commercial licence
— public-domain scans 24% Museum and library collections
— commissioned work 9% Photographers paid, contracts held
— synthetic 6% Rendered in-house, self-labelled
Opt-out Honoured at the next retrain [email protected]
Output rights Yours. We claim no copyright. Commercial use, resale, edits
IP indemnity Not offered We will not pretend otherwise
Does well Ink and wash, one subject, mist Line holds from 20 steps up
Landscape, still life, 1024 square Muted and monochrome palettes
Wide negative space, dry brush cfg 3.5–5.5 is the useful band
Does badly Legible text of any length Words come out as marks
Hands, crowds, exact counts Past three subjects it degrades
Photoreal skin, faces in profile Not what it was trained for
Safety, training set Hash match plus NSFW classifier Third-party hash list
Safety, input Prompt classifier → 422 0.4% measured false-block rate
Safety, output Image classifier → 422 Not billed; retry a new seed
Likenesses Named real people are refused Public figures included
Not claimed No benchmark placement We publish no FID or CLIP table
No third-party audit None commissioned to date
No factual grounding It paints; it does not know
Checkpoint hash sha256 4e91…c07d Frozen. A retrain gets a new name
Deprecation notice 12 months, minimum Old checkpoints stay callable

Trained 12 Feb – 30 Jun 2026 on our own H100 rows at HND-1. Corpus percentages are by image count, not by weight in training. Opt-out removes matched images from the next corpus build; it cannot remove them from a checkpoint already frozen. Prompt language: English and Japanese are trained. Other languages reach the encoder and will produce something, but we make no claim about what.

Plates

Six renders, and the seeds that made them.

Six images straight out of the endpoint, with the prompt and the seed that produced each one printed underneath. Nothing was retouched, upscaled or re-rolled: the first render at that seed is the one on the wall. Post the same body to the same region and the same image comes back, byte for byte, until the checkpoint changes name. That is the whole demonstration. If this house style suits your work, the model will hold it all day. If you need photographs of people, it will not, and no prompt will make it.

01

a lotus bud rising from still water at dusk — rendered by Lotus Diffusion-1

a lotus bud rising from still water at dusk

seed 41207steps 28cfg 4.5

02

a solitary crane in shallow water, reeds behind — rendered by Lotus Diffusion-1

a solitary crane in shallow water, reeds behind

seed 20873steps 32cfg 4.2

03

mountain ridges receding into mist over a bay — rendered by Lotus Diffusion-1

mountain ridges receding into mist over a bay

seed 33914steps 28cfg 4.5

04

a wooden fishing boat at rest, reflection whole — rendered by Lotus Diffusion-1

a wooden fishing boat at rest, reflection whole

seed 57402steps 24cfg 5.0

05

a pine branch from the upper right, mist below — rendered by Lotus Diffusion-1

a pine branch from the upper right, mist below

seed 61150steps 36cfg 3.8

06

the sun as a low flat disc above a still horizon — rendered by Lotus Diffusion-1

the sun as a low flat disc above a still horizon

seed 48226steps 20cfg 4.5

Every plate is the first render at that seed — nothing was retouched, upscaled or re-rolled. Post the same body to the same region and the same image comes back until the checkpoint changes name. The prompts printed here are the subject clause; the full body adds one shared style clause, which is in the API section below.

The Endpoint

One POST, one body, up to eight images.

The request shape follows the widely used images API closely enough that most client libraries work by changing the base URL and the model name — and it is documented here in full rather than by pointing at someone else's page. Everything under 120 seconds is synchronous; anything longer is yours to poll or to take on a webhook. Bearer auth, idempotency keys honoured for 24 hours, and every response carries the region, the seed and the render time in its headers, so your logs can reproduce any image later without asking us.

← the table scrolls sideways →

POST https://api.yunagi.cloud/v1/images
Parameter Type Default Accepts Note
Authorization header no Bearer Required
Idempotency-Key header no ≤ 64 characters Replays for 24 hours
model string no lotus-diffusion-1 Required
prompt string no 1–900 characters Required. EN or JA
negative_prompt string "" 0–300 characters Costs nothing extra
size string 1024x1024 768–1536, multiples of 64 Aspect 1:2 to 2:1
steps integer 28 8–60 Above 40 rarely visible
cfg number 4.5 1.0–12.0 3.5–5.5 for ink work
seed integer random 0–4294967295 Always echoed back
n integer 1 1–8 Charged as n images
sampler string dpm2m-karras euler-a, ddim Seeds differ per sampler
image string no base64 or https URL Makes it img2img
strength number 0.62 0.05–1.00 Requires image
mask string no base64 PNG, alpha paints Requires image
region string account default hnd, hkg Where it renders and stays
response_format string url url, b64_json URL expires in 24 h
webhook string no https URL POST on completion
user string no ≤ 64 characters Echoed, never stored

Body is JSON; anything not listed is rejected rather than ignored, so a typo fails loudly at 400. Uploads (image, mask) cap at 12 MB and must match the requested size. Timeout: renders are cut at 120 s and returned as 504. n renders sequentially on the metered endpoint; on a tenancy it batches. Idempotency: the same key within 24 h returns the original response, including the original seed, and is not charged twice.

curl -sS https://api.yunagi.cloud/v1/images \
  -H "Authorization: Bearer $YUNAGI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: plate-03-2026-08-26" \
  -d '{
    "model":  "lotus-diffusion-1",
    "prompt": "mountain ridges receding into mist over a bay, sumi-e, ink on aged washi, wide negative space, no colour",
    "size":   "1024x1024",
    "steps":  28,
    "cfg":    4.5,
    "seed":   33914,
    "n":      1,
    "region": "hnd",
    "response_format": "url"
  }'
Pane 1 of 3 in one .ex[data-tabs]. ex-head left: REQUEST · POST /v1/images; ex-head right: the three .ex-tab buttons. ex-foot: This is plate 03 above, reproduced. Same body, same image.
200 OK
HTTP/1.1 200 OK
X-Yunagi-Request-Id: req_01JBQ7F2K9V4
X-Yunagi-Region: hnd
X-Yunagi-Render-Ms: 1874
X-Yunagi-Included-Remaining: 947

{
  "id": "img_01JBQ7F2K9V4",
  "created": 1756180800,
  "model": "lotus-diffusion-1",
  "region": "hnd",
  "data": [
    {
      "url": "https://cdn.yunagi.cloud/r/01JBQ7F2K9V4.png",
      "expires_at": 1756267200,
      "seed": 33914,
      "steps": 28,
      "cfg": 4.5,
      "size": "1024x1024",
      "sampler": "dpm2m-karras",
      "sha256": "9f2c…a71b"
    }
  ],
  "usage": {
    "images_charged": 0,
    "included_remaining": 947,
    "render_ms": 1874
  }
}
Its own .ex, no tabs, directly under the request block. ex-head: RESPONSE · 200. ex-foot: images_charged stays 0 while the month's first 1,000 renders last; included_remaining counts them down. The URL is dead after 24 hours — fetch it, do not link to it.

Full reference — docs.yunagi.cloud/v1

Errors & Limits

Every failure names itself.

One envelope for every failure: a stable code string, a sentence of English, and the request id to quote at us. Blocked prompts are not billed. Blocked outputs are not billed either — retry with a new seed. Rate limits are per key rather than per account, so a runaway batch job cannot starve your production key, and the 429 states how long to wait instead of making you guess. A new key starts at 60 requests a minute and four renders in flight; verified accounts get four times that, usually the same working day.

← the table scrolls sideways →

誤 — every error the endpoint returns
Status Code Meaning Retry
400 invalid_request Body failed validation No — fix and resend
401 invalid_api_key Key wrong, revoked or expired no
402 quota_exhausted Account spend cap reached Raise the cap first
403 region_unavailable Region not enabled for this key no
404 model_not_found Unknown model name no
413 payload_too_large Image or mask over 12 MB no
422 prompt_blocked Input classifier refused it No — not billed
422 output_blocked Output classifier refused it New seed — not billed
429 rate_limited Over RPM or renders in flight Yes — honour Retry-After
499 client_closed You hung up mid-render Not billed
500 internal_error Ours. Quote the request id. Yes — backoff
503 no_capacity No free card in that region Yes — honour Retry-After
504 render_timeout Render passed 120 seconds Yes — fewer steps

Envelope: every non-2xx returns {"error":{"code","message","request_id"}}. Match on code, never on the message — messages get reworded, codes do not. Backoff: 1 s, 2 s, 4 s, 8 s with jitter, five attempts, then stop. 503 is a capacity signal, not a fault; if it repeats in one region, send the next request to the other. Incidents are posted at notices.yunagi.cloud before support can answer the ticket.

限 — rate limits, per key
Key Requests/min Renders in flight Included/month Over the limit
New key 60 4 1,000 429 with Retry-After
Verified account 240 12 1,000 429 with Retry-After
Volume, on request 600 32 1,000 429 with Retry-After
GPU tenancy No endpoint limit What fits in VRAM n/a — flat rate no

Per key, not per account: issue one key per workload and a runaway batch cannot starve production. Included renders are per account, not per key; they reset at 00:00 UTC on the first of the month and do not roll over. Verification is a business check, not a payment, and is usually done the same working day. Headers on every response: X-Yunagi-Ratelimit-Limit, -Remaining, -Reset, and X-Yunagi-Included-Remaining.

429
HTTP/1.1 429 Too Many Requests
Retry-After: 2
X-Yunagi-Request-Id: req_01JBQ7G0P2M8
X-Yunagi-Ratelimit-Limit: 60
X-Yunagi-Ratelimit-Remaining: 0
X-Yunagi-Ratelimit-Reset: 2026-08-26T04:11:20Z

{
  "error": {
    "code": "rate_limited",
    "message": "60 requests per minute on this key. 4 renders already in flight.",
    "request_id": "req_01JBQ7G0P2M8",
    "retry_after_s": 2
  }
}
Sits under the two tables in §errors. ex-head: RESPONSE · 429. ex-foot: Retry-After is in seconds and is honest — waiting it out succeeds. Sleeping less does not.

Latency

Pixels and steps. Nothing else.

Render time is a function of pixel count and step count; prompt length does not move it. The figures below are medians measured at HND-1 over the fourteen days to 20 August 2026, batch of one, queue time included and network time to you excluded. p95 sits at roughly two and a half times p50, and that gap is queueing rather than compute. At 28 steps and 1024 square the endpoint returns in 1.9 seconds at the median. Sixty steps buys very little on this model; twenty is often enough.

← the table scrolls sideways →

速 — median wall-clock, HND-1, 6–20 August 2026
Size Steps L40S H100 Endpoint p50 Endpoint p95 L40S img/hr
768 × 768 20 1.9 s 0.9 s 1.2 s 3.1 s 2,740
768 × 768 28 2.5 s 1.2 s 1.5 s 3.6 s 2,090
1024 × 1024 20 2.6 s 1.2 s 1.5 s 3.7 s 2,010
1024 × 1024 28 3.4 s 1.6 s 1.9 s 4.6 s 1,530
1024 × 1024 40 4.8 s 2.3 s 2.6 s 5.9 s 1,090
1024 × 1536 28 5.1 s 2.4 s 2.7 s 6.2 s 1,020
1536 × 1536 28 7.9 s 3.7 s 4.1 s 8.8 s 660

L40S and H100 columns are compute only, batch of one, on a dedicated card. Endpoint p50/p95 are the whole request on the metered endpoint, which runs H100 rows — queue included, network time to you excluded. img/hr is sustained throughput on one L40S at batch 8, where per-image cost falls about 31%. Add the round-trip to reach HND-1: 224 ms from London, 158 ms from New York, 98 ms from Los Angeles, 34 ms from Seoul, 51 ms from Hong Kong.

Break-even

When the card is cheaper than the meter.

Metered renders cost $0.012 each with the first 1,000 of each month included. A rented card costs the same whether it renders or idles, so the only question is how busy you would keep it. At Tokyo prices an L40S pays for itself at 85,167 images a month — 2,800 a day, about eleven per cent of the card's day actually rendering. Below that the endpoint is cheaper and needs no operations from you. Above it, rent, and keep the difference. The curve is drawn from the same numbers printed in the table.

metered, $0.012 an imageone L40S at HND-1, $1,022 a month

The share of a card’s day actually spent rendering, at the point where renting stops costing more than metering. Below these figures the endpoint is cheaper and needs no operations from you.

L40S · HND-111.0% H100 · HND-110.7% L40S · HKG-112.2% H100 · HKG-111.5%

← the table scrolls sideways →

比 — where a rented card overtakes the meter
Card and site Hourly Month, 730 h Break-even images/month Per day Duty at break-even
L40S · HND-1 $1.40 $1,022.00 85,167 2,800 11.0%
H100 · HND-1 $2.90 $2,117.00 176,417 5,800 10.7%
L40S · HKG-1 $1.55 $1,131.50 94,292 3,100 12.2%
H100 · HKG-1 $3.10 $2,263.00 188,584 6,200 11.5%

Month = 730 hours (30.42 days), billed per minute after a one-hour minimum. Break-even = monthly card cost ÷ $0.012, ignoring the 1,000 renders included each month; add 1,000 for the true crossing — 86,167 images on an L40S at Tokyo. Duty is the share of the day the card would spend rendering at that volume, at 3.4 s (L40S) and 1.6 s (H100) for 1024², 28 steps. Below that duty the meter is cheaper and asks nothing of you; above it, the card is. The chart beside this table is drawn by page.js from #breakeven[data-breakeven]='{"maxImages":100000,"maxCost":1200,"perImage":0.012,"gpuMonthly":1022}' — the L40S at HND-1. Duty bars: .fill-bar with data-fill="11.0%", "10.7%", "12.2%", "11.5%".

← the table scrolls sideways →

勘定 — the same month, both ways, at HND-1
Images/month Metered L40S tenancy H100 tenancy Cheaper by
1,000 $0.00 $1,022.00 $2,117.00 Metered, $1,022.00
10,000 $108.00 $1,022.00 $2,117.00 Metered, $914.00
25,000 $288.00 $1,022.00 $2,117.00 Metered, $734.00
50,000 $588.00 $1,022.00 $2,117.00 Metered, $434.00
86,167 $1,022.00 $1,022.00 $2,117.00 Level
120,000 $1,428.00 $1,022.00 $2,117.00 L40S, $406.00
250,000 $2,988.00 $1,022.00 $2,117.00 L40S, $1,966.00
500,000 $5,988.00 $1,022.00 $2,117.00 L40S, $4,966.00

Metered = (images − 1,000) × $0.012. Tenancy is flat: one card, 730 hours, whether it renders or idles. One L40S is enough for every row here — 500,000 renders a month at 1024², 28 steps is 65% duty at batch 8. The H100 never wins on price for this model; it wins when a single render must come back in 1.6 s rather than 3.4 s. Not counted: your own time. A tenancy is a machine you now operate, patch and monitor. If that costs you more than $400 a month of attention, the 120,000-image row is not really a win.

GPU Tenancy

The whole card, by the minute.

A tenancy is the entire card and the host it sits in, at Tokyo or Hong Kong, billed per minute after a one-hour minimum. You get root, an NVMe scratch volume and no supervision: run Lotus, run your own weights, run something that is not diffusion at all. Hong Kong costs about eleven per cent more than Tokyo because transit and power there cost us more. If you want a card mainly for latency rather than volume, the H100 roughly halves the render time; it does not halve the bill.

← the table scrolls sideways →

架 — the two cards, at both sites
Specification L40S H100
Architecture Ada Lovelace Hopper
VRAM 48 GB GDDR6, ECC 80 GB HBM3
Memory bandwidth 864 GB/s 3.35 TB/s
bf16 dense 362 TFLOPS 990 TFLOPS
Board power 350 W 700 W
Form PCIe 4.0 ×16 SXM5
Host vCPU 16 26
Host memory 128 GB 224 GB
NVMe scratch 1.9 TB 3.8 TB
Port 10 Gbps, unmetered 25 Gbps, unmetered
Lotus 1024², 28 steps 3.4 s 1.6 s
Lotus sustained, batch 8 1,530 img/hr 3,210 img/hr
Largest comfortable render 1536², batch 2 1536², batch 8
HND-1 hourly $1.40 $2.90
HKG-1 hourly $1.55 $3.10
HND-1 month, 730 h $1,022.00 $2,117.00
HKG-1 month, 730 h $1,131.50 $2,263.00
Minimum term 1 hour 1 hour
Billing after that Per minute Per minute
Provisioning, median 6 min 9 min
On release Volume discarded, zeroed Volume discarded, zeroed

Sites: GPU rows stand only at 東京 HND-1 and 香港 HKG-1. London, New York, Los Angeles and Seoul carry the full compute and domain catalogue and no cards. Hong Kong is 10–11% dearer than Tokyo because transit and power there cost us more; nothing else differs. You get root. We do not inspect the volume and we do not support what is on it. The 99.9% SLA covers the machine and the network, not your code. Multi-card hosts (2× or 4× H100, NVLink within the node) are quoted rather than listed — ask.

Tenancy shell
$ ssh [email protected]
Yunagi GPU tenancy · HND-1 · L40S 48 GB · billed per minute

# nvidia-smi --query-gpu=name,memory.total --format=csv,noheader
NVIDIA L40S, 46068 MiB

# lsblk -o NAME,SIZE,MOUNTPOINT | grep weights
nvme1n1  1.9T  /mnt/weights        # yours. We do not read it.

# yunagi release --wipe
Detaching /mnt/weights … done
Zeroing 1.9 TB NVMe … done (blkdiscard, verify pass logged)
Billing stopped 2026-08-26T13:04:11Z · 3 h 22 min · $4.71
Its own .ex in §tenancy. ex-head: TENANCY · SHELL. ex-foot: 3 h 22 min at $1.40/hr is $4.71, billed per minute after the one-hour minimum. The wipe is not optional and not chargeable.

GPU rows stand at 東京 HND-1 and 香港 HKG-1 only. Prices in USD, excluding VAT. UK VAT at 20% is added where applicable. Published 2026.08.26.

Data Handling

We do not train on anything you send.

01

Your prompts are not training data.

Not now and not later. There is no opt-out because there is nothing to opt out of, and no clause reserving the right to change our mind about it.

02

Weights stay on your volume.

On a tenancy the card is yours and so is the disk under it. On release the volume is cryptographically erased before the host is re-issued, and the erase is logged against your account.

03

Renders are yours.

Output carries no licence back to us and no attribution requirement. What we keep, where, and for how long is the table on the other side of this cut.

What We Hold

Held, where, and for how long.

Everything the endpoint retains, with the reason and the clock. Nothing on this list is kept because it might be useful later.

← the table scrolls sideways →

守 — what we hold, where, and for how long
Item Where it sits Kept Then
Prompt and negative prompt Region that rendered it 30 days Deleted
Uploaded image or mask Render node memory The render only Never written to disk
Rendered image, url format Regional object store 24 hours Deleted
Rendered image, b64_json Nowhere 0 Streamed, not stored
Safety classifier verdicts Aggregate counters only 90 days Deleted
Request metadata and cost Billing ledger, UK 7 years Statutory retention
Your weights on a tenancy Your own NVMe volume The tenancy Discarded and zeroed
Any of the above, for training Not used no We do not train on it

Region is a promise, not a default. A request sent with region "hnd" renders at HND-1 and its prompt text stays at HND-1; it is not replicated to HKG-1 or to London. Zeroing on release is blkdiscard plus a verification pass, logged, before the volume goes to anyone else. Subprocessors: none for inference — the cards are ours, in our racks, under AS207214. The data processing addendum and the compliance pack are available on request; ask support and they arrive the same working day.

The controlling text is at legal.html#privacy.

Questions

Asked before anyone signs.

If your question is not here, [email protected] reaches an engineer, and it is read by someone who runs the platform.

Do you train on my prompts or my images?

No. Prompts, uploads and outputs are excluded from every training set by construction, not by a preference toggle. The corpus for Lotus Diffusion-1 was licensed, public-domain or commissioned before the endpoint opened, and the next checkpoint will be built the same way. If you need that stated in a contract, ask for the data processing addendum.

Who owns what comes out?

You do. We claim no copyright in the renders and put no restriction on commercial use, resale or modification. We do not offer an IP indemnity, and we will not pretend the legal position on model outputs is settled anywhere. If a client of yours demands indemnity, take a tenancy and run weights whose provenance you can warrant yourself.

Will the same seed give me the same image next year?

Yes, while the checkpoint keeps its name. ld1-2026-06-30 is frozen; any retrain ships under a new name and both stay callable, with twelve months' notice minimum before anything is withdrawn. Sampler, steps, cfg, size and region have to match as well — a seed on its own does not pin an image.

Why are the GPUs only in Tokyo and Hong Kong?

Because that is where we have the power and cooling for 700-watt cards. London, New York, Los Angeles and Seoul carry the full compute and domain catalogue and no GPU rows, and we would rather say so than quietly route your renders across the ring without telling you. From London the endpoint adds 224 ms of round-trip.

What gets blocked, and am I charged for it?

Sexual content involving minors, non-consensual sexual imagery, and named real people. The input classifier refuses about 0.4% of legitimate prompts and the output classifier catches what slips past it. Neither a blocked prompt nor a blocked output is billed. If a refusal looks wrong, send us the request id and a person will read the actual prompt.

Can I run something other than Lotus on a rented card?

Yes. A tenancy is root on the host with the card passed through: run any weights you have the right to run, diffusion or otherwise. We do not inspect the volume and we do not support what is on it. The 99.9% uptime SLA covers the machine and the network, not your code.

Start with the thousand you already have.

Every account includes 1,000 renders a month. That is enough to find out whether this model suits your work before anything is metered.