One key, six calls, 1,185 AP — the whole AICU API in one sitting

Speech, images, typed decisions and OpenAI-compatible chat all sit behind one key on api.aicu.ai. This post calls every one of them, in order, and prints what each call actually cost — read straight off the X-AICU-AP-Cost response header, not from a price list.
Total for the whole post: 1,185 AP, about US$0.12.
Tomorrow, in person — Sep 23 (Wed), Hamamatsucho. AICU Japan is exhibiting at Generative AI Expo Vol.6, booths A-7 / A-8, 12:00–17:30, Tokyo Metropolitan Industrial Trade Center Hamamatsucho 5F. We will run all of this at the table, and the booth doubles as the entry desk for the International AI Creator Award 2026. Come and break it in front of us.
First, a key
Sign up at api.aicu.ai/signup and issue a key at api.aicu.ai/dashboard/keys. During the beta a new account is credited 100,000 AP (about US$10) — enough to run everything in this post roughly eighty times over.
AP is prepaid and nothing is metered per month. 1 AP = US$0.0001. There is no plan to choose, no seat to buy, and a key that lapses deletes nothing: your history and your balance stay, the key simply starts returning 401.
export AICU_API_KEY=aicu_... # from /dashboard/keys
1. Speech, in Japanese — 5 AP
The speech endpoint takes the OpenAI /audio/speech body, so an existing client usually needs nothing but a new base URL and key.
curl -X POST https://api.aicu.ai/v1/audio/speech \
-H "Authorization: Bearer $AICU_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"input": "展示会でお会いできるのを楽しみにしています。", "voice": "elena"}' \
--output hello.mp3
22 characters of Japanese, 3.4 seconds of audio, 5 AP. The default model is eleven_multilingual_v2.
voice takes a character slug — GET /v1/tts/voices with your key lists the ones you can use — or a raw ElevenLabs voice ID if you already have one you like.
2. The same sentence again — 0 AP
Run the identical request a second time and the response is byte-identical, instant, and free:
x-aicu-ap-cost: 0
Speech is cached on voice, model, seed and the exact text. This matters more than it sounds: an AITuber that greets every viewer with the same line, a game that replays the same barks, a kiosk that loops an intro — all of those pay once. We mark cache hits in your usage history so a zero-cost row never looks like a billing bug. Failed requests are not charged either; reservations are refunded in full.
3. eleven_v3 and inline direction — 7 AP
Pass model to switch. eleven_v3 reads inline audio tags, so you can direct the delivery inside the text instead of hunting for the right voice.
curl -X POST https://api.aicu.ai/v1/audio/speech \
-H "Authorization: Bearer $AICU_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"input": "[excited]展示会でお会いできるのを楽しみにしています。",
"voice": "elena", "model": "eleven_v3"}' \
--output hello-v3.mp3
7 AP. Same sentence, different performance — listen to them back to back:
A deliberate design note: an unknown model value returns 400, it does not quietly fall back to v2. A 200 you did not ask for is worse than an error.
4. An image — 1,170 AP
The illustration at the top of this post came out of this API. Here is the exact call:
curl -X POST https://api.aicu.ai/v1/images/generations \
-H "Authorization: Bearer $AICU_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "nano-banana", "size": "1536x1024", "n": 1,
"prompt": "A single ornate brass key lying on warm cream paper, drawn as a clean editorial line illustration with soft watercolour shading. From the teeth of the key, five slender coloured threads fan out to the right and each ends in one small hand-drawn glyph: a sound wave, a paintbrush, a ticked checkbox, a speech bubble, and a film frame. Muted palette: brass, dusty rose, sage green, ochre, slate blue, terracotta. Generous empty space on the left. No text, no letters, no numbers, no logos, no watermark."}'
1,170 AP, 10.4 seconds, returned as b64_json. The body is OpenAI-shaped, so openai.images.generate() works against it unchanged. gpt-image-2.5 is on the same endpoint if you want its quality ladder — we measured that one separately in our GPT-Image-2.5 notes.
Full disclosure, since this post is about receipts: the first attempt at that illustration cost another 1,170 AP and was thrown away. Image generation is iterative, and your ledger will show that.
5. A decision, with a type — 2 AP
This is the endpoint people don't expect. A chat model answers in prose, so your code has to parse prose back into a branch — every time, forever. /v1/jev relays Jev and answers in types: a choice, a score, or a likelihood.
Here is a real support message going in:
curl -X POST https://api.aicu.ai/v1/jev \
-H "Authorization: Bearer $AICU_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"state": "Customer wrote: The mp3 was generated but my credit balance did not go down. Is something broken?",
"questions": {
"intent": { "type": "choice", "instructions": "What is this message mainly about?",
"criteria": { "billing": "About charges, credits or the balance",
"bug_report": "Something appears to be broken",
"feature_request": "Asking for something new",
"praise": "Positive feedback with no question" } },
"urgency": { "type": "score", "instructions": "How urgent is this for the customer?",
"criteria": ["no rush", "answer this week", "answer today", "service is down"] },
"needs_human": { "type": "noul", "instructions": "How likely is it that a human must reply?" }
}
}'
And the answer, trimmed:
{
"model": "jev-1.13.0",
"answers": {
"intent": { "choice": "billing", "probabilities": { "billing": 0.78, "bug_report": 0.22 }, "confidence": 0.71 },
"urgency": { "score": 1.68, "legend": { "0": "no rush", "1": "answer this week", "2": "answer today", "3": "service is down" }, "confidence": 0.63 },
"needs_human": { "noul": 0.68 }
},
"ap_cost": 2
}
2 AP for three typed answers with calibrated probabilities. No regex, no "please respond in JSON", no retry when the model felt chatty. Route on answers.intent.choice and be done. (That example is not hypothetical — it is close to a message a customer actually sent us, and the cache hit in §2 is the answer to it.)
6. Chat, OpenAI-compatible — 1 AP
curl -X POST https://api.aicu.ai/v1/chat/completions \
-H "Authorization: Bearer $AICU_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "deepseek-v3",
"messages": [{"role": "user", "content": "Reply in one short sentence: what is an API key for?"}]}'
An API key is used to authenticate and authorize access to an API.
31 tokens, 2.1 seconds, 1 AP. In any OpenAI SDK, two lines:
from openai import OpenAI
client = OpenAI(base_url="https://api.aicu.ai/v1", api_key=os.environ["AICU_API_KEY"])
GET /v1/chat/models lists what is routable right now, and api.aicu.ai/models is the same list with prices.
The bill

