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
| Method | Path | SDK (client.harbor) |
|---|---|---|
| POST | /v1/harbor/licenses/activate | activate |
| POST | /v1/harbor/licenses/validate | validate |
| GET | /v1/harbor/licenses/{key} | getLicense |
| GET | /v1/licenses/{key}/usage | getLicenseUsage |
Releases & artifacts
| Method | Path | SDK (client.harbor) |
|---|---|---|
| GET | /v1/products/{product}/releases/{version} | getReleaseManifest |
| GET | /v1/products/{product}/releases/{version}/download | downloadReleaseArtifact |
| GET | /v1/releases/{product}/latest | getLatestReleaseCompat |
| GET | /v1/artifacts/{id} | downloadArtifact |
| POST | /v1/releases/verify | verifyRelease |
| GET | /v1/orgs/{org_id}/public-key | getOrgPublicKey |
| GET | /v1/orgs/{org_id}/keys | listOrgKeys |
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).