API Reference

The GeckoGuard API is a RESTful API that uses JSON for request and response bodies.

Base URL

All API requests should be made to:

https://api.geckoguard.com

Authentication

Most endpoints require authentication. There are two auth methods:

  • Session Token (JWT): Used by the dashboard for management operations. Passed via Authorization: Bearer <token>.
  • API Key: Used by your application for license validation and programmatic access. Passed via Authorization: Bearer <api_key>.

See the Authentication guide for details.

Request Format

  • Content-Type: application/json header for POST/PATCH requests
  • JSON body for POST/PATCH requests
  • Query parameters for filtering and pagination

Response Format

All responses follow this structure:

{
  "ok": true,
  "data": { /* response data */ }
}

Error responses:

{
  "ok": false,
  "error": {
    "message": "Error description",
    "code": "ERROR_CODE"
  }
}

Pagination

List endpoints support pagination via query parameters:

GET /v1/dashboard/orgs/:orgId/licenses?page=1&pageSize=50

Rate Limiting

  • With API key: 120 requests/minute per IP
  • Without API key: 60 requests/minute per IP

Rate limit headers:

X-Ratelimit-Limit: 120
X-Ratelimit-Remaining: 115
X-Ratelimit-Reset: 1640995200

Endpoints Overview

License Validation (API Key Auth)

MethodEndpointDescription
POST/v1/licenses/authorizeValidate a license key (requires license:authorize permission)

Organizations

MethodEndpointDescription
GET/v1/dashboard/orgsList your organizations
POST/v1/dashboard/orgsCreate an organization
GET/v1/dashboard/orgs/:orgIdGet organization details
PATCH/v1/dashboard/orgs/:orgIdUpdate organization
DELETE/v1/dashboard/orgs/:orgIdDelete organization

Products

MethodEndpointDescription
POST/v1/dashboard/productsCreate a product
GET/v1/dashboard/products/:idGet product details
PATCH/v1/dashboard/products/:idUpdate product (name, policy)
DELETE/v1/dashboard/products/:idDelete product
GET/v1/dashboard/orgs/:orgId/productsList products in an org
POST/v1/dashboard/orgs/:orgId/productsAdd product to org
DELETE/v1/dashboard/orgs/:orgId/products/:productIdRemove product from org

Licenses

MethodEndpointDescription
GET/v1/dashboard/orgs/:orgId/licensesList licenses (filterable by product, status, search)
POST/v1/dashboard/orgs/:orgId/licensesCreate license(s) — supports bulk creation up to 500
GET/v1/dashboard/orgs/:orgId/licenses/analyticsLicense analytics (counts by status, product)
GET/v1/dashboard/orgs/:orgId/licenses/expiringList licenses expiring soon
GET/v1/dashboard/orgs/:orgId/licenses/exportExport licenses as CSV or JSON
POST/v1/dashboard/orgs/:orgId/licenses/importBulk import licenses
POST/v1/dashboard/orgs/:orgId/licenses/freezeBulk freeze licenses
POST/v1/dashboard/orgs/:orgId/licenses/unfreezeBulk unfreeze licenses
POST/v1/dashboard/orgs/:orgId/licenses/revokeBulk revoke licenses
POST/v1/dashboard/orgs/:orgId/licenses/unrevokeBulk restore revoked licenses
POST/v1/dashboard/orgs/:orgId/licenses/extendBulk extend license expiry
DELETE/v1/dashboard/orgs/:orgId/licensesBulk delete licenses

Per-License Endpoints (via dashboard)

MethodEndpointDescription
GET/v1/dashboard/licenses/:idGet single license details
PATCH/v1/dashboard/licenses/:idUpdate license (status, expiry, policy, freeze)
POST/v1/dashboard/licenses/:id/revokeRevoke a license
POST/v1/dashboard/licenses/:id/unrevokeRestore a revoked license
POST/v1/dashboard/licenses/:id/reset-hwidReset HWID bindings
POST/v1/dashboard/licenses/:id/reset-ipReset IP bindings
POST/v1/dashboard/licenses/redeemRedeem a license key

Sessions

