REST API · MCP server · TypeScript SDK
Your AI assistant can run a real store now
Getly is a headless commerce backend for digital products. Create products, take payments, deliver files, issue license keys and get paid out — through a REST API, an MCP server for Claude and Cursor, and a typed SDK. No storefront to build, no payment stack to babysit.
Keys look like getly_sk_live_… and live in the GETLY_API_KEY environment variable.
Draft to live product in five steps
Everything below is plain curl — no SDK required. Copy, paste, sell.
Create a draft product
Prices are integer cents (priceCents). The product starts as a draft — nothing is public yet.
bashcurl -X POST https://www.getly.store/api/v1/products \ -H "Authorization: Bearer $GETLY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Notion Icon Pack", "priceCents": 900, "description": "500 hand-drawn icons for Notion dashboards." }'Response · 201 · application/json{ "success": true, "data": { "id": "6b4e6a52-9d2e-4c8a-b1f3-2a9c0d5e7f10", "name": "Notion Icon Pack", "slug": "notion-icon-pack-m9x2kz", "status": "draft", "priceCents": 900, "urls": { "product": "https://www.getly.store/product/notion-icon-pack-m9x2kz", "buy": "https://www.getly.store/product/notion-icon-pack-m9x2kz" } } }Get an upload URL
The API returns a presigned URL for files up to 2 GB. Your bytes go straight to storage, not through our servers.
bashcurl -X POST https://www.getly.store/api/v1/products/$PRODUCT_ID/files/presign \ -H "Authorization: Bearer $GETLY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "fileName": "icons.zip", "fileSize": 1048576, "fileType": "application/zip" }'Response · 200 · application/json{ "success": true, "data": { "uploadUrl": "https://<account>.r2.cloudflarestorage.com/...&X-Amz-Signature=...", "fileUrl": "https://pub-xxxxxxxx.r2.dev/files/.../aB3xYz.zip", "fileName": "icons.zip", "fileSize": 1048576 } }Upload the file and attach it
PUT the raw bytes to the upload URL, then attach the returned fileUrl to the product.
bashcurl -X PUT "$UPLOAD_URL" \ -H "Content-Type: application/zip" \ --data-binary @icons.zip curl -X POST https://www.getly.store/api/v1/products/$PRODUCT_ID/files \ -H "Authorization: Bearer $GETLY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "fileUrl": "<fileUrl from step 2>", "fileName": "icons.zip", "fileSize": 1048576, "fileType": "application/zip" }'Response · 201 · application/json{ "success": true, "data": { "id": "0f8c31d7-4e2a-49b6-9c1d-8e5a7b3f2c40", "fileName": "icons.zip", "fileSize": 1048576, "isLatest": true } }Publish
One call flips the product live. If anything is missing, you get machine-readable reasons instead of a vague error.
bashcurl -X POST https://www.getly.store/api/v1/products/$PRODUCT_ID/publish \ -H "Authorization: Bearer $GETLY_API_KEY"Response · 200 · application/json{ "success": true, "data": { "id": "6b4e6a52-9d2e-4c8a-b1f3-2a9c0d5e7f10", "status": "active", "priceCents": 900, "urls": { "product": "https://www.getly.store/product/notion-icon-pack-m9x2kz", "buy": "https://www.getly.store/product/notion-icon-pack-m9x2kz" } } }Your product is live
Buyers pay by card or crypto — guest checkout, no account needed. Files are delivered automatically.
bashopen https://www.getly.store/product/notion-icon-pack-m9x2kz
Honesty note: the first products of a brand-new store go through a quick human review (status pending_review) before they appear publicly. After your first sale, publishing is instant.
Plug it into your AI assistant
The official MCP server (@getly/mcp) gives Claude, Cursor and any MCP client 16 tools: create and publish products, upload files, write posts, mint coupons and checkout links, check sales. One config block and your assistant is a shopkeeper.
Claude Code
claude mcp add getly --env GETLY_API_KEY=$GETLY_API_KEY -- npx -y @getly/mcpCursor
{
"mcpServers": {
"getly": {
"command": "npx",
"args": ["-y", "@getly/mcp"],
"env": { "GETLY_API_KEY": "getly_sk_live_..." }
}
}
}Claude Desktop
{
"mcpServers": {
"getly": {
"command": "npx",
"args": ["-y", "@getly/mcp"],
"env": { "GETLY_API_KEY": "getly_sk_live_..." }
}
}
}The server reads your key from the GETLY_API_KEY environment variable only. Never paste keys into prompts, code or commits.
One honest fee. Everything included.
Getly takes 20% of each sale — and that is the whole bill. Before calling it expensive, look at what that 20% actually buys.
| What you get | Getly — 20% all-in | Typical payment-API providers |
|---|---|---|
| Payment processing (cards + crypto) | Included | 4–10% + fixed fees per transaction |
| File hosting & delivery up to 2 GB | Included | You host and serve files yourself |
| Marketplace traffic & SEO | Included — your products are listed on Getly | You bring 100% of the traffic |
| Built-in affiliate network | Included | Build and pay for your own |
| Crypto payouts (USDT/USDC) | Included — 5 chains, no bank account needed | Rarely offered |
| License key issuing & validation | Included | A separate paid service |
| Fixed monthly cost | $0 — you pay only when you sell | $0–99+, plus your own infrastructure |
New sellers keep 90% for their first 3 months.
Built for how software sells in 2026
Crypto payouts
Get paid in USDT or USDC on 5 chains (Ethereum, Tron, BSC, Polygon, Solana). No bank account required — a wallet address is enough.
Guest checkout
Buyers don't need a Getly account. Card or crypto, pay, download — done. Fewer steps, higher conversion.
MCP-first
Not a bolted-on chatbot: a real MCP server with typed tools and safety rails, so Claude or Cursor can manage your whole catalog.
License keys API
Issue keys at purchase, validate and activate them from your app — the public validate endpoint needs no secret at all.
The three manual steps
We won't pretend it's zero. Exactly three things happen outside the API — all one-time:
Sign up
Google, GitHub or a magic link. Thirty seconds.
Create an API key
One click in the dashboard — it also creates your store. Pick only the scopes you need.
Connect a payout method
One Stripe onboarding link, or paste a USDT/USDC wallet address.
Everything else — products, files, posts, coupons, checkout links, license keys, webhooks, payout history — is API.
The whole store, as endpoints
Every capability below ships with cursor pagination, idempotency keys, rate-limit headers and LLM-readable errors.
write:productsProducts
Create, update, publish and archive products; upload files up to 2 GB via presigned URLs.
write:postsBlog posts
Markdown-first store blog with product embeds — content marketing from a cron job.
write:couponsCoupons
Percentage or fixed discounts with usage limits and expiry — with guardrails against accidental 100%-off.
checkout:createCheckout links
Mint a URL with a coupon pre-applied plus your own reference and metadata — poll it or get a webhook when it converts.
read:licensesLicense keys
Auto-issued on purchase; validate and activate from your software via a public, secret-free endpoint.
webhooks:manageWebhooks
Signed events (sale.completed, license.activated and more) with a timestamped HMAC signature scheme.
read:storePayouts
Read your balance and payout history across both rails — Stripe and stablecoins.
Specs & references
OpenAPI 3.1 spec
The full machine-readable contract — generate clients in any language.
llms-api.txt
The whole API as plain text — paste it into any LLM's context.
GitHub — headless-sdk
SDK, MCP server, examples and golden prompts. MIT licensed.
Dashboard API docs
Interactive reference with your own keys, right in the dashboard.
Ship a store this afternoon
An API key is one click away — and for the first three months you keep 90%.
Get your API key