Skip to main content
Getly

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.

  1. Create a draft product

    Prices are integer cents (priceCents). The product starts as a draft — nothing is public yet.

    bash
    curl -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"
        }
      }
    }
  2. 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.

    bash
    curl -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
      }
    }
  3. Upload the file and attach it

    PUT the raw bytes to the upload URL, then attach the returned fileUrl to the product.

    bash
    curl -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
      }
    }
  4. Publish

    One call flips the product live. If anything is missing, you get machine-readable reasons instead of a vague error.

    bash
    curl -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"
        }
      }
    }
  5. Your product is live

    Buyers pay by card or crypto — guest checkout, no account needed. Files are delivered automatically.

    bash
    open 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

bash
claude mcp add getly --env GETLY_API_KEY=$GETLY_API_KEY -- npx -y @getly/mcp

Cursor

.cursor/mcp.json
{
  "mcpServers": {
    "getly": {
      "command": "npx",
      "args": ["-y", "@getly/mcp"],
      "env": { "GETLY_API_KEY": "getly_sk_live_..." }
    }
  }
}

Claude Desktop

claude_desktop_config.json
{
  "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 getGetly — 20% all-inTypical payment-API providers
Payment processing (cards + crypto)Included4–10% + fixed fees per transaction
File hosting & delivery up to 2 GBIncludedYou host and serve files yourself
Marketplace traffic & SEOIncluded — your products are listed on GetlyYou bring 100% of the traffic
Built-in affiliate networkIncludedBuild and pay for your own
Crypto payouts (USDT/USDC)Included — 5 chains, no bank account neededRarely offered
License key issuing & validationIncludedA 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:

  1. Sign up

    Google, GitHub or a magic link. Thirty seconds.

  2. Create an API key

    One click in the dashboard — it also creates your store. Pick only the scopes you need.

  3. 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:products

Products

Create, update, publish and archive products; upload files up to 2 GB via presigned URLs.

write:posts

Blog posts

Markdown-first store blog with product embeds — content marketing from a cron job.

write:coupons

Coupons

Percentage or fixed discounts with usage limits and expiry — with guardrails against accidental 100%-off.

checkout:create

Checkout 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:licenses

License keys

Auto-issued on purchase; validate and activate from your software via a public, secret-free endpoint.

webhooks:manage

Webhooks

Signed events (sale.completed, license.activated and more) with a timestamped HMAC signature scheme.

read:store

Payouts

Read your balance and payout history across both rails — Stripe and stablecoins.

Specs & references

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