Skip to main content

Developers / Docs

API reference

All endpoints of the Ink Studio AI REST API v1, with request fields and example responses.

Markdown version

Basics

Endpoints

MethodPathKeyWhat it does
POST/generationsYesCreate a tattoo design.
GET/stylesNoList the style ids.
GET/pricingNoList the plans and credit packs.
GET/meYesGet the account, plan, credits, and daily API use.
GET/designsYesList the saved designs of the account.
GET/galleryNoSearch the public gallery.
POST/checkoutYesGet a Stripe checkout link.
POST/auth/deviceNoStart a device login.
POST/auth/tokenNoGet the API key of an approved device login.

POST /generations

Creates a design from a prompt. See Generate tattoo designs for the fields, the response, access rules, and streaming.

GET /styles

{ "styles": [{ "id": "fine-line", "label": "Fine line", "colorOptional": true }] }

colorOptional: false means the style is black ink only and color is ignored. Style ids: minimal, fine-line, realism, surreal, text, neo-traditional, black-and-gray, watercolor, traditional, geometric, tribal, japanese, 3d.

GET /pricing

{
  "currency": "usd",
  "pricingUrl": "https://inkstudioai.com/pricing",
  "plans": [{ "sku": "7-day-access", "label": "7-Day Access", "durationDays": 7, "premiumCredits": 10, "priceUsd": 12.99 }],
  "creditPacks": [{ "sku": "credits-20", "label": "20 Credits", "credits": 20, "priceUsd": 9.99, "requiresPlan": true }]
}

A plan gives unlimited text-to-tattoo designs (up to 50 a day with the API) and premium credits for the image tools on the website. Credit packs add premium credits and need an active plan. Current catalog:

Plan skuNameAccessIncludedPrice
7-day-access7-Day Access7 days10 premium credits$12.99
14-day-access14-Day Access14 days20 premium credits$16.99
30-day-access30-Day Access30 days30 premium credits$23.99
Credit pack skuCreditsPrice
credits-2020 premium credits$9.99
credits-5050 premium credits$19.99
credits-120120 premium credits$39.99

GET /me

{
  "email": "[email protected]",
  "name": "Ana",
  "plan": { "active": true, "expiresOn": "2026-11-01T10:00:00.000Z" },
  "freeGenerations": 0,
  "premiumCredits": { "plan": 8, "purchased": 20, "total": 28 },
  "designsGenerated": 14,
  "generation": { "canGenerate": true, "tier": "paid", "dailyLimit": 50, "usedToday": 3 },
  "links": { "account": "https://inkstudioai.com/account", "pricing": "https://inkstudioai.com/pricing" }
}

generation.tier is "paid", "free", or null. With null, the next generation answers 402. plan.expiresOn is null without an active plan.

GET /designs

Query: page (from 1) and limit (1 to 50, default 20). Returns the saved designs of the account, newest first.

{
  "designs": [{ "id": "...", "imageUrl": "...", "prompt": "...", "style": "fine-line", "color": false, "createdAt": "..." }],
  "page": 1,
  "limit": 20,
  "total": 14,
  "hasMore": false
}

Query: q (search words, up to 200 characters), page, and limit (1 to 50, default 12). Without q, the newest designs come first.

{
  "designs": [{ "id": "...", "imageUrl": "...", "prompt": "...", "style": "japanese", "url": "https://inkstudioai.com/tattoos/..." }],
  "page": 1,
  "limit": 12,
  "total": 120,
  "hasMore": true
}

POST /checkout

Body: { "sku": "7-day-access", "couponCode": "OPTIONAL" }. Use a plan or credit pack sku from GET /pricing.

Response 200: { "url": "https://checkout.stripe.com/..." }. Open the URL in a browser to pay. The purchase goes to the account of the key. An unknown sku answers 400 with code: "validation". A credit pack without an active plan answers 403 with code: "plan_required".

POST /auth/device and POST /auth/token

The device login for command line tools. See Authentication.