SINANA
Playground

API Guides

How to call Sinana's services directly from your own code — authentication, quotas, errors, and billing.

Getting started

Sinana is one platform for the AI capabilities your business needs — translation, sentiment analysis, image recognition, and transcription today, with more on the way. Every capability is called the same way: one request, one response, metered against one monthly plan allowance.

There are two ways to use a live service today:

  1. The Playground — sign in and call any live service directly from your browser. No code required.
  2. Your own code — call the same HTTP endpoints the Playground uses, using the same sign-in session (see Authentication below).
Server-to-server integration: request a long-lived API key from API keys — requests are admin-reviewed today, not instant self-serve, but a key works across every live service and is metered the same as a signed-in session. Until your request is fulfilled, calling the API from your own code means reusing a signed-in session's token, described below.

Authentication

Every live service today is authenticated the same way: a Cognito-issued ID token, sent as a standard bearer token.

Authorization: Bearer <id_token>

To get a token for testing outside the browser:

  1. Sign in at the top of any Playground page.
  2. Open your browser's dev tools → Application/Storage → Session Storage → find the key sinana_id_token.
  3. Use that value as the bearer token in curl, Postman, or your own code.
ID tokens expire (typically after an hour) — you'll need to sign in again and grab a fresh one periodically. Request an API key instead if you need long-lived, unattended access.

Rate limits & quotas

Every plan includes a monthly request allowance shared across every live service:

PlanRequests / monthOver the limit
Free100Blocked (402) until next month or you upgrade
Starter2,000Billed $0.02 / request
Pro10,000Billed $0.015 / request
Business60,000Billed $0.01 / request

One "request" is one call to Translation, Sentiment, or Image. Transcription isn't counted — it runs on a separate path that doesn't currently attribute usage to a signed-in account.

Hitting the Free plan's limit returns:

HTTP 402
{
  "error": "quota_exceeded",
  "plan": "free",
  "used": 100,
  "quota": 100,
  "message": "Free plan limit reached — upgrade to continue."
}

Beyond the monthly count, a few endpoints cap the size of a single request:

ServiceLimitApplies to
Translation5,000 charactersFree plan only — paid plans are uncapped
Sentiment5,000 charactersEvery plan
Image5 MBEvery plan
Transcription4 MBEvery plan

Errors & status codes

Every error response is a JSON object with at least an error field naming the problem.

StatusMeaning
200Success
400Bad request — missing field, invalid input, or over a size limit. The error field explains which.
401Missing, invalid, or expired bearer token
402Free-plan quota exceeded — see Rate limits & quotas above
502Upstream model or gateway error — safe to retry
504Transcription only: the job timed out
There's no 429 today — the only throttle is the monthly quota above, not a per-minute rate limit.

Billing & plans

Plans are self-service. Subscribe or upgrade from Usage & billing — checkout is handled by Stripe. Once subscribed, use Manage subscription on the same page to change plans, update payment details, or cancel — that also opens a Stripe-hosted page, so your payment details never touch Sinana's servers directly.

Your current usage — total requests this month, and a per-service breakdown of counts and last-used times — is on the same page once you're signed in.

Service reference

Each live service's request/response schema and a runnable curl example live on that service's own page, right next to the "try it live" tool: