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.

Pay Widget — a Buy button for any site

Drop one script tag onto any website — your own site, Webflow, Framer, Carrd, a landing page or link-in-bio — and sell a digital product. Buyers pay by card, Apple Pay, Google Pay or crypto; Getly delivers the file, sends the receipt and handles refunds. No Stripe account of your own required.

Explore the Pay Widget
html
<script src="https://www.getly.store/pay.js" async></script>
<button data-getly-buy data-store="STORE_SLUG" data-product="PRODUCT_SLUG">
  Buy now
</button>

One honest fee. Everything included.

Sales you drive through the API or widget are your own traffic — Getly takes 10%, and that is the whole bill. Marketplace-driven sales start at 20% and drop to 12% with volume. Full model at getly.store/pricing — and look at what that one fee actually buys.

What you getGetly — 10% all-in on your own trafficTypical 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 two chains (BNB Smart Chain, Tron). 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:

Everything else — products, files, posts, coupons, checkout links, license keys, webhooks, payout history — is API.

  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.

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.

BotLaunch

Case study

BotLaunch runs its template marketplace on this API

BotLaunch, a no-code platform for Telegram bots and Mini App shops, connects its authors' accounts to Getly and publishes their templates as live Getly products — entirely through the same API this page just showed you.

What BotLaunch built

A BotLaunch author approves a one-time "Connect Getly" authorization from BotLaunch's own dashboard. Getly mints a scoped API key, BotLaunch publishes each template through the v1 write API, and the template is cross-listed for sale on both platforms. Buyers get a one-click "Import to BotLaunch" button next to their license key — purchase to running bot in one click.

Scoped API keys

write:products

Connect Getly mints a read:products + write:products key per author — never a shared credential.

v1 products, write scope

POST /api/v1/products

Each template is created, priced and published through the same products endpoint documented above.

License validate & activate

/api/v1/licenses/*

Public endpoints let a buyer's bot confirm entitlement with no Getly login required.

Partner connect flow

/connect/botlaunch

A short-lived, single-use code — never the raw key — is exchanged for credentials by BotLaunch's backend, not the browser.

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
bash
claude mcp add getly --env GETLY_API_KEY=$GETLY_API_KEY -- npx -y @getly/mcp