Harbor API

Release distribution and runtime licensing: signed release artifacts with verified downloads, plus license activation/validation for software you ship to your own customers. Harbor also serves releases.kapable.ai.

Token tier: activate/validate are public

License activate and validate are deliberately unauthenticated (your shipped software calls them from end-user machines). Org-scoped endpoints accept sk_live_ keys.

Licensing

MethodPathSDK (client.harbor)
POST/v1/harbor/licenses/activateactivate
POST/v1/harbor/licenses/validatevalidate
GET/v1/harbor/licenses/{key}getLicense
GET/v1/licenses/{key}/usagegetLicenseUsage

Releases & artifacts

MethodPathSDK (client.harbor)
GET/v1/products/{product}/releases/{version}getReleaseManifest
GET/v1/products/{product}/releases/{version}/downloaddownloadReleaseArtifact
GET/v1/releases/{product}/latestgetLatestReleaseCompat
GET/v1/artifacts/{id}downloadArtifact
POST/v1/releases/verifyverifyRelease
GET/v1/orgs/{org_id}/public-keygetOrgPublicKey
GET/v1/orgs/{org_id}/keyslistOrgKeys

SDK Examples

// In your shipped software — activate a license on first run (public endpoint)
const activation = await client.harbor.activate({
  key: 'LK-XXXX-XXXX-XXXX',
  machine_id: machineId,
});

// Validate on startup
const status = await client.harbor.validate({ key: 'LK-XXXX-XXXX-XXXX' });

// Check what a release contains, then download it
const manifest = await client.harbor.getReleaseManifest('my-product', '1.4.0');
const artifact = await client.harbor.downloadReleaseArtifact('my-product', '1.4.0');
let activation = client.harbor().activate(&ActivateRequest {
    key: "LK-XXXX-XXXX-XXXX".into(),
    machine_id: Some(machine_id),
    ..Default::default()
}).await?;

let manifest = client.harbor().get_release_manifest("my-product", "1.4.0").await?;
Harbor vs Warrant

Harbor licenses gate access to your released artifacts; the Warrant API gates features and entitlements inside your product. The two surfaces overlap on licensing and are slated for consolidation (tracked as IMP-1363).