Prove the key works
The first call to make. It needs no scope beyond a valid key and returns the plan and scopes the key carries.
curl -H "Authorization: Bearer akwa_sk_..." https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1/me
Returns: { "user_id": "...", "via": "api_key", "scopes": ["read","export","generate"], "plan": "akwa_pro" }
List your designs
Newest first. Page with the next_before cursor the response returns.
curl -H "Authorization: Bearer akwa_sk_..." "https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1/designs?limit=20"
Returns: { "designs": [ { "id": "3f1c9c1e-0c3a-4e6b-9d2f-8a7b5c4d3e21", "name": "...", "garment_category": "...", "sgg_garment_id": "AKW-...", "created_at": "..." } ], "next_before": "..." }
Read a garment graph by permanent identity
AKW-1008 is a published Akwa house garment, readable by any key. Each fact carries its epistemic state (asserted, inferred, unstated), so an agent can say what it knows and how strongly. Imagery is never returned.
curl -H "Authorization: Bearer akwa_sk_..." "https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1/garments/AKW-1008/graph?profile=technical_designer"
Returns: { "garment_id": "AKW-1008", "profile": "technical_designer", "nodes": [...], "facts": [ { "field": "...", "value": "...", "state": "asserted" } ] }
The same reads in JavaScript, with the SDK file
Copy the file from the SDKs page. It is plain ESM with no dependencies and runs in Node 18+ and the browser.
import { AkwaApi } from "https://www.akwa.design/sdk/akwa-api-v1.js";
const akwa = new AkwaApi({ apiKey: process.env.AKWA_API_KEY });
const me = await akwa.me();
const { designs } = await akwa.listDesigns({ limit: 5 });
const brief = await akwa.designTailorBrief(designs[0].id);
const house = await akwa.garment("AKW-1008", "design-trust");Python, no client needed
Ten routes and one header: a requests session is enough.
import os, requests
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['AKWA_API_KEY']}"
base = "https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1"
designs = s.get(f"{base}/designs", params={"limit": 5}).json()["designs"]
confirmations = s.get(f"{base}/designs/{designs[0]['id']}/confirmations").json()Export a layered SVG for Illustrator
Needs the export scope. The link lasts one hour and serves a governed construction document, never a render.
curl -X POST -H "Authorization: Bearer akwa_sk_..." -H "Content-Type: application/json" \
-d '{"profile":"technical_designer","driver":"illustrator_svg_stage1"}' \
https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1/designs/3f1c9c1e-0c3a-4e6b-9d2f-8a7b5c4d3e21/exportsReturns: 201 { "export": { ... }, "download_url": "https://...", "expires_at": "..." }
Request a Tech Pack, then poll it
Needs the generate scope. A Tech Pack plan allowance is used first; otherwise the response is 402 with a checkout link on akwa.design (EUR 25 plus a fixed surcharge). Then poll until pack.ready is true.
curl -X POST -H "Authorization: Bearer akwa_sk_..." -H "Content-Type: application/json" \
-d '{"designerNotes":"Sample tier. Confirm sleeve length at sampling."}' \
https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1/designs/3f1c9c1e-0c3a-4e6b-9d2f-8a7b5c4d3e21/tech-packs
# 202 { "status": "composing", "purchase_id": "8a7b5c4d-3e21-4f1c-9c1e-0c3a4e6b9d2f" } or
# 402 { "status": "payment_required", "checkout_url": "https://akwa.design/...", "amount": ..., "currency": "EUR" }
curl -H "Authorization: Bearer akwa_sk_..." https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/api-v1/v1/tech-packs/8a7b5c4d-3e21-4f1c-9c1e-0c3a4e6b9d2f
# { "status": "fulfilled", "pack": { "ready": true, "version": 1 }, "pdf": { "download_url": "...", "expires_at": "..." } }List the MCP tools
Streamable HTTP, JSON-RPC 2.0 over POST, stateless. The same key. Five tools, four read-only.
curl -X POST -H "Authorization: Bearer akwa_sk_..." -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/sgg-mcpConnect Claude Code
One command. Then ask Claude about your designs by name or AKW identity.
claude mcp add --transport http akwa https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/sgg-mcp --header "Authorization: Bearer akwa_sk_..."
Connect VS Code or GitHub Copilot
Add to .vscode/mcp.json, or use copilot mcp add with the same URL and header.
{ "servers": { "akwa": { "type": "http", "url": "https://olgggkmqnncdjdxwikml.supabase.co/functions/v1/sgg-mcp",
"headers": { "Authorization": "Bearer akwa_sk_..." } } } }Connect ChatGPT or claude.ai
Consumer connectors sign in with OAuth 2.1 (early access). Add a custom connector with the URL below and approve it with your Akwa account. Inside an assistant Akwa is entitlement-only: what your plan includes, with no purchases in the chat.
https://www.akwa.design/mcp
Claude and Claude Code are trade marks of Anthropic, PBC. ChatGPT is a trade mark of OpenAI. Visual Studio Code and GitHub Copilot are trade marks of Microsoft Corporation. Adobe and Illustrator are trade marks of Adobe Inc. Akwa is not affiliated with, endorsed by or sponsored by any of them. Names are used only to identify the tools a key connects to.