Skip to content
On this page

REST API reference

Licenses

Purchase codes and license keys stored for the team's customers, and live checks against the marketplace. Admin and owner tokens only, as they reveal customer data. Verifying never stores or changes anything, so a read-only token is enough.

Every request needs a bearer token: an API key or an OAuth access token. See authentication and scopes.

api.v1.licenses.index

GET/api/v1/licenses

List stored licenses, newest first.

Scope
licenses:read
Unscoped key
Read-only or read-write

Query parameters

purchase_codestring
Exact purchase code or license key, as issued or in all lower or upper case.
customer_idstring
Customer id.
marketplacestring
envato, shopify, wordpress, gumroad, lemonsqueezy, independent.
product_idinteger
Product id.
external_license_idstring
The marketplace's own id for the license or order.
per_pageinteger
1-100, default 25.
cursorstring
meta.next_cursor from the previous page.
Request
curl https://zono.support/api/v1/licenses?purchase_code=86781236-23d0-4b3c-7dfa-c1c147e0dece \
  -H "Authorization: Bearer $ZONO_TOKEN" \
  -H "Accept: application/json"
Response200 OK
{
    "data": [
        {
            "object": "license",
            "id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
            "purchase_code": "purchase_code",
            "marketplace": "envato",
            "external_license_id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
            "product": {
                "id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
                "name": "Billing"
            },
            "customer": {
                "id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
                "name": "Billing",
                "email": "[email protected]"
            },
            "license_type": "license_type",
            "is_active": true,
            "has_active_support": true,
            "support_status": "support_status",
            "purchase_date": "2026-01-15T10:24:07Z",
            "support_until": "2026-01-15T10:24:07Z",
            "verification_source": "verification_source",
            "last_verified_at": "2026-01-15T10:24:07Z",
            "created_at": "2026-01-15T10:24:07Z"
        }
    ],
    "links": {
        "first": null,
        "last": null,
        "prev": null,
        "next": "https://zono.support/api/v1/licenses?cursor=eyJpZCI6IjAxajl4MnAzcTQiLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9"
    },
    "meta": {
        "path": "https://zono.support/api/v1/licenses",
        "per_page": 25,
        "next_cursor": "eyJpZCI6IjAxajl4MnAzcTQiLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
        "prev_cursor": null
    }
}

api.v1.licenses.verify

POST/api/v1/licenses/verify

Check a key live against the marketplace. Returns valid, a short summary (item, buyer, license type, dates), and the stored license and customer if any. Limited to 30 requests per minute per token.

Scope
licenses:read
Unscoped key
Read-only or read-write

Body parameters

license_keystringRequired
The purchase code or license key.
product_idinteger
Verify the way this product is set up to (no license, manual or automatic).
marketplacestring
Marketplace to ask when no product is given. Defaults to the stored license's marketplace, then the team's primary one.
Request
curl -X POST https://zono.support/api/v1/licenses/verify \
  -H "Authorization: Bearer $ZONO_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"license_key":"86781236-23d0-4b3c-7dfa-c1c147e0dece","marketplace":"envato"}'
Response200 OK
{
    "object": "license_verification",
    "valid": true,
    "error": "error",
    "marketplace": "envato",
    "mode": "mode",
    "summary": {
        "item": "item",
        "buyer": "buyer",
        "buyer_email": "buyer_email",
        "license_type": "license_type",
        "status": "status",
        "purchased_at": "2026-01-15T10:24:07Z",
        "supported_until": "supported_until"
    },
    "license": {
        "object": "license",
        "id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
        "purchase_code": "purchase_code",
        "marketplace": "envato",
        "external_license_id": "01j9x0a1b2c3d4e5f6g7h8j9k0",
        "product": null,
        "customer": null,
        "license_type": "license_type",
        "is_active": true,
        "has_active_support": true,
        "support_status": "support_status",
        "purchase_date": "2026-01-15T10:24:07Z",
        "support_until": "2026-01-15T10:24:07Z",
        "verification_source": "verification_source",
        "last_verified_at": "2026-01-15T10:24:07Z",
        "created_at": "2026-01-15T10:24:07Z"
    },
    "customer": {
        "object": "customer",
        "id": "01j9x1c2d3e4f5g6h7j8k9m0n1",
        "name": "Ada Lovelace",
        "email": "[email protected]",
        "external_id": "crm-5521",
        "avatar": null,
        "has_deliverable_email": true,
        "created_at": "2026-01-15T09:58:12Z",
        "updated_at": "2026-01-15T09:58:12Z",
        "url": "https://zono.support/customers/01j9x1c2d3e4f5g6h7j8k9m0n1"
    }
}