MethodEndpointDescription
GET/v1/dashboard/licenses/:id/sessionsList active sessions for a license
POST/v1/dashboard/licenses/:id/sessions/:sessionId/revokeKill a specific session
POST/v1/dashboard/licenses/:id/sessions/revoke-allKill all sessions for a license

API Keys

MethodEndpointDescription
POST/v1/dashboard/api-keysCreate an API key (with optional permissions)
GET/v1/dashboard/api-keys?productId=List API keys for a product
PATCH/v1/dashboard/api-keys/:idUpdate API key (name, permissions)
DELETE/v1/dashboard/api-keys/:idDelete an API key
POST/v1/dashboard/api-keys/:id/rotateRotate an API key secret
POST/v1/dashboard/api-keys/:id/revokeRevoke an API key

App Variables

MethodEndpointDescription
GET/v1/dashboard/app-variables/products/:productIdList variables (scope: GLOBAL or USER)
DELETE/v1/dashboard/app-variables/products/:productId/:variableIdDelete a variable
GET/v1/app-variables?productId=&licenseId=Public: fetch variables for a license (client use)

App Versions

MethodEndpointDescription
GET/v1/dashboard/app-versions/products/:productIdList versions for a product
POST/v1/dashboard/app-versions/products/:productIdCreate a new version
PATCH/v1/dashboard/app-versions/products/:productId/:versionIdUpdate a version
DELETE/v1/dashboard/app-versions/products/:productId/:versionIdDelete a version
POST/v1/app-versions/check-updatePublic: check for updates (client use)

Blacklists

MethodEndpointDescription
GET/v1/dashboard/blacklists/products/:productIdList blacklist entries (filter by type: HWID or IP)
POST/v1/dashboard/blacklists/products/:productIdAdd a blacklist entry
POST/v1/dashboard/blacklists/products/:productId/bulkBulk add blacklist entries
DELETE/v1/dashboard/blacklists/products/:productId/:entryIdRemove a blacklist entry

Product Files

MethodEndpointDescription
GET/v1/dashboard/product-files/products/:productIdList files for a product
POST/v1/dashboard/product-files/products/:productIdUpload a file
DELETE/v1/dashboard/product-files/products/:productId/:fileIdDelete a file
GET/v1/product-files/download/:fileIdDownload a file (requires valid license)

Webhooks

MethodEndpointDescription
Configured per productWebhook eventslicense.authorized, license.created, etc.

Team & Invites

MethodEndpointDescription
GET/v1/dashboard/orgs/:orgId/membersList org members
PATCH/v1/dashboard/orgs/:orgId/members/:memberIdUpdate member role
DELETE/v1/dashboard/orgs/:orgId/members/:memberIdRemove member
POST/v1/dashboard/orgs/:orgId/invitesInvite a member (email + role)
GET/v1/dashboard/orgs/:orgId/invitesList pending invites
POST/v1/dashboard/orgs/:orgId/invites/:inviteId/revokeRevoke an invite
POST/v1/dashboard/orgs/:orgId/invites/:inviteId/resendResend an invite email
POST/v1/dashboard/orgs/:orgId/transfer-ownershipTransfer org ownership

Analytics

MethodEndpointDescription
GET/v1/dashboard/orgs/:orgId/analyticsFull analytics dashboard (time-series + totals)
GET/v1/dashboard/orgs/:orgId/licenses/analyticsLicense status breakdown

Subscriptions & Plans (End User)

MethodEndpointDescription
GET/v1/dashboard/plans?productId=List available plans
GET/v1/dashboard/subscriptionsList user's subscriptions
POST/v1/dashboard/subscriptions/startStart a subscription
POST/v1/dashboard/subscriptions/cancelCancel a subscription
POST/v1/dashboard/subscriptions/reactivateReactivate a cancelled subscription
GET/v1/dashboard/entitlementsList user's entitlements

End User Portal

MethodEndpointDescription
POST/v1/enduser/auth/registerRegister end user account
POST/v1/enduser/auth/loginLogin as end user
POST/v1/enduser/auth/logoutLogout
GET/v1/enduser/meGet current end user profile
GET/v1/enduser/licensesList end user's licenses
POST/v1/enduser/licenses/redeemRedeem a license key

See API Errors for error handling details.