Sell on Cothery

Cothery Developer Portal

Integrate Cothery licensing into your products. Verify purchases, manage activations, and automate your workflow with our API and webhooks.

Getting Started

Everything you need to integrate Cothery licensing into your product

How It Works

When a customer purchases your product on Cothery, a unique license key is generated. You can use our API to verify that the customer has a valid license before granting access to your software or its features.

1

Customer Buys

Purchase on Cothery

2

License Issued

Key generated automatically

3

Your Script Verifies

API call from your code

Access Granted

Unlock full product

Authentication

All API requests require an API key sent in the Authorization header.

HTTP Header
Authorization: Bearer your-api-key-here

You can generate API keys from your Vendor Dashboard → Settings page.

Base URL

https://cothery.com/api/v1

Quick Example: Verify a License

curl -X POST https://cothery.com/api/v1/licenses/verify \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "license_key": "XXXX-XXXX-XXXX-XXXX",
    "domain": "example.com"
  }'
$response = Http::withToken('YOUR_API_KEY')
    ->post('https://cothery.com/api/v1/licenses/verify', [
        'license_key' => $licenseKey,
        'domain'     => $_SERVER['HTTP_HOST'],
    ]);

if ($response->json('valid')) {
    // License is valid — unlock product
} else {
    // License invalid or expired
}
const res = await fetch('https://cothery.com/api/v1/licenses/verify', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    license_key: licenseKey,
    domain: window.location.hostname,
  }),
});

const data = await res.json();
if (data.valid) {
  // License is valid
}
import requests

response = requests.post(
    'https://cothery.com/api/v1/licenses/verify',
    headers={'Authorization': f'Bearer {API_KEY}'},
    json={
        'license_key': license_key,
        'domain': domain,
    }
)

data = response.json()
if data['valid']:
    # License is valid
    pass

Ready to integrate?

Check out the full API reference for all endpoints, or follow the integration checklist for a step-by-step guide.