Download OpenAPI specification:
The full GlianaAI catalog, called with an API key against a prepaid balance. Send Authorization: Bearer gk_… and the cost of each call is deducted from your balance — no payment handshake, no per-call signing. Top up in rupiah and manage keys at https://dashboard.glianalabs.com. Every response carries x-gliana-charged-micro-usd and x-gliana-balance-micro-usd, so you can track spend without a second request. Prices are identical to the pay-per-call rail.
$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "wan-2.7-i2v",
- "prompt": "a timelapse of clouds over mountains"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "music-2.6",
- "prompt": "a calm lo-fi beat"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "grok-stt",
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "flux-2-pro-preview",
- "prompt": "a red apple on a wooden table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "wan-2.7-i2v",
- "prompt": "a timelapse of clouds over mountains"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "grok-tts",
- "input": "Hello from GlianaAI."
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "wan-2.7-i2v",
- "prompt": "a timelapse of clouds over mountains"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
One endpoint for the whole catalog: send { model, ...modelInput } — pick any model from GET /v1/models (90+ across image, video, image-to-video, text-to-speech, speech-to-text, music).
| model required | string Model id or full run id (see GET /v1/models). |
| prompt | string Most models take a text prompt; STT/some take a file/url instead. |
| property name* additional property | any |
{- "model": "grok-imagine-image",
- "prompt": "a red apple on a table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Drop-in for the OpenAI chat completions API: swap the base URL, keep your SDK. Pick any text model from GET /v1/models (category "text"). Billing is a pre-charged ceiling — (estimated input tokens + max_tokens) at the model’s per-1M rates — so set max_tokens to bound spend; the response returns real usage. Supports messages (required), max_tokens, temperature, top_p, stream: true (SSE, OpenAI chunk format), tools/tool_choice (OpenAI function calling — tool_calls + role:"tool" round-trip), and vision (content parts with image_url on vision-capable models).
| model required | string Text model id (see GET /v1/models, category "text"). |
required | Array of objects OpenAI-style chat messages: [{ role: "user"|"assistant"|"system"|"tool", content }]. |
| max_tokens | integer Output cap — bounds the pre-charged ceiling. Default 1024. |
Array of objects OpenAI function tools; response returns tool_calls. | |
| property name* additional property | any |
{- "model": "grok-4.3",
- "messages": [
- {
- "role": "user",
- "content": "Summarize x402 in one sentence."
}
], - "max_tokens": 256
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Open one Tempo channel and pay many calls with off-chain vouchers; settle on close. Non-custodial — the deposit stays in the on-chain escrow.
| model required | string Model id or full run id. |
| property name* additional property | any |
{- "model": "string"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "flux-2-pro-preview",
- "prompt": "a red apple on a wooden table"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.0001–$60 per call, depending on model and input, deducted from your prepaid balance. Quote it first with GET /v1/price?model=; the exact amount charged comes back in x-gliana-charged-micro-usd.
Capability endpoint — pick any matching model with GET /v1/models and pass it as { model }.
| model required | string Model id or full run id (see GET /v1/models). |
| property name* additional property | any |
{- "model": "wan-2.7-i2v",
- "prompt": "a timelapse of clouds over mountains"
}{- "model": "nano-banana-2",
- "costMicroUsd": 92400,
- "output": {
- "contentType": "image/png",
- "sizeBytes": 1834127
}
}$0.445550 per call, deducted from your prepaid balance. Charged only on success.
Recipe: text → image → animated video (cheapest path to a video; better subject control). Multi-model pipeline from { prompt }. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt required | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "prompt": "an italian-brainrot cat-shark hybrid, 3d meme",
- "motionPrompt": "it dances and spins"
}$0.844300 per call, deducted from your prepaid balance. Charged only on success.
Recipe: text → image → video with native AUDIO. Multi-model pipeline from { prompt }. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt required | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "prompt": "an italian-brainrot cat-shark hybrid, 3d meme",
- "motionPrompt": "it dances and spins"
}$0.470750 per call, deducted from your prepaid balance. Charged only on success.
Recipe: text → higher-fidelity image → animated video. Multi-model pipeline from { prompt }. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt required | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "prompt": "an italian-brainrot cat-shark hybrid, 3d meme",
- "motionPrompt": "it dances and spins"
}$0.997500 per call, deducted from your prepaid balance. Charged only on success.
Recipe: random Italian-brainrot character → animated video with audio (also the brainrot-video model). Multi-model pipeline. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "motionPrompt": "it dances and bounces"
}$0.002000 per call, deducted from your prepaid balance. Charged only on success.
Multi-chain JSON-RPC proxy — { chain, method, params }.
| property name* additional property | any |
{- "chain": "base",
- "method": "eth_blockNumber",
- "params": [ ]
}{- "tool": "tools/rpc",
- "costMicroUsd": 2000,
- "chain": "base",
- "result": "0x1a2b3c"
}$0.002000 per call, deducted from your prepaid balance. Charged only on success.
Spot token prices — { symbols: "BTC,ETH", vs? } (CoinGecko ids also accepted via the same field or { ids }).
| property name* additional property | any |
{- "symbols": "BTC,ETH",
- "vs": "usd"
}{- "tool": "tools/token-price",
- "costMicroUsd": 2000,
- "vs": "USD",
- "prices": {
- "BTC": 68000.12,
- "ETH": 3450.5
}, - "sources": {
- "BTC": "coinbase",
- "ETH": "coinbase"
}
}$0.002000 per call, deducted from your prepaid balance. Charged only on success.
Mid-market fiat exchange rates — { from?: "USD", to?: "IDR,EUR", amount? }. Omit to for every currency. Non-USD pairs are cross-rated via USD; reference rates, not dealable quotes.
| property name* additional property | any |
{- "from": "USD",
- "to": "IDR,EUR",
- "amount": 100
}{- "tool": "tools/exchange-rate",
- "costMicroUsd": 2000,
- "base": "USD",
- "rates": {
- "IDR": 18076.9467,
- "EUR": 0.875576
}, - "amount": 100,
- "converted": {
- "IDR": 1807694.6663,
- "EUR": 87.5576
}, - "as_of": "30 Jul 2026",
- "source": "open.er-api.com",
- "note": "Mid-market reference rates, not dealable quotes."
}$0.003000 per call, deducted from your prepaid balance. Charged only on success.
Parse a messy Indonesian address into components — { address }. kabupaten_kota and provinsi are resolved from official Kepmendagri data rather than from a model, so they cannot be invented, and verified reports where the model disagreed. Returns jalan, nomor, rt, rw, kelurahan, kecamatan, kabupaten_kota, provinsi, kode_pos, the official kode with coordinates, and a confidence. kecamatan/kelurahan/kode_pos are as written and unverified.
| property name* additional property | any |
{- "address": "Jl. Merdeka No. 12 RT 03/RW 05, Gedong Air, Tanjung Karang Barat, Bandar Lampung 35152"
}{- "tool": "tools/address-id",
- "costMicroUsd": 3000,
- "input": "Jl. Merdeka No. 12 RT 03/RW 05, Gedong Air, Tanjung Karang Barat, Bandar Lampung 35152",
- "parsed": {
- "jalan": "Merdeka",
- "nomor": "12",
- "rt": "3",
- "rw": "5",
- "kelurahan": "Gedong Air",
- "kecamatan": "Tanjung Karang Barat",
- "kabupaten_kota": "Kota Bandar Lampung",
- "provinsi": "Lampung",
- "kode_pos": "35152"
}, - "wilayah": {
- "kode": "18.71",
- "kabupaten_kota": "Kota Bandar Lampung",
- "provinsi": "Lampung",
- "lat": -5.42958,
- "lng": 105.26257
}, - "verified": {
- "kabupaten_kota": true,
- "provinsi": true
}, - "confidence": "high",
- "notes": [ ]
}$0.008000 per call, deducted from your prepaid balance. Charged only on success.
Turn a product photo into ready-to-post marketplace copy — { image_url | image_base64 }. Returns title and description in BOTH Indonesian and English, plus category, condition, material, colours and search tags. Written from what is visible only: brands, sizes, materials and warranties are never inferred, and anything the photo does not show is null. Nothing is stored.
| property name* additional property | any |
{
}{- "tool": "tools/product-listing",
- "costMicroUsd": 8000,
- "listing": {
- "title_id": "Tas Selempang Kulit Coklat Pria",
- "title_en": "Men's Brown Leather Crossbody Bag",
- "description_id": "Tas selempang berbahan kulit warna coklat. Terdapat tali bahu yang bisa diatur dan satu kompartemen utama dengan ritsleting.",
- "description_en": "Brown leather crossbody bag with an adjustable shoulder strap and a single zipped main compartment.",
- "category": "Bags & Luggage",
- "condition": "new",
- "material": "Leather",
- "colors": [
- "coklat",
- "brown"
], - "tags": [
- "tas selempang",
- "tas kulit",
- "crossbody bag",
- "leather bag",
- "tas pria"
]
}, - "model": "@cf/mistralai/mistral-small-3.1-24b-instruct"
}$0.005000 per call, deducted from your prepaid balance. Charged only on success.
Read an identity document (Indonesian KTP/SIM/KK/NPWP, foreign passport or driving licence) into structured JSON — { image_url | image_base64 }. Indonesian documents also get structural NIK verification (region code, encoded birth date and gender) as a confidence signal, not proof of authenticity. Nothing is stored, and no face matching is performed.
| property name* additional property | any |
{
}{- "tool": "tools/ocr-id",
- "costMicroUsd": 5000,
- "fields": {
- "document_type": "KTP",
- "issuing_country": "INDONESIA",
- "id_number": "1871014102900002",
- "full_name": "BUDI SANTOSO",
- "birth_place": "BANDAR LAMPUNG",
- "birth_date": "01-02-1990",
- "gender": "PEREMPUAN",
- "address": "JL MERDEKA NO 12",
- "rt_rw": "003/005",
- "village": "GEDONG AIR",
- "district": "TANJUNG KARANG BARAT",
- "city": null,
- "province": null,
- "expiry_date": "SEUMUR HIDUP",
- "blood_type": "O",
- "nationality": "INDONESIA",
- "religion": "ISLAM",
- "marital_status": "BELUM MENIKAH",
- "sim_class": null
}, - "verification": {
- "ok": true,
- "format": true,
- "region": {
- "kode": "18.71",
- "kabupaten_kota": "Kota Bandar Lampung",
- "provinsi": "Lampung"
}, - "birth_date": "1990-02-01",
- "gender": "P",
- "agrees": {
- "birth_date": true,
- "gender": true
}, - "notes": [ ]
}, - "model": "@cf/mistralai/mistral-small-3.1-24b-instruct"
}$0.002000 per call, deducted from your prepaid balance. Charged only on success.
Detect faces → boxes + score + age/gender, no embeddings — { image_url | image_base64 }.
| property name* additional property | any |
{
}{- "tool": "tools/face-detect",
- "costMicroUsd": 2000
}$0.005000 per call, deducted from your prepaid balance. Charged only on success.
Detect every face → 512-d ArcFace embedding per face (+ bbox, score, age/gender) — { image_url | image_base64 }.
| property name* additional property | any |
{
}{- "tool": "tools/face-embed",
- "costMicroUsd": 5000
}$0.008000 per call, deducted from your prepaid balance. Charged only on success.
Compare two faces → cosine similarity + match — { a:{image_url|image_base64}, b:{image_url|image_base64} }.
| property name* additional property | any |
{
}{- "tool": "tools/face-compare",
- "costMicroUsd": 8000
}$0.150000 per call, deducted from your prepaid balance. Charged only on success.
Summarize a YouTube video (Gemini watches the URL) — { url, style?: bullets|paragraph|chapters, language? }; videos ≤60 min.
| property name* additional property | any |
{- "style": "bullets"
}{- "tool": "tools/youtube-summary",
- "costMicroUsd": 150000,
- "summary": "- The video explains ...\n- It then shows ...",
- "video": {
- "id": "dQw4w9WgXcQ",
- "title": "Example video",
- "channel": "Example Channel",
- "durationSeconds": 212
}
}$0.010000 per call, deducted from your prepaid balance. Charged only on success.
Render a page and return JSON matching a schema you declare — { url, schema, prompt? }. schema is { field: "description" } or { field: { type, description } }, type one of string|number|boolean|string[]. Values are coerced to the declared types; anything the page does not state is null and listed in missing rather than invented.
| property name* additional property | any |
{- "schema": {
- "title": "the product name",
- "price": {
- "type": "number",
- "description": "listed price"
}
}
}{- "tool": "tools/extract",
- "costMicroUsd": 10000,
- "data": {
- "title": "Widget Pro",
- "price": 249000,
- "in_stock": true
}, - "missing": [ ]
}$0.005000 per call, deducted from your prepaid balance. Charged only on success.
Render a page (JS) → clean markdown — { url }.
| property name* additional property | any |
{
}{- "tool": "tools/scrape",
- "costMicroUsd": 5000,
- "markdown": "# Example\n\nSome page text..."
}$0.005000 per call, deducted from your prepaid balance. Charged only on success.
Capture a page as PNG → hosted URL — { url, fullPage? }.
| property name* additional property | any |
{
}{- "tool": "tools/screenshot",
- "costMicroUsd": 5000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Render a 1200×630 branded OG/social card from a title → PNG URL.
| property name* additional property | any |
{- "title": "Your headline",
- "subtitle": "a short tagline"
}{- "tool": "tools/og-image",
- "costMicroUsd": 20000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Render a 1280×720 YouTube thumbnail (bold title over an optional background image) → PNG URL.
| property name* additional property | any |
{- "title": "I tried this for 30 days",
- "subtitle": "the results",
}{- "tool": "tools/youtube-thumbnail",
- "costMicroUsd": 20000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Render a 1200×630 shareable quote image → PNG URL.
| property name* additional property | any |
{- "quote": "Make it work, make it right, make it fast.",
- "author": "Kent Beck"
}{- "tool": "tools/quote-card",
- "costMicroUsd": 20000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Render a code snippet as a clean dark window image → PNG URL.
| property name* additional property | any |
{- "code": "console.log('hello')",
- "title": "app.js"
}{- "tool": "tools/code-image",
- "costMicroUsd": 20000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Render a tweet-style card → PNG URL.
| property name* additional property | any |
{- "text": "shipping > talking",
- "name": "GlianaAI",
- "handle": "glianalabs"
}{- "tool": "tools/tweet-image",
- "costMicroUsd": 20000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Top/bottom Impact text over an image → PNG URL.
| property name* additional property | any |
{- "top": "one does not simply",
- "bottom": "make a meme api"
}{- "tool": "tools/meme",
- "costMicroUsd": 20000,
}$0.020000 per call, deducted from your prepaid balance. Charged only on success.
Templated social card sized by preset (og/instagram-square/story/linkedin/podcast) → PNG URL.
| property name* additional property | any |
{- "preset": "instagram-square",
- "title": "Big news",
- "subtitle": "we shipped it"
}{- "tool": "tools/card",
- "costMicroUsd": 20000,
}$0.030000 per call, deducted from your prepaid balance. Charged only on success.
Scrape a URL's title + render a branded OG card from it → PNG URL.
| property name* additional property | any |
{
}{- "tool": "tools/auto-og",
- "costMicroUsd": 30000,
- "sourceTitle": "Example Domain",
}Free — costs nothing against your balance.
No charge. Official Indonesian administrative regions — 38 provinsi and 514 kabupaten/kota per Kepmendagri No. 300.2.2-2430 Tahun 2025, with the official kode, capital, centroid, timezone, area and population. Call with ?kode=18 for one region (a provinsi also returns its regencies), ?q=bandung to search by name, ?induk=18 to list one province, or no params for all 38 provinces. Level 1-2 only — kecamatan and desa are not included.
| kode | string Official code, e.g. 18 (provinsi) or 18.71 (kabupaten/kota). |
| q | string Name search; best match first, kota preferred over kabupaten for an ambiguous name. |
| induk | string Parent provinsi code — lists every kabupaten/kota inside it. |
| level | string Enum: "provinsi" "kabupaten_kota" Restrict to provinsi or kabupaten_kota. |
curl "https://api.glianalabs.com/v1/tools/wilayah" # Free — no key required.
{- "source": "Kepmendagri No. 300.2.2-2430 Tahun 2025 (via github.com/cahyadsn/wilayah)",
- "scope": "provinsi + kabupaten/kota (level 1-2)",
- "count": 3,
- "results": [
- {
- "kode": "32.73",
- "nama": "Kota Bandung",
- "level": "kabupaten_kota",
- "induk": "32",
- "ibukota": "Bandung",
- "lat": -6.92222,
- "lng": 107.60694,
- "timezone": "WIB",
- "utc_offset": 7,
- "luas_km2": 167.7,
- "penduduk": 2569107
}
]
}Free — costs nothing against your balance.
No charge, no model call, instant. Checks an Indonesian NIK (national ID number) against arithmetic: 16-digit format, the region code in digits 1-4 resolved against official Kepmendagri data, and the birth date and gender the number encodes. Pass &birth_date=DD-MM-YYYY and &gender=L|P to cross-check what a user typed against what the number says — that is what catches a transposed digit. Proves consistency, NOT authenticity: a well-formed fabrication passes.
| nik required | string 16-digit Indonesian NIK. Spaces are tolerated. |
| birth_date | string Optional claimed birth date to cross-check, e.g. 01-02-1990. |
| gender | string Optional claimed gender to cross-check: L/LAKI-LAKI/M/MALE or P/PEREMPUAN/F/FEMALE. |
curl "https://api.glianalabs.com/v1/tools/verify-nik" # Free — no key required.
{- "ok": true,
- "format": true,
- "region": {
- "kode": "18.71",
- "kabupaten_kota": "Kota Bandar Lampung",
- "provinsi": "Lampung"
}, - "birth_date": "1990-02-01",
- "gender": "P",
- "agrees": {
- "birth_date": true,
- "gender": true
}, - "notes": [ ],
- "note": "Structural check only: 16-digit format, the region code against official Kepmendagri data, and the birth date and gender the number encodes. It cannot tell a real NIK from a well-formed fabrication."
}Free — costs nothing against your balance.
No charge, no model call. Indonesian number-to-words for the amount-in-words line required on invoices, kwitansi and cheques. Pass ?n=249000 (Indonesian thousands separators accepted). Returns the plain words and the capitalised rupiah phrasing. Whole numbers only — decimals are not spelled.
| n required | string Whole number, e.g. 249000 or 249.000. |
curl "https://api.glianalabs.com/v1/tools/terbilang" # Free — no key required.
{- "number": 249000,
- "terbilang": "dua ratus empat puluh sembilan ribu",
- "rupiah": "Dua ratus empat puluh sembilan ribu rupiah"
}Free — costs nothing against your balance.
No charge, no model call. A 16-digit NPWP is the holder's NIK (since 2024) and gets the full region, birth-date and gender check; the 15-digit legacy form is decomposed into taxpayer id, KPP code and branch code and checked for structure only. Neither proves the number was actually issued — checks says exactly what was tested.
| npwp required | string 15 or 16 digits; dots and dashes ignored. |
curl "https://api.glianalabs.com/v1/tools/verify-npwp" # Free — no key required.
{- "ok": true,
- "format": "legacy15",
- "normalized": "01.234.567.8-901.000",
- "parts": {
- "taxpayer_id": "012345678",
- "kpp_code": "901",
- "branch_code": "000",
- "is_head_office": true
}, - "nik": null,
- "checks": [
- "15-digit legacy format: length and structure only"
], - "notes": [
- "Structure only — the legacy check digit is not verified, so a well-formed number that was never issued will pass."
]
}Free — costs nothing against your balance.
No charge, no model call. Decodes a QRIS payment code (EMVCo TLV) into merchant name, city, NMID, acquirer, MCC, currency and amount, and reports whether the CRC-16 is intact — valid_crc false means the code is damaged or mistyped and nothing else should be trusted. Add &amount=50000 to also get the same merchant code with that amount set (the standard static-to-dynamic conversion): the merchant account template is preserved byte for byte, the CRC recomputed, and the result re-parsed before it is returned. Does NOT mint a merchant QR — the NMID is issued by an acquirer and is never invented. Test with your acquirer before production use.
| payload required | string The QRIS string from the QR code. |
| amount | string Optional amount to set, e.g. 50000. Refused if the source CRC is invalid. |
curl "https://api.glianalabs.com/v1/tools/qris" # Free — no key required.
{- "valid_crc": true,
- "crc": {
- "found": "A1B2",
- "computed": "A1B2"
}, - "type": "static",
- "merchant_name": "WARUNG GLIANA",
- "merchant_city": "BANDAR LAMPUNG",
- "country": "ID",
- "currency": "360",
- "amount": null,
- "mcc": "5814",
- "nmid": "ID1234567890123",
- "acquirer": "ID.CO.QRIS.WWW"
}Free — costs nothing against your balance.
No charge. Jadwal sholat (imsak, subuh, terbit, dzuhur, ashar, maghrib, isya) computed from solar position. Pass ?city=Bandar Lampung (any Indonesian kabupaten/kota name or kode — the coordinate and timezone come from the official wilayah data) or ?lat=&lng=&tz=. ?days=30 returns a whole month in one call. Methods: kemenag (default, Indonesia), mwl, isna, egypt, makkah, karachi; madhab shafi (default) or hanafi changes ashar only. Calculated times are typically within 1-2 minutes of the official Kemenag table and are not a substitute for a local mosque schedule. Where the sun never reaches the required depression (high latitudes in summer) the affected times are null rather than guessed.
| city | string Indonesian kabupaten/kota name or kode. Alternative to lat/lng/tz. |
| lat | number Latitude, -90..90. Requires lng. |
| lng | number Longitude, -180..180. |
| tz | number UTC offset in hours (7 WIB, 8 WITA, 9 WIT). Defaults to the offset implied by lng. |
| date | string YYYY-MM-DD. Defaults to today in the target timezone. |
| days | integer [ 1 .. 31 ] Consecutive days to return, 1-31. Default 1. |
| method | string Enum: "kemenag" "mwl" "isna" "egypt" "makkah" "karachi" Calculation authority. |
| madhab | string Enum: "shafi" "hanafi" Asr shadow rule. |
curl "https://api.glianalabs.com/v1/tools/prayer-times" # Free — no key required.
{- "location": {
- "kode": "18.71",
- "nama": "Kota Bandar Lampung",
- "level": "kabupaten_kota",
- "induk": "18",
- "ibukota": "Bandar Lampung",
- "lat": -5.42958,
- "lng": 105.26257,
- "timezone": "WIB",
- "utc_offset": 7
}, - "method": {
- "id": "kemenag",
- "label": "Kementerian Agama Republik Indonesia",
- "fajr_angle": 20,
- "isha": 18,
- "ihtiyati": true
}, - "madhab": "shafi",
- "note": "Calculated from solar position, typically within 1-2 minutes of the official Kemenag table. Not a substitute for your local mosque schedule.",
- "date": "2026-07-30",
- "times": {
- "imsak": "04:36",
- "fajr": "04:50",
- "sunrise": "06:07",
- "dhuhr": "12:07",
- "asr": "15:30",
- "maghrib": "18:04",
- "isha": "19:16"
}
}$0.445550 per call, deducted from your prepaid balance. Charged only on success.
Recipe: text → image → animated video (cheapest path to a video; better subject control). Multi-model pipeline from { prompt }. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt required | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "prompt": "an italian-brainrot cat-shark hybrid, 3d meme",
- "motionPrompt": "it dances and spins"
}$0.844300 per call, deducted from your prepaid balance. Charged only on success.
Recipe: text → image → video with native AUDIO. Multi-model pipeline from { prompt }. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt required | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "prompt": "an italian-brainrot cat-shark hybrid, 3d meme",
- "motionPrompt": "it dances and spins"
}$0.470750 per call, deducted from your prepaid balance. Charged only on success.
Recipe: text → higher-fidelity image → animated video. Multi-model pipeline from { prompt }. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt required | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "prompt": "an italian-brainrot cat-shark hybrid, 3d meme",
- "motionPrompt": "it dances and spins"
}$0.997500 per call, deducted from your prepaid balance. Charged only on success.
Recipe: random Italian-brainrot character → animated video with audio (also the brainrot-video model). Multi-model pipeline. Override steps with { imageModel, videoModel }; { motionPrompt, duration, resolution } tune the video. Returns each step's output + the final url.
| prompt | string Text description of the subject/scene the pipeline should generate. |
| property name* additional property | any |
{- "motionPrompt": "it dances and bounces"
}Free — costs nothing against your balance.
No charge. Send Authorization: Bearer gk_…. Callers who cannot settle per call from a wallet can instead hold a prepaid balance (topped up in the dashboard) and spend it with an API key; every paid endpoint accepts either. Returns the remaining balance in micro-USD.
curl "https://api.glianalabs.com/v1/keys/balance" # Free — no key required.
{- "account_id": "string",
- "balance_micro_usd": 0,
- "balance_usd": "string"
}Free — costs nothing against your balance.
No charge — browsing the catalog costs nothing.
curl "https://api.glianalabs.com/v1/models" # Free — no key required.
{- "models": [
- { }
]
}Free — costs nothing against your balance.
No charge. Pass ?model=fileRef flag for file inputs (image/video/audio) — those take a public URL; upload a local file at POST /v1/media.
| model required | string Model id or full run id (see GET /v1/models). |
curl "https://api.glianalabs.com/v1/schema" # Free — no key required.
{- "model": "string",
- "required": [
- "string"
], - "props": { }
}Free — costs nothing against your balance.
No charge. Pass ?model=
| model required | string Model id or full run id (see GET /v1/models). |
curl "https://api.glianalabs.com/v1/price" # Free — no key required.
{- "model": "string",
- "costMicroUsd": 0,
- "unit": "string",
- "units": 0
}Free — costs nothing against your balance.
No charge. Upload a video / image / audio file to use as a model input (e.g. an image-to-video source, or a video-to-video video_uri). Send the raw file as the request body with its Content-Type; max 40 MB. Returns { url } — pass that URL into the model field. Use this when an input is too big for an inline value, or you don't already have a public URL.
Raw file bytes. Content-Type must be video/, image/, or audio/*.
curl -X POST "https://api.glianalabs.com/v1/media" # Free — no key required.
{- "contentType": "string",
- "sizeBytes": 0
}Free — costs nothing against your balance.
No charge. Serves an uploaded input or a generated output by the key from its /v1/media URL (32-hex id, optional file extension). Responds with the raw file bytes.
| key required | string^[0-9a-f]{32}(\.[a-z0-9]+)?$ Media key from a /v1/media URL — 32 hex chars, optionally followed by a file extension (e.g. 0f...aa.png). |
curl "https://api.glianalabs.com/v1/media/YOUR_KEY" # Free — no key required.