Skip to content

Developer docs

Credits & pricing

One currency for everything — model prices for media, tokens for chat, small platform credits for the marketing engine, and free API calls up to 1,000 a day.

Poremu bills in credits. 1 credit = ₩10. Everything — the AI marketer, reports, connector syncs, images, videos, chat — draws from the same balance, and every price is visible before you run anything.

WhatPrice
Image / video generationThe model's per-output price (depends on resolution, quality, duration, audio) — quote it with /estimate
LLM chat, copy generation, agent reasoning in CREDITS modePer token (chatPricing on each chat model)
Marketing platform creditsanalysis 1 · strategy / content write 1 · report 5 · connector sync 1 per channel per day · connector action (budget / pause execution) 2
API callsFree up to 1,000 per day, then 1 per 100 calls

Marketing engine modes

Each workspace chooses how the AI marketer reasons (GET / PATCH /v1/engine):

ModeWho pays for thinkingWhat Poremu charges
CREDITSPoremu models (gpt-5.4-mini by default)tokens + platform credits
BYO_KEYYour own OpenAI / Gemini / Anthropic / xAI key (stored encrypted)platform credits only
BYO_MCPThe assistant you connected over MCP — Claude Code, Claude, Cursor, ChatGPTplatform credits only

Media is always charged at the model price, whatever the mode. See what the AI spent per tool with GET /v1/usage?workspaceId= and GET /v1/usage/logs.

Media prices

Quote a job

text
POST /v1/generations/estimate

Same body as create (prompt optional):

json
{ "model": "gemini-omni-flash", "duration": 10, "resolution": "720p", "audio": true }
json
{ "credits": 520, "balance": 3 180, "sufficient": true }

Balance

text
GET /v1/balance
json
{ "paid": 2 900, "bonus": 280, "total": 3 180, "plan": { "code": "PLUS", "status": "ACTIVE", "currentPeriodEnd": "2026-04-01T00:00:00.000Z", "cancelAtPeriodEnd": false } }
  • Paid credits come from subscriptions and top-ups and never expire.
  • Bonus credits (welcome gift, pack bonuses, first-month bonus) expire 60 days after they are granted and are always spent first.

Reservation model

  1. On create, the full price is reserved and your balance drops immediately.
  2. On success the reservation is captured.
  3. On failure or cancel the reservation is refunded in full, back to the same bucket (bonus or paid).

If your balance is too low you get 402 INSUFFICIENT_CREDITS with details.required and details.balance.

Getting credits

Subscriptions and one-time packs are managed in Billing on the website. Auto-recharge can top you up automatically when the balance drops under a threshold (at most 3× a day, plus an optional monthly limit of 1, 3, 5, 10 or 20 recharges) — handy for production API workloads.

History

text
GET /v1/credits/history?cursor=…

Every reservation, capture, refund, purchase and expiry is a ledger row, so your balance is always auditable.

API call billing

Requests made with an API key (pk_live_…) or an OAuth token (pmo_…) are free up to 1,000 calls per UTC day; after that each block of 100 calls costs 1 credit (₩10). The first request of every new block of 100 writes one RESERVE + CAPTURE pair to the ledger (description API · 100 calls).

  • These paths never count: /v1/me, /v1/billing/*, /v1/models*, /v1/developer/*, /mcp/docs, /health.
  • If a new block must start and your balance is 0, that request is refused with 402 INSUFFICIENT_CREDITS. Top up and continue.
  • Generation and agent-run prices are separate; call billing is added on top.
  • See today's usage and the daily history with GET /developer/usage (ApiUsageSummaryDto) or under Settings → Developer. Counters are aggregated every 15 seconds, so the dashboard may lag slightly.