Akwa Platform · Examples

Real calls against the live routes.

Every example below runs today against Akwa API v1 and the Akwa MCP server, on a paid plan with a personal key from Settings > Developer access. Replace akwa_sk_... with your key. Nothing here is a mock.

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/exports

Returns: 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-mcp

Connect 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
Akwa · Fashion-development infrastructure · Overview · akwa.design

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.