API Documentation
SDKs →Authentication
Every apikey-gated endpoint accepts a Developer Platform API key via either header — use whichever fits your HTTP client best.
Authorization: Bearer <your-api-key>
X-API-Key: <your-api-key>
If both headers are present, X-API-Key is checked first. Public catalog endpoints (Products, Releases) and license-key-possession-gated endpoints (activate/deactivate/validate/show under Licenses) don't require an API key at all — see each endpoint below.
A missing or invalid key
Returns 401 in the standard envelope, with no meta key at all:
{
"success": false,
"data": null,
"error": {
"code": "unauthenticated",
"message": "The provided API key is invalid."
}
}
Real messages you may see: "An API key is required.", "The provided API key is invalid.", "This API key has expired.", "This API key is no longer active."
Customer Personal Access Tokens
The Account, Customer Billing, and Customer Support endpoints below use a different credential: a customer's own personal API token, generated from their account at
/account/tokens. Unlike an API key (which belongs to an Application integrating with KMD Hub on behalf of many customers), a customer token only ever grants access to that one customer's own data.
Authorization: Bearer <your-customer-token>
Same header shape as an API key — only the credential and its audience differ. Customer tokens are scoped when created, to one or more of:
| Scope | Grants |
|---|---|
| licenses.read | My Licenses |
| products.read | My Products |
| downloads.read | My Downloads |
| orders.read | My Orders |
| billing.read | My Billing |
| support.read | My Support Tickets |
| activity.read | My Activity |
Only four routes currently enforce a specific ability — GET /customer/licenses (licenses.read), GET /customer/products (products.read), GET /customer/downloads (downloads.read), and GET /customer/activity (activity.read). Every other customer-token-gated endpoint below accepts any valid token regardless of its scopes — each operation's description states which applies.
Rate Limits
Apikey-gated endpoints are throttled per API key (or per IP address for unauthenticated requests). The default ceiling is configurable and shown to every request in response headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Retry-After: 42
An Application's owner can request a custom burst (per-minute) limit and/or an additional daily ceiling — configured per Application by KMD Hub staff, not self-service. Both limits, when set, apply simultaneously.
Exceeding the limit
Returns 429 in the standard envelope:
{
"success": false,
"data": null,
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Please slow down and try again shortly."
}
}
Errors
Every error response — regardless of status code — shares the same shape:
{
"success": false,
"data": null,
"error": {
"code": "product_not_found",
"message": "No product matches the given identifier."
}
}
Real error.code values you may encounter:
| Code | HTTP Status | Meaning |
|---|---|---|
| unauthenticated | 401 | Missing, invalid, expired, or disabled API key. |
| insufficient_scope | 403 | The API key lacks the scope this endpoint requires. |
| product_not_found / license_not_found | 404 | The referenced resource doesn't exist. |
| product_mismatch | 422 | A license activation/validation request referenced the wrong product. |
| download_link_already_used | 409 | A signed, single-use download URL was already consumed. |
| rate_limit_exceeded | 429 | Too many requests — see Rate Limits. |
Pagination & Filtering
Every list endpoint paginates and includes a meta.pagination block:
{
"success": true,
"data": [ ... ],
"error": null,
"meta": {
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 42,
"last_page": 3
}
}
}
Pass ?page=2 to move through results, and (where supported) ?per_page=50 to change the page size.
Sorting
?sort= and ?direction=asc|desc are only supported on three list endpoints — Products, Customers, and Licenses. This isn't a blanket convention across every endpoint; check each endpoint's parameters below before relying on it.
Products
No API key required.
Response Example
[
{
"id": "6303694f-9746-4bdd-bbe8-03123c904e52",
"name": "Voluptas Repudiandae Officiis",
"slug": "voluptas-repudiandae-officiis",
"description": "Numquam quia pariatur officiis quia doloremque nesciunt.",
"status": "active"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/products"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/products');
fetch('https://hub.kwesimooredigital.com/api/v1/products', {
method: 'GET'
}).then(res => res.json());
No API key required.
Parameters
product(path, required)
Response Example
{
"id": "4360b349-3721-4155-81e6-bf0aa365cb5f",
"name": "Et Voluptas Deleniti",
"slug": "et-voluptas-deleniti",
"description": "Commodi est sapiente est.",
"status": "active"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}');
fetch('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}', {
method: 'GET'
}).then(res => res.json());
No API key required.
Parameters
product(path, required)
Response Example
[
{
"version": "1.7.17",
"channel": "stable",
"changelog": "Incidunt similique eum reprehenderit quas dolores sequi ea. Tempore magnam doloremque autem et. Ratione sed corporis temporibus doloremque non delectus aliquid.",
"minimum_php_version": "8.2",
"minimum_wp_version": "6.4",
"published_at": "2026-09-21T14:50:51+00:00",
"checksum_sha256": "85755a7f39ce85191334483de2e7d5e8473d60af1315ed760bfba79bef08367b",
"filesize_bytes": 80569
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/releases"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/releases');
fetch('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/releases', {
method: 'GET'
}).then(res => res.json());
No API key required.
Parameters
product(path, required)
Response Example
{
"version": "2.14.1",
"channel": "stable",
"changelog": "Rerum iste provident molestias nulla laboriosam. Voluptatem quas rem sit voluptatem corrupti. Quas exercitationem adipisci provident voluptas nam pariatur dolorem.",
"minimum_php_version": "8.2",
"minimum_wp_version": "6.4",
"published_at": "2026-09-21T14:50:51+00:00",
"checksum_sha256": "f38251c3b218a9f4a625cd895615f0d90143a4592f95eef4fc829ad81f192a1f",
"filesize_bytes": 3820645
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/latest-release"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/latest-release');
fetch('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/latest-release', {
method: 'GET'
}).then(res => res.json());
No API key required.
Parameters
product(path, required)release(path, required)
Response Example
[]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/download/{RELEASE}"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/download/{RELEASE}');
fetch('https://hub.kwesimooredigital.com/api/v1/products/{PRODUCT}/download/{RELEASE}', {
method: 'GET'
}).then(res => res.json());
Licenses
Requires the `licenses.read` API key scope.
Response Example
[
{
"id": "1e2e9783-91cf-49eb-ae0e-afaac8c796d4",
"license_key": "KMD-VXSE-ERTE-0PGW-BNEP",
"product": "aspernatur-modi-minus",
"type": "lifetime",
"status": "active",
"max_activations": 1,
"activation_count": 0,
"expires_at": null,
"support_expires_at": null
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/licenses" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/licenses');
fetch('https://hub.kwesimooredigital.com/api/v1/licenses', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
No API key required.
Request Body Example
{
"license_key": "KMD-SAMP-LE00-0000",
"product": "kmd-docs-pro",
"domain": "example.com",
"site_url": "https:\/\/example.com"
}
Response Example
{
"id": "fd877b80-c7da-498c-ab2e-6d16172c6d7e",
"domain": "braun.biz",
"site_url": "https:\/\/braun.biz",
"site_name": null,
"wordpress_version": "6.4",
"php_version": "8.2",
"plugin_version": "1.0.0",
"status": "active",
"activated_at": "2026-09-21T14:50:52+00:00",
"last_seen_at": "2026-09-21T14:50:52+00:00"
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/licenses/activate" \
-H "Content-Type: application/json" \
-d '{"license_key":"KMD-SAMP-LE00-0000","product":"kmd-docs-pro","domain":"example.com","site_url":"https://example.com"}'
$response = Http::
->post('https://hub.kwesimooredigital.com/api/v1/licenses/activate', array (
'license_key' => 'KMD-SAMP-LE00-0000',
'product' => 'kmd-docs-pro',
'domain' => 'example.com',
'site_url' => 'https://example.com',
));
fetch('https://hub.kwesimooredigital.com/api/v1/licenses/activate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"license_key":"KMD-SAMP-LE00-0000","product":"kmd-docs-pro","domain":"example.com","site_url":"https://example.com"})
}).then(res => res.json());
No API key required.
Request Body Example
{
"license_key": "KMD-SAMP-LE00-0000",
"product": "kmd-docs-pro",
"domain": "example.com"
}
Response Example
{
"domain": "example.com",
"deactivated": true
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/licenses/deactivate" \
-H "Content-Type: application/json" \
-d '{"license_key":"KMD-SAMP-LE00-0000","product":"kmd-docs-pro","domain":"example.com"}'
$response = Http::
->post('https://hub.kwesimooredigital.com/api/v1/licenses/deactivate', array (
'license_key' => 'KMD-SAMP-LE00-0000',
'product' => 'kmd-docs-pro',
'domain' => 'example.com',
));
fetch('https://hub.kwesimooredigital.com/api/v1/licenses/deactivate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"license_key":"KMD-SAMP-LE00-0000","product":"kmd-docs-pro","domain":"example.com"})
}).then(res => res.json());
No API key required.
Request Body Example
{
"license_key": "KMD-SAMP-LE00-0000",
"product": "kmd-docs-pro",
"domain": "example.com"
}
Response Example
{
"valid": true,
"code": null,
"message": null,
"type": "lifetime",
"status": "active",
"expires_at": null,
"support_expires_at": null,
"support_expired": false,
"activations_used": 1,
"activations_limit": 1
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/licenses/validate" \
-H "Content-Type: application/json" \
-d '{"license_key":"KMD-SAMP-LE00-0000","product":"kmd-docs-pro","domain":"example.com"}'
$response = Http::
->post('https://hub.kwesimooredigital.com/api/v1/licenses/validate', array (
'license_key' => 'KMD-SAMP-LE00-0000',
'product' => 'kmd-docs-pro',
'domain' => 'example.com',
));
fetch('https://hub.kwesimooredigital.com/api/v1/licenses/validate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"license_key":"KMD-SAMP-LE00-0000","product":"kmd-docs-pro","domain":"example.com"})
}).then(res => res.json());
No API key required.
Parameters
license(path, required)
Response Example
{
"id": "39d1768b-4032-4189-9a1a-759af8c870e6",
"license_key": "KMD-ZGFG-W4RF-EXMX-FLGT",
"product": "quis-in-asperiores",
"type": "lifetime",
"status": "active",
"max_activations": 1,
"activation_count": 0,
"expires_at": null,
"support_expires_at": null
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/licenses/{LICENSE}"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/licenses/{LICENSE}');
fetch('https://hub.kwesimooredigital.com/api/v1/licenses/{LICENSE}', {
method: 'GET'
}).then(res => res.json());
No API key required.
Parameters
license(path, required)
Response Example
[
{
"id": "c99f7340-5cab-4390-8300-bc0bb9827b08",
"domain": "keebler.org",
"site_url": "https:\/\/keebler.org",
"site_name": null,
"wordpress_version": "6.4",
"php_version": "8.2",
"plugin_version": "1.0.0",
"status": "active",
"activated_at": "2026-09-21T14:50:52+00:00",
"last_seen_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/licenses/{LICENSE}/activations"
$response = Http::
->get('https://hub.kwesimooredigital.com/api/v1/licenses/{LICENSE}/activations');
fetch('https://hub.kwesimooredigital.com/api/v1/licenses/{LICENSE}/activations', {
method: 'GET'
}).then(res => res.json());
Customers
Requires the `customers.read` API key scope.
Response Example
[
{
"id": "ca15d749-a940-4ff7-b578-5111ac1e3f26",
"name": "Kelley Emard",
"email": "lockman.rocky@example.net",
"company": null,
"status": "active",
"licenses_count": 0,
"orders_count": 0,
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customers" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/customers');
fetch('https://hub.kwesimooredigital.com/api/v1/customers', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `customers.read` API key scope.
Parameters
customer(path, required)
Response Example
{
"id": "f404ae0d-28ed-4ad5-8bd9-a87880d0cc4d",
"name": "Mrs. Natalie Ward DDS",
"email": "shegmann@example.net",
"company": null,
"status": "active",
"licenses_count": 0,
"orders_count": 0,
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customers/{CUSTOMER}" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/customers/{CUSTOMER}');
fetch('https://hub.kwesimooredigital.com/api/v1/customers/{CUSTOMER}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `notifications.read` API key scope.
Parameters
customer(path, required)
Response Example
[
{
"id": "47a99105-3803-4509-bed5-c7a90c221574",
"type": "LicenseRenewed",
"data": {
"license_key": "KMD-SAMP-LE00-0000"
},
"read_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customers/{CUSTOMER}/notifications" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/customers/{CUSTOMER}/notifications');
fetch('https://hub.kwesimooredigital.com/api/v1/customers/{CUSTOMER}/notifications', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Orders
Requires the `orders.read` API key scope.
Response Example
[
{
"id": "604905f2-eb97-4ddb-9670-7ac48445d9bd",
"order_number": "ORD-68854988",
"customer": {
"id": "a59f34d7-be5b-4b84-a324-59140ef178b3",
"name": "Everette Pacocha",
"email": "moore.annamae@example.net"
},
"product": "eaque-ut-esse",
"price_name": "Lifetime License",
"quantity": 1,
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"payment_provider": "lemon_squeezy",
"status": "paid",
"invoice_number": null,
"paid_at": "2026-09-21T14:50:52+00:00",
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/orders" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/orders');
fetch('https://hub.kwesimooredigital.com/api/v1/orders', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `orders.read` API key scope.
Parameters
order(path, required)
Response Example
{
"id": "64c546ea-401a-41fb-b090-65e7010acb64",
"order_number": "ORD-27544053",
"customer": {
"id": "3edd8979-ab86-486d-ae49-f5b89c2490c2",
"name": "Lauretta Will PhD",
"email": "layne.huel@example.net"
},
"product": "necessitatibus-sed-ea",
"price_name": "Lifetime License",
"quantity": 1,
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"payment_provider": "lemon_squeezy",
"status": "paid",
"invoice_number": null,
"paid_at": "2026-09-21T14:50:52+00:00",
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/orders/{ORDER}" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/orders/{ORDER}');
fetch('https://hub.kwesimooredigital.com/api/v1/orders/{ORDER}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Invoices
Requires the `billing.read` API key scope.
Response Example
[
{
"id": "6b526ed1-f125-46b1-93de-2dd0b7ccdc84",
"invoice_number": "INV-98954547",
"customer": {
"id": "0c1c8f48-ae5d-4da8-99f5-2c4aeb9046db",
"name": "Justice Hammes",
"email": "mcclure.morton@example.net"
},
"product_name": "vero ut dolor",
"product_version": "1.0.0",
"license_key": null,
"payment_provider": "lemon_squeezy",
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"issued_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/invoices" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/invoices');
fetch('https://hub.kwesimooredigital.com/api/v1/invoices', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `billing.read` API key scope.
Parameters
invoice(path, required)
Response Example
{
"id": "98047400-4ac4-4780-9b95-315c4c5077c4",
"invoice_number": "INV-21494969",
"customer": {
"id": "c84aecc7-e82f-4700-8bd5-cc5ed58e7ea2",
"name": "Reed Schuppe III",
"email": "arlie.west@example.org"
},
"product_name": "incidunt cum laudantium",
"product_version": "1.0.0",
"license_key": null,
"payment_provider": "lemon_squeezy",
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"issued_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/invoices/{INVOICE}" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/invoices/{INVOICE}');
fetch('https://hub.kwesimooredigital.com/api/v1/invoices/{INVOICE}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Subscriptions
Requires the `billing.read` API key scope.
Response Example
[
{
"id": "4b20be89-1e9f-435f-b388-10028e40ef00",
"customer": {
"id": "6730c078-24a9-44cd-b953-fce340c8fe4f",
"name": "Prof. Herman Kuhic",
"email": "virgie27@example.org"
},
"product": "numquam-vero-ut",
"price_name": "Lifetime License",
"status": "active",
"renews_at": "2026-10-21T14:50:52+00:00",
"ends_at": null,
"cancelled_at": null,
"trial_ends_at": null
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/subscriptions" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/subscriptions');
fetch('https://hub.kwesimooredigital.com/api/v1/subscriptions', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `billing.read` API key scope.
Parameters
subscription(path, required)
Response Example
{
"id": "20272312-1939-4f16-8dd8-108af350f630",
"customer": {
"id": "3e7a8843-3766-4dbb-9ce0-f55e83cd5c69",
"name": "Karlie Schowalter",
"email": "bednar.selmer@example.com"
},
"product": "et-nesciunt-sed",
"price_name": "Lifetime License",
"status": "active",
"renews_at": "2026-10-21T14:50:52+00:00",
"ends_at": null,
"cancelled_at": null,
"trial_ends_at": null
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/subscriptions/{SUBSCRIPTION}" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/subscriptions/{SUBSCRIPTION}');
fetch('https://hub.kwesimooredigital.com/api/v1/subscriptions/{SUBSCRIPTION}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Downloads
Requires the `downloads.read` API key scope.
Response Example
[
{
"id": "8e062df1-ca1d-491f-b407-351391c00a53",
"customer": {
"id": "304550ea-92ff-4bb0-a0eb-0a9fdd34c633",
"name": "Dana O'Conner PhD",
"email": "camilla.turner@example.com"
},
"product": "quisquam-quae-sed",
"version": "0.14.4",
"downloaded_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/downloads" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/downloads');
fetch('https://hub.kwesimooredigital.com/api/v1/downloads', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `downloads.read` API key scope.
Parameters
download(path, required)
Response Example
{
"id": "f4e50fd9-c12d-425b-b5d3-957eb3be769a",
"customer": {
"id": "7a0c8c25-8e0a-446a-b980-a52d84f96353",
"name": "Bette Wintheiser",
"email": "tremayne.bins@example.net"
},
"product": "aut-voluptatibus-et",
"version": "4.5.3",
"downloaded_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/downloads/{DOWNLOAD}" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/downloads/{DOWNLOAD}');
fetch('https://hub.kwesimooredigital.com/api/v1/downloads/{DOWNLOAD}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Support
Requires the `support.read` API key scope.
Response Example
[
{
"id": "735f0aa6-e808-4d31-a8bf-5f937b082094",
"ticket_number": "TKT-23096035",
"customer": {
"id": "a60d64a0-1626-4bfc-b816-138ef20c5ba6",
"name": "Henriette Toy",
"email": "streich.may@example.com"
},
"subject": "Suscipit sint ut esse sunt enim suscipit.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/support/tickets" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/support/tickets');
fetch('https://hub.kwesimooredigital.com/api/v1/support/tickets', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Requires the `support.read` API key scope.
Parameters
ticket(path, required)
Response Example
{
"id": "2d66a6ff-e67e-41ec-9cd3-58cc4fc6426d",
"ticket_number": "TKT-87865109",
"customer": {
"id": "52c0306c-1de6-4dce-bacc-09607d5f313b",
"name": "Belle Quitzon",
"email": "ziemann.simeon@example.com"
},
"subject": "Ex cumque dolorem ut est doloribus laudantium.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/support/tickets/{TICKET}" \
-H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/support/tickets/{TICKET}');
fetch('https://hub.kwesimooredigital.com/api/v1/support/tickets/{TICKET}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Activity Logs
Requires the `activity.read` API key scope.
Response Example
[
{
"id": 92,
"action": "license.created",
"description": "Sample license created.",
"properties": [],
"subject": {
"type": "license",
"id": 53
},
"causer": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/activity-logs" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/activity-logs');
fetch('https://hub.kwesimooredigital.com/api/v1/activity-logs', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Settings
Requires the `settings.read` API key scope.
Response Example
[
{
"key": "non-autem-nesciunt",
"value": "voluptates",
"type": "string",
"group": "general",
"updated_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/settings" \ -H "Authorization: Bearer YOUR_API_KEY"
$response = Http::
->withToken('YOUR_API_KEY')
->get('https://hub.kwesimooredigital.com/api/v1/settings');
fetch('https://hub.kwesimooredigital.com/api/v1/settings', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}).then(res => res.json());
Account
Requires any valid customer token (no specific ability enforced).
Response Example
{
"id": "e855a712-5784-40cc-a012-c52388b6b9e0",
"name": "Wilma Schumm",
"email": "waelchi.wilford@example.org",
"company": null,
"avatar_url": null,
"country": null,
"timezone": null,
"preferred_language": "en",
"email_verified": true,
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer');
fetch('https://hub.kwesimooredigital.com/api/v1/customer', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires a customer token with the `licenses.read` ability.
Response Example
[
{
"id": "673773cf-6d0d-46b2-b15f-9f7e1d2f3776",
"license_key": "KMD-RM9P-O7NS-15XW-MT39",
"product": "laborum-aut-magnam",
"type": "lifetime",
"status": "active",
"max_activations": 1,
"activation_count": 0,
"expires_at": null,
"support_expires_at": null
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/licenses" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/licenses');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/licenses', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires a customer token with the `products.read` ability.
Response Example
[
{
"id": "708b5aea-0ca1-4af0-a511-6e286474d5d7",
"name": "Quaerat Sunt Quo",
"slug": "quaerat-sunt-quo",
"description": "Qui quam est voluptatum rerum consequatur reprehenderit architecto nostrum.",
"status": "active"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/products" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/products');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/products', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires a customer token with the `downloads.read` ability.
Response Example
[
{
"id": "d2a08f38-4a88-4cf4-9fbf-60dcbf95d617",
"product": "blanditiis-qui-et",
"version": "2.17.18",
"downloaded_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/downloads" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/downloads');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/downloads', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires a customer token with the `activity.read` ability.
Response Example
[
{
"action": "license.created",
"description": "Sample license created.",
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/activity" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/activity');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/activity', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Customer Billing
Requires any valid customer token (no specific ability enforced).
Response Example
[
{
"product": "numquam-nisi-consequatur",
"product_name": "Numquam Nisi Consequatur",
"latest_order_number": "ORD-04864711",
"latest_order_total": 9900,
"currency": "USD",
"purchased_at": "2026-09-21T14:50:52+00:00",
"license_key": "KMD-WBGN-CBWE-5Q25-P8IE",
"license_status": "active"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/purchases" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/purchases');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/purchases', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Response Example
[
{
"id": "ab3a73a8-2a43-4736-9218-0297f8e09582",
"order_number": "ORD-40472786",
"product": "commodi-saepe-repellat",
"price_name": "Lifetime License",
"quantity": 1,
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"payment_provider": "lemon_squeezy",
"status": "paid",
"invoice_number": null,
"paid_at": "2026-09-21T14:50:52+00:00",
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/orders" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/orders');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/orders', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
order(path, required)
Response Example
{
"id": "45e686ef-d22d-4546-9d33-d15f8413f4b4",
"order_number": "ORD-79722003",
"product": "et-nostrum-totam",
"price_name": "Lifetime License",
"quantity": 1,
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"payment_provider": "lemon_squeezy",
"status": "paid",
"invoice_number": null,
"paid_at": "2026-09-21T14:50:52+00:00",
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/orders/{ORDER}" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/orders/{ORDER}');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/orders/{ORDER}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Response Example
[
{
"id": "68f4ae97-4f24-46e6-9b22-b58f207809b5",
"invoice_number": "INV-29846404",
"product_name": "tempora qui et",
"product_version": "1.0.0",
"license_key": null,
"payment_provider": "lemon_squeezy",
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"issued_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/invoices" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/invoices');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/invoices', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
invoice(path, required)
Response Example
{
"id": "ba703227-bb0f-4fad-adfd-886cebc3fc99",
"invoice_number": "INV-98383173",
"product_name": "sunt eveniet ut",
"product_version": "1.0.0",
"license_key": null,
"payment_provider": "lemon_squeezy",
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"issued_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/invoices/{INVOICE}" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/invoices/{INVOICE}');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/invoices/{INVOICE}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Response Example
[
{
"id": "be88eaa4-58af-443a-a5eb-f8ad9a5e62dd",
"product": "odit-dolor-vero",
"price_name": "Lifetime License",
"status": "active",
"renews_at": "2026-10-21T14:50:52+00:00",
"ends_at": null,
"cancelled_at": null,
"trial_ends_at": null
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
subscription(path, required)
Response Example
{
"id": "583d73c4-8db6-4102-a350-198546fa20ee",
"product": "eveniet-repudiandae-nam",
"price_name": "Lifetime License",
"status": "active",
"renews_at": "2026-10-21T14:50:52+00:00",
"ends_at": null,
"cancelled_at": null,
"trial_ends_at": null
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions/{SUBSCRIPTION}" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions/{SUBSCRIPTION}');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions/{SUBSCRIPTION}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
subscription(path, required)
Response Example
{
"id": "e4b95df5-3252-4b2c-b9d8-00c433725caa",
"product": "ullam-id-consequatur",
"price_name": "Lifetime License",
"status": "active",
"renews_at": "2026-10-21T14:50:52+00:00",
"ends_at": null,
"cancelled_at": null,
"trial_ends_at": null
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions/{SUBSCRIPTION}/cancel" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions/{SUBSCRIPTION}/cancel');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/subscriptions/{SUBSCRIPTION}/cancel', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
price(path, required)
Request Body Example
{
"payment_provider": "lemon_squeezy",
"coupon_code": null
}
Response Example
{
"redirect_url": "https:\/\/checkout.lemonsqueezy.com\/session\/abc123"
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/billing/checkout/{PRICE}" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"payment_provider":"lemon_squeezy","coupon_code":null}'
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/billing/checkout/{PRICE}', array (
'payment_provider' => 'lemon_squeezy',
'coupon_code' => NULL,
));
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/checkout/{PRICE}', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({"payment_provider":"lemon_squeezy","coupon_code":null})
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Request Body Example
{
"reference": "txn_1a2b3c4d"
}
Response Example
{
"successful": true,
"order": {
"id": "7305cda8-c775-4dd6-9ae9-ea430588b6b3",
"order_number": "ORD-58818110",
"product": "dolor-voluptatum-rerum",
"price_name": "Lifetime License",
"quantity": 1,
"currency": "USD",
"subtotal": 9900,
"discount": 0,
"tax": 0,
"total": 9900,
"payment_provider": "lemon_squeezy",
"status": "paid",
"invoice_number": null,
"paid_at": "2026-09-21T14:50:52+00:00",
"created_at": "2026-09-21T14:50:52+00:00"
}
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/billing/payment-verification" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"reference":"txn_1a2b3c4d"}'
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/billing/payment-verification', array (
'reference' => 'txn_1a2b3c4d',
));
fetch('https://hub.kwesimooredigital.com/api/v1/customer/billing/payment-verification', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({"reference":"txn_1a2b3c4d"})
}).then(res => res.json());
Customer Support
Requires any valid customer token (no specific ability enforced).
Response Example
[
{
"id": "a9169c0a-3658-441c-8724-6dbcab7c65c9",
"ticket_number": "TKT-40791342",
"customer": {
"id": "7f9d60f6-1aee-4686-b879-e4ab525ccd44",
"name": "Dr. Vincent Mann V",
"email": "sarai79@example.net"
},
"subject": "Iusto dolorum pariatur blanditiis et non ut.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/support/search" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/support/search');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/search', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Response Example
[
{
"id": "cc4d20f2-64c5-4173-9b01-0827c31fd9df",
"ticket_number": "TKT-77457733",
"customer": {
"id": "6535bff6-d99b-451b-8865-51c499016e37",
"name": "Nolan Kessler",
"email": "zella16@example.net"
},
"subject": "Accusantium cumque assumenda eum alias qui optio sunt.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
]
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/support/tickets" \ -H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Request Body Example
{
"subject": "Cannot activate my license",
"category": "licensing",
"priority": "normal",
"product_id": 1,
"license_id": null,
"body": "My license key won't activate on my production domain."
}
Response Example
{
"id": "5e1172bb-cf60-4cf6-bc00-6eacc93bc52e",
"ticket_number": "TKT-70644559",
"customer": {
"id": "bb8ab762-4319-408e-9e3d-623ad5f5504d",
"name": "Dr. Barbara Romaguera I",
"email": "corene23@example.com"
},
"subject": "Neque velit rerum recusandae dolorum.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/support/tickets" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"subject":"Cannot activate my license","category":"licensing","priority":"normal","product_id":1,"license_id":null,"body":"My license key won't activate on my production domain."}'
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets', array (
'subject' => 'Cannot activate my license',
'category' => 'licensing',
'priority' => 'normal',
'product_id' => 1,
'license_id' => NULL,
'body' => 'My license key won\'t activate on my production domain.',
));
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({"subject":"Cannot activate my license","category":"licensing","priority":"normal","product_id":1,"license_id":null,"body":"My license key won't activate on my production domain."})
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
ticket(path, required)
Response Example
{
"id": "97137681-5dad-44de-859f-29cc1766bb1d",
"ticket_number": "TKT-59228062",
"customer": {
"id": "4eb379c0-1125-49c9-9786-d5a651b4c707",
"name": "Jason Quitzon",
"email": "greenfelder.jonas@example.com"
},
"subject": "Vel quaerat debitis itaque doloribus quas odio eos.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X GET "https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->get('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}', {
method: 'GET',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
ticket(path, required)
Request Body Example
{
"body": "Thanks \u2014 that fixed it for me."
}
Response Example
{
"id": "0c0a0f26-04dc-4718-b1bc-50f0658e72d2",
"author_role": "customer",
"author_name": "Edison Hintz",
"body": "Suscipit aut numquam nesciunt atque laborum natus molestias. Id maiores ad ut voluptates qui quas vel.",
"is_edited": false,
"attachments": [],
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/reply" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"Thanks \u2014 that fixed it for me."}'
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/reply', array (
'body' => 'Thanks — that fixed it for me.',
));
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/reply', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN', 'Content-Type': 'application/json' },
body: JSON.stringify({"body":"Thanks \u2014 that fixed it for me."})
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
ticket(path, required)
Response Example
{
"id": "2973ad9a-ec76-4328-8c60-1d8f2c3a7d31",
"ticket_number": "TKT-82028591",
"customer": {
"id": "913d0347-5e12-4802-a02b-53a046f4b6b2",
"name": "Ruthe Goyette",
"email": "markus.sipes@example.org"
},
"subject": "Non quia non quidem explicabo unde.",
"category": "general",
"status": "open",
"priority": "normal",
"product": null,
"assigned_agent": null,
"messages": [],
"first_responded_at": null,
"resolved_at": null,
"closed_at": null,
"last_reply_at": null,
"created_at": "2026-09-21T14:50:52+00:00"
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/close" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/close');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/close', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());
Requires any valid customer token (no specific ability enforced).
Parameters
ticket(path, required)
Response Example
{
"id": "f886a71f-daa6-4442-a5d4-2d94381f6a00",
"filename": "contract.pdf"
}
curl -X POST "https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/attachments" \
-H "Authorization: Bearer YOUR_CUSTOMER_TOKEN"
$response = Http::
->withToken('YOUR_CUSTOMER_TOKEN')
->post('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/attachments');
fetch('https://hub.kwesimooredigital.com/api/v1/customer/support/tickets/{TICKET}/attachments', {
method: 'POST',
headers: { 'Authorization': 'Bearer YOUR_CUSTOMER_TOKEN' }
}).then(res => res.json());