Two headers come back on every billed call:
| Header | Meaning |
|---|---|
X-AICU-AP-Cost | what this request cost — 0 on a cache hit |
X-AICU-AP-Balance | what is left afterwards |
Log the first one and you have your own cost accounting without waiting for an invoice. The same rows, endpoint by endpoint, are in your usage history.
Paying in yen
Buying in USD is fine for anyone — individuals, sole traders, a team trying things out. The yen packs exist for a narrower reason: Japanese companies that need a qualified invoice (適格請求書), bank transfer, or a purchase booked against this year's budget. Those are sold by AICU Japan K.K. (法人向け・円建・適格事業者), and the conversion rate is republished weekly against the market rate. From Sep 30 the yen packs move to 1 USD = ¥180. USD pricing is unaffected.
What happens next
The beta calendar, all times 09:00 JST:
| Date | |
|---|---|
| Oct 7 | AP packs open for purchase in USD; every account holder gets the production guide by email |
| Oct 14 | no new beta keys — keys issued from here are production aicu_live_ keys |
| Oct 21 | production operation begins; new keys require a registered card |
| Oct 31 | beta keys stop working |
Expiry never deletes anything, and we email the owner a week before any key lapses.
Until then the beta is open, and the fastest way to find out whether this fits your project is to spend about twelve cents finding out.
Every AP figure in this post was measured on 2026-09-22 against production. Reproduce it with your own key and you should land on the same numbers.
