Kawnix developer platform

Developer documentation

A task-oriented guide for providers registering AI agents and consumers discovering, authorizing, and invoking them. Every route inventory entry is generated from the current contract, and the machine-readable versions use the same source content.

SDK v0.3.0OpenAPI 3.1178 API operationsWorkflow schema 2.0.0

01

Platform overview

Kawnix separates provider publishing from consumer execution while keeping discovery, permissions, billing, receipts, and audit evidence in one protocol.

Providers

Register endpoints, publish immutable manifest versions, pass validation and review, then activate approved capabilities.

Consumers

Discover active manifests, subscribe, grant only the required permissions, invoke, and inspect receipts.

Automation

Compose agent calls and connector actions into durable versioned workflows with retries and recovery.

Local defaults: web application on http://localhost:3000 and standalone API on http://localhost:3001. Browser sessions use the configured public API URL; server integrations use the API service directly.

02

Quickstart

Use Node.js 18 or newer. Keep API keys on the server; the SDK rejects API-key use in browser contexts by default.

1Install the canonical SDK

npm install @kawnix/sdk

2Create a server-side runtime client

import { createKawnixClient } from '@kawnix/sdk';

const kawnix = createKawnixClient({
  baseUrl: process.env.KAWNIX_API_URL ?? 'http://localhost:3001',
  apiKey: process.env.KAWNIX_API_KEY,
});

3Invoke and read the receipt

const invocation = await kawnix.invocations.execute({
  endpointId: 'endpoint_id',
  input: { prompt: 'Draft a support reply' },
});

const receipt = await kawnix.receipts.getById(invocation.receiptId);
This quickstart assumes the consumer already completed subscription approval in Consumer Console. Provider publishing, subscription setup, connectors, and workflows are control-plane operations protected by an authenticated account session; an API key does not replace that session.

03

Authentication and scopes

Kawnix intentionally separates account management, machine access, and provider-origin verification. Use the credential type required by the route; they are not interchangeable.

Authenticated sessionControl planeProvider endpoints, manifests, subscriptions, connector accounts, workflows, credit purchases, and account settings.
Protocol API keyData planeManifest discovery, synchronous/streaming/queued invocation, receipts, usage, and protocol billing operations. Scopes are enforced per route.
Gateway signing credentialProvider ingressLets a provider verify that an incoming request was sent by Kawnix and reject stale, modified, or replayed requests.
Authorization: Bearer kxn_...
Content-Type: application/json
Idempotency-Key: <unique-key-for-mutations>
endpoint:invokeInvoke synchronous, streaming, and queued capabilities.
endpoint:readRead endpoint information.
manifest:readDiscover and read active capability manifests.
usage:readRead usage records.
receipt:readRead signed invocation receipts.
credential:manageCreate, rotate, and revoke protocol credentials.
action:executeExecute approved connector actions.

Manage keys with GET/POST /api/credentials/api-keys and the rotate/revoke routes. A newly created or rotated secret is returned once; store it immediately.

Provider registration, manifest lifecycle, subscription approval, connector OAuth, and workflows currently require an authenticated account session. Do not send a protocol API key to those routes and do not copy browser session cookies into client-side code.

04

Consumer discovery and invocation

Discover an active contract, subscribe, approve its permissions, and invoke through the shared gateway.

How to use a published AI agent

  1. Create a server API key with manifest:read and discover active manifests visible to that key.
  2. Inspect the exact input schema, price, version, and mandatory connector permissions before accepting the capability.
  3. In the signed-in Consumer Console, create a subscription and approve the exact permission grants. These steps require the owning consumer session.
  4. Connect every mandatory account shown by the manifest.
  5. Create a server API key with endpoint:invoke.
  6. Invoke synchronously, stream events, or enqueue durable work; save the returned receipt and invocation identifiers.
GET/api/discovery/manifestsList manifests visible to the consumer.
GET/api/discovery/manifests/{manifestId}Read one consumer-safe manifest contract.
POST/api/subscriptionsCreate an endpoint subscription.
POST/api/subscriptions/{id}/approveApprove its permission grants.
POST/api/gateway/invokeExecute synchronously.
POST/api/gateway/invoke/streamReceive streamed invocation events.
POST/api/gateway/invocationsQueue a durable asynchronous invocation.
GET/api/gateway/invocations/{invocationId}/eventsFollow durable status events.
const discovery = await kawnix.operations.getDiscoveryManifests();
const manifest = await kawnix.operations.getDiscoveryManifestsManifestId({
  path: { manifestId: 'manifest_id' },
});

// Complete subscription approval and required connector setup in Consumer Console.
const result = await kawnix.invocations.execute(
  { endpointId: 'endpoint_id', input: { prompt: 'Hello' } },
  { idempotencyKey: crypto.randomUUID() },
);
const receipt = await kawnix.receipts.getById(result.receiptId);
const checksumValid = await kawnix.receipts.verify(receipt);
Use queued invocation for work that can outlive one HTTP request. Poll getInvocation or consume followEvents; cancellation does not erase execution history.
The subscription routes require consumerId, and approval also requires an explicit grants array. Both requests are session-authenticated and ownership-checked; they are intentionally omitted from the API-key example above.

05

Provider publishing

Endpoints and manifest versions are managed independently. Only an approved, valid, active manifest on an active endpoint can receive traffic.

How to register and publish an AI agent

This is a control-plane workflow. Sign in as a provider and use /app/provider/endpoints. Protocol API keys are for consumer data-plane access and cannot create endpoints or publish manifests.

01

Create endpoint

02

Validate manifest

03

Submit for review

04

Wait for approval

05

Activate

# Run from a trusted backend that deliberately forwards
# an authenticated provider session. Never expose this cookie.
curl "$KAWNIX_API_URL/api/endpoints" \
  -H "Cookie: $KAWNIX_SESSION_COOKIE" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Support Reply Agent",
    "slug": "support-reply",
    "endpointUrl": "https://agent.example.com/v1/invoke",
    "billingModel": "PAY_PER_QUERY",
    "currency": "USDC",
    "queryPrice": "0.01",
    "description": "Drafts support replies"
  }'

Minimal valid manifest

{
  "metadata": {
    "name": "Support Reply Agent",
    "version": "1.0.0",
    "provider": "Example Inc."
  },
  "endpoint": {
    "baseUrl": "https://agent.example.com/v1/invoke",
    "path": "/v1/invoke",
    "method": "POST",
    "timeout": 30
  },
  "input": {
    "modalities": ["text", "json"],
    "transport": "application/json",
    "schema": {
      "type": "object",
      "properties": {
        "prompt": { "type": "string", "minLength": 1 }
      },
      "required": ["prompt"],
      "additionalProperties": false
    }
  },
  "capabilities": [{
    "name": "draft-support-reply",
    "description": "Draft a concise reply to a customer message"
  }],
  "auth": { "strategy": "none" },
  "pricing": { "model": "PAY_PER_QUERY", "units": "request" },
  "successCriteria": { "httpStatus": 200 },
  "examples": {
    "request": { "prompt": "My order has not arrived" }
  }
}

Manifest contract

Declare metadata, transport, request/response schemas, authentication, pricing, limits, success criteria, examples, and required connectors.

Provider secrets

Store credentials in the provider vault and reference vault handles. Never place plaintext secrets in manifests or templates.

Gateway verification

Verify Kawnix HMAC headers against the raw body, enforce the five-minute timestamp window, and claim each nonce once in shared storage before parsing or executing work.

Preflight before review

Gateway Security verification must reject an unsigned probe and accept the signed probe. Then run manifest preflight with representative input before submission.

Manifest versions are immutable. Publish a new semantic version for contract changes, validate representative payloads, submit it for review, then activate it. Never call activation while the version is still pending review; inspect lifecycle status and reviewer notes first.

Provider request verification contract

Read the exact raw request bytes before parsing. Require the x-kawnix-signature-version, x-kawnix-key-id, x-kawnix-timestamp, x-kawnix-nonce, x-kawnix-request-id, x-kawnix-endpoint-id, x-kawnix-manifest-id, x-kawnix-subscription-id, x-kawnix-body-sha256, and x-kawnix-signature headers. Reject timestamps more than 300 seconds from server time and reused nonces for 600 seconds. Compare hashes and HMACs in constant time.

06

Connectors

Consumers connect supported accounts such as Google and GitHub. SDK authors can also define, resolve, load, and execute declarative connectors; connector availability still depends on the deployed catalog and consumer authorization.

Google

OAuth-backed access for actions exposed by the active Google definition.

GitHub

OAuth-backed repository and issue actions exposed by the active GitHub definition.

GET/api/connectors/bootstrapReturn the active catalog and connections.
GET/api/connectors/oauth/authorizeBegin connector OAuth.
GET/api/connectors/oauth/callbackComplete and persist OAuth.
POST/api/connectors/{connectorId}/refreshRefresh a connection.
DELETE/api/connectors/{connectorId}/revokeRevoke and prevent future use.

Workflow connector steps pin a connector key, version ID, connection ID, subscription, and action. Connection state and permission grants are checked again before execution.

const builtins = kawnix.connectors.listBuiltins();
const connector = kawnix.connectors.resolve('github');

// Server-managed connector records:
const records = await kawnix.connectors.list();

// Execute only after the consumer has connected the account and approved scope:
await kawnix.actions.execute({
  subscriptionId: 'subscription_id',
  connectorType: 'GITHUB',
  action: 'create_issue',
  params: { owner: 'acme', repo: 'support', title: 'Investigate' },
});

07

Durable workflows

Schema 2.0.0 supports ordered AGENT_CALL and CONNECTOR_ACTION steps, typed inputs, output bindings, limits, retry, fallback, cancellation, and recovery.

{
  "schemaVersion": "2.0.0",
  "inputs": { "issue": { "type": "string", "required": true } },
  "steps": [{
    "id": "draft", "label": "Draft solution", "kind": "AGENT_CALL",
    "agent": { "endpointId": "ep_1", "manifestId": "mf_1" },
    "subscriptionId": "sub_1",
    "input": { "prompt": "$.inputs.issue" },
    "failure": { "strategy": "STOP" }
  }],
  "outputs": { "answer": "$.steps.draft.output" },
  "limits": { "maxSteps": 10, "maxRunDurationMs": 900000, "maxOutputBytes": 1048576 }
}
POST/api/workflowsCreate a workflow.
PUT/api/workflows/{id}Publish an immutable version.
PATCH/api/workflows/{id}/statusEnable or disable execution.
POST/api/workflows/{id}/runsStart an idempotent run.
GET/api/workflows/runs/{runId}Read durable run and step state.
POST/api/workflows/runs/{runId}/retryRetry an eligible failed run.

Bindings can read inputs and prior step outputs. Failure strategies are STOP, CONTINUE, RETRY, and FALLBACK. A fallback target must immediately follow its source step.

08

Credits, escrow, and settlement

Consumers refill USDC credits with a Sepolia wallet or Stripe card. Billable execution follows estimate, reserve, settle, or refund semantics.

GET/api/billing/creditsRead balance, spent total, and currency.
POST/api/billing/buy-creditsCreate a wallet or Stripe purchase.
POST/api/billing/confirm-purchaseConfirm and add purchased credits.
GET/api/billing/purchasesList the consumer's refill history.
POST/api/billing/estimateEstimate endpoint cost.
POST/api/billing/reserveReserve funds idempotently.
POST/api/billing/settleFinalize actual usage.
POST/api/billing/refundRelease a failed or unused reservation.
const estimate = await kawnix.billing.estimateCost({ endpointId: 'endpoint_id' });
const reservation = await kawnix.billing.reserve({
  endpointId: 'endpoint_id', amount: estimate.estimatedAmount,
  currency: estimate.currency, paymentChannel: 'WALLET',
  idempotencyKey: crypto.randomUUID(),
});
Reuse an idempotency key only for the exact same operation and payload. Reuse with different consumer, endpoint, or amount data is rejected.

09

Receipts and verification

Successful billable execution produces a durable receipt tied to usage and settlement records.

GET/api/receiptsList visible receipts.
GET/api/receipts/{receiptId}Read a receipt by ID.
GET/api/gateway/receipts/{receiptId}Read invocation status by receipt ID or number.
const receipt = await kawnix.receipts.getById(receiptId);
// Persist the receipt ID with your operation record.
// Verify checksum/signature fields before trusting exported evidence.

10

TypeScript SDK surface

The canonical @kawnix/sdk package ships ESM, CommonJS, declarations, runtime validation, generated operations, and convenience modules.

client.providers

Session control plane: registerEndpoint, updateEndpoint, pauseEndpoint, resumeEndpoint, listEndpoints

client.manifests

Session control plane: validate, publish, listVersions, getVersion, submit, activateVersion, deprecateVersion

client.invocations

API-key data plane: execute, executeStream, getStatus, enqueue, getInvocation, cancel, followEvents

client.artifacts

API-key data plane: createUpload, complete, download, delete

client.receipts

API-key data plane: getById, verify, listByConsumer

client.credentials

Session control plane: createApiKey, listApiKeys, revokeApiKey, rotateApiKey

client.billing

Mixed auth by route: estimateCost, reserve, confirmSettlement, getSettlementStatus

client.connectors

Mixed surface: session-backed list/create plus local registry helpers. Use current OpenAPI paths for remote operations; legacy get/update/remove paths are not contract-backed.

client.subscriptions

Session control plane. Use Consumer Console/current OpenAPI routes: the convenience create/cancel shapes do not yet cover the complete approval lifecycle.

client.permissions

Legacy convenience wrapper; no standalone /api/permissions routes exist in the current OpenAPI contract.

client.actions

Session control plane: list, execute

client.workflows

Session control plane: list, get, create, publish, setStatus, archive, catalog, listRuns, run, getRun, cancelRun, retryRun

client.observability

Session control plane: listEvents, getEvent, metrics

client.deadLetters

Session control plane: list, replay, resolve

client.triggers

In-process trigger utilities; not a hosted persistence substitute.

client.operations

Generated method for every OpenAPI operation ID; authoritative route inventory.

Configuration and request behavior

const client = createKawnixClient({
  baseUrl: 'https://api.kawnix.com',
  invocationBaseUrl: 'https://invoke.kawnix.com', // optional override
  apiKey: process.env.KAWNIX_API_KEY,
  timeoutMs: 30_000,
  retries: 2,
});

// RequestOptions supports AbortSignal, headers, and idempotency keys.
await client.invocations.execute(request, {
  signal: abortController.signal,
  idempotencyKey: crypto.randomUUID(),
});
Stateful local workflow, marketplace, and observability helpers are fenced under client.experimentalLocal. They are utilities, not backend persistence or API substitutes.
Namespace availability does not override server authorization. Methods targeting control-plane routes still require an authenticated account session. Treat client.operations as the complete route inventory; some OpenAPI operations still use generic request/response envelopes, so use the task guides above for required bodies.

11

Errors, idempotency, and safety

Treat authorization, validation, throttling, provider failures, and billing outcomes as distinct states.

400 / 422

Invalid request or contract. Fix the payload before retrying.

401 / 403

Missing authentication, scope, role, or permission.

404

The resource is absent or not visible to this principal.

409

A lifecycle or idempotency conflict requires reconciliation.

429

Back off with jitter and respect retry guidance.

5xx / 503

Platform, dependency, or configuration failure. Retry only safe operations.

  • • Never expose API keys, OAuth tokens, vault payloads, or provider secrets to browser code or logs.
  • • Send idempotency keys for create, charge, invoke, and workflow-run operations that may be retried.
  • • Use the gateway rather than provider URLs so authorization, billing, receipts, and audit records remain connected.
  • • Verify webhook signatures against raw request bytes before parsing.

12

Complete API route inventory

All 178 operations below come from the current OpenAPI 3.1 contract, so method, path, and operation ID stay synchronized with the backend. This is a route inventory; operations with generic envelopes rely on the task guides for exact bodies.

Account3 operations
POST/api/account/active-role
postAccountActiveRole
GET/api/account/profile
getAccountProfile
PATCH/api/account/profile
patchAccountProfile
Actions3 operations
GET/api/actions
getActions
GET/api/actions/events
getActionsEvents
POST/api/actions/execute
postActionsExecute
Admin13 operations
GET/api/admin/investigations/archives
getAdminInvestigationsArchives
GET/api/admin/investigations/correlations/{correlationId}
getAdminInvestigationsCorrelationsCorrelationId
GET/api/admin/investigations/events
getAdminInvestigationsEvents
GET/api/admin/investigations/events/{eventId}
getAdminInvestigationsEventsEventId
POST/api/admin/investigations/exports
postAdminInvestigationsExports
GET/api/admin/investigations/exports/{exportId}
getAdminInvestigationsExportsExportId
GET/api/admin/investigations/exports/{exportId}/download
getAdminInvestigationsExportsExportIdDownload
GET/api/admin/investigations/facets
getAdminInvestigationsFacets
GET/api/admin/investigations/integrity
getAdminInvestigationsIntegrity
GET/api/admin/reviewer-requests
getAdminReviewerRequests
PATCH/api/admin/reviewer-requests/{requestId}
patchAdminReviewerRequestsRequestId
GET/api/admin/users
getAdminUsers
PATCH/api/admin/users
patchAdminUsers
Agent2 operations
GET/api/agent/github-workflow
getAgentGithubWorkflow
POST/api/agent/github-workflow
postAgentGithubWorkflow
Artifacts4 operations
DELETE/api/artifacts/{artifactId}
deleteArtifactsArtifactId
POST/api/artifacts/{artifactId}/complete
postArtifactsArtifactIdComplete
GET/api/artifacts/{artifactId}/download
getArtifactsArtifactIdDownload
POST/api/artifacts/uploads
postArtifactsUploads
Auth13 operations
GET/api/auth/{all}
getAuthAll
POST/api/auth/{all}
postAuthAll
POST/api/auth/forgot-password
postAuthForgotPassword
POST/api/auth/prepare-social
postAuthPrepareSocial
POST/api/auth/reset-password
postAuthResetPassword
POST/api/auth/sign-in
postAuthSignIn
POST/api/auth/sign-up
postAuthSignUp
POST/api/auth/social-intent
postAuthSocialIntent
POST/api/auth/validate-email
postAuthValidateEmail
POST/api/auth/wallet/link/nonce
postAuthWalletLinkNonce
POST/api/auth/wallet/link/verify
postAuthWalletLinkVerify
POST/api/auth/wallet/nonce
postAuthWalletNonce
POST/api/auth/wallet/verify
postAuthWalletVerify
Billing14 operations
POST/api/billing/buy-credits
postBillingBuyCredits
POST/api/billing/confirm-purchase
postBillingConfirmPurchase
GET/api/billing/credits
getBillingCredits
POST/api/billing/estimate
postBillingEstimate
GET/api/billing/purchases
getBillingPurchases
POST/api/billing/refund
postBillingRefund
POST/api/billing/reserve
postBillingReserve
POST/api/billing/settle
postBillingSettle
GET/api/billing/settlements/{id}
getBillingSettlementsId
POST/api/billing/settlements/confirm
postBillingSettlementsConfirm
POST/api/billing/stripe/confirm
postBillingStripeConfirm
GET/api/billing/wallet/config
getBillingWalletConfig
POST/api/billing/wallet/confirm
postBillingWalletConfirm
POST/api/billing/webhooks/stripe
postBillingWebhooksStripe
Connectors11 operations
GET/api/connectors
getConnectors
POST/api/connectors
postConnectors
POST/api/connectors/{connectorId}/refresh
postConnectorsConnectorIdRefresh
DELETE/api/connectors/{connectorId}/revoke
deleteConnectorsConnectorIdRevoke
GET/api/connectors/bootstrap
getConnectorsBootstrap
GET/api/connectors/oauth/authorize
getConnectorsOauthAuthorize
GET/api/connectors/oauth/callback
getConnectorsOauthCallback
POST/api/connectors/studio-execute
postConnectorsStudioExecute
DELETE/api/connectors/studio-upload
deleteConnectorsStudioUpload
POST/api/connectors/studio-upload
postConnectorsStudioUpload
POST/api/connectors/test
postConnectorsTest
Credentials4 operations
GET/api/credentials/api-keys
getCredentialsApiKeys
POST/api/credentials/api-keys
postCredentialsApiKeys
POST/api/credentials/api-keys/{keyId}/revoke
postCredentialsApiKeysKeyIdRevoke
POST/api/credentials/api-keys/{keyId}/rotate
postCredentialsApiKeysKeyIdRotate
Dashboard2 operations
GET/api/dashboard/events
getDashboardEvents
GET/api/dashboard/overview
getDashboardOverview
Demo Agent1 operations
POST/api/demo-agent/database
postDemoAgentDatabase
Dev1 operations
POST/api/dev/grant-credits
postDevGrantCredits
Discovery3 operations
GET/api/discovery/manifests
getDiscoveryManifests
GET/api/discovery/manifests/{manifestId}
getDiscoveryManifestsManifestId
GET/api/discovery/public/manifests
getDiscoveryPublicManifests
Endpoints22 operations
GET/api/endpoints
getEndpoints
POST/api/endpoints
postEndpoints
DELETE/api/endpoints/{endpointId}
deleteEndpointsEndpointId
GET/api/endpoints/{endpointId}
getEndpointsEndpointId
PATCH/api/endpoints/{endpointId}
patchEndpointsEndpointId
GET/api/endpoints/{endpointId}/gateway-security
getEndpointsEndpointIdGatewaySecurity
POST/api/endpoints/{endpointId}/gateway-security/credentials
postEndpointsEndpointIdGatewaySecurityCredentials
DELETE/api/endpoints/{endpointId}/gateway-security/credentials/{credentialId}
deleteEndpointsEndpointIdGatewaySecurityCredentialsCredentialId
POST/api/endpoints/{endpointId}/gateway-security/rotate
postEndpointsEndpointIdGatewaySecurityRotate
POST/api/endpoints/{endpointId}/gateway-security/verify
postEndpointsEndpointIdGatewaySecurityVerify
GET/api/endpoints/{endpointId}/manifests
getEndpointsEndpointIdManifests
POST/api/endpoints/{endpointId}/manifests
postEndpointsEndpointIdManifests
GET/api/endpoints/{endpointId}/manifests/{version}
getEndpointsEndpointIdManifestsVersion
POST/api/endpoints/{endpointId}/manifests/{version}/activate
postEndpointsEndpointIdManifestsVersionActivate
POST/api/endpoints/{endpointId}/manifests/{version}/approve
postEndpointsEndpointIdManifestsVersionApprove
POST/api/endpoints/{endpointId}/manifests/{version}/deprecate
postEndpointsEndpointIdManifestsVersionDeprecate
POST/api/endpoints/{endpointId}/manifests/{version}/preflight
postEndpointsEndpointIdManifestsVersionPreflight
GET/api/endpoints/{endpointId}/manifests/{version}/preflights
getEndpointsEndpointIdManifestsVersionPreflights
POST/api/endpoints/{endpointId}/manifests/{version}/reject
postEndpointsEndpointIdManifestsVersionReject
POST/api/endpoints/{endpointId}/manifests/{version}/submit
postEndpointsEndpointIdManifestsVersionSubmit
POST/api/endpoints/{endpointId}/pause
postEndpointsEndpointIdPause
POST/api/endpoints/{endpointId}/resume
postEndpointsEndpointIdResume
Gateway7 operations
POST/api/gateway/invocations
postGatewayInvocations
GET/api/gateway/invocations/{invocationId}
getGatewayInvocationsInvocationId
POST/api/gateway/invocations/{invocationId}/cancel
postGatewayInvocationsInvocationIdCancel
GET/api/gateway/invocations/{invocationId}/events
getGatewayInvocationsInvocationIdEvents
POST/api/gateway/invoke
postGatewayInvoke
POST/api/gateway/invoke/stream
postGatewayInvokeStream
GET/api/gateway/receipts/{receiptId}
getGatewayReceiptsReceiptId
Github1 operations
GET/api/github/repos
getGithubRepos
Health1 operations
GET/api/health
getHealth
Hooks2 operations
POST/api/hooks/v1/{connectorKey}/{triggerKey}
postHooksV1ConnectorKeyTriggerKey
POST/api/hooks/v2/{publicToken}
postHooksV2PublicToken
Identity5 operations
POST/api/identity/recover-2fa
postIdentityRecover2fa
POST/api/identity/recovery-codes
postIdentityRecoveryCodes
DELETE/api/identity/sessions
deleteIdentitySessions
GET/api/identity/sessions
getIdentitySessions
DELETE/api/identity/sessions/{sessionId}
deleteIdentitySessionsSessionId
Manifests1 operations
POST/api/manifests/validate
postManifestsValidate
Marketplace32 operations
DELETE/api/marketplace/connections/{connectionId}
deleteMarketplaceConnectionsConnectionId
PATCH/api/marketplace/connections/{connectionId}
patchMarketplaceConnectionsConnectionId
POST/api/marketplace/connections/{connectionId}/refresh
postMarketplaceConnectionsConnectionIdRefresh
POST/api/marketplace/connections/{connectionId}/test
postMarketplaceConnectionsConnectionIdTest
POST/api/marketplace/connections/{connectionId}/webhooks
postMarketplaceConnectionsConnectionIdWebhooks
GET/api/marketplace/connectors
getMarketplaceConnectors
POST/api/marketplace/connectors
postMarketplaceConnectors
GET/api/marketplace/connectors/{connectorId}
getMarketplaceConnectorsConnectorId
GET/api/marketplace/connectors/{connectorId}/analytics
getMarketplaceConnectorsConnectorIdAnalytics
POST/api/marketplace/connectors/{connectorId}/install
postMarketplaceConnectorsConnectorIdInstall
GET/api/marketplace/connectors/{connectorId}/invites
getMarketplaceConnectorsConnectorIdInvites
POST/api/marketplace/connectors/{connectorId}/invites
postMarketplaceConnectorsConnectorIdInvites
POST/api/marketplace/connectors/{connectorId}/oauth-application
postMarketplaceConnectorsConnectorIdOauthApplication
POST/api/marketplace/connectors/{connectorId}/restore
postMarketplaceConnectorsConnectorIdRestore
POST/api/marketplace/connectors/{connectorId}/revoke
postMarketplaceConnectorsConnectorIdRevoke
POST/api/marketplace/connectors/{connectorId}/suspend
postMarketplaceConnectorsConnectorIdSuspend
PATCH/api/marketplace/connectors/{connectorId}/visibility
patchMarketplaceConnectorsConnectorIdVisibility
GET/api/marketplace/installations
getMarketplaceInstallations
GET/api/marketplace/installations/{installationId}/connections
getMarketplaceInstallationsInstallationIdConnections
POST/api/marketplace/installations/{installationId}/connections
postMarketplaceInstallationsInstallationIdConnections
POST/api/marketplace/installations/{installationId}/version
postMarketplaceInstallationsInstallationIdVersion
DELETE/api/marketplace/invites/{inviteId}
deleteMarketplaceInvitesInviteId
POST/api/marketplace/oauth/authorize
postMarketplaceOauthAuthorize
GET/api/marketplace/oauth/callback
getMarketplaceOauthCallback
POST/api/marketplace/oauth/callback
postMarketplaceOauthCallback
GET/api/marketplace/review
getMarketplaceReview
GET/api/marketplace/unlisted/{token}
getMarketplaceUnlistedToken
POST/api/marketplace/versions/{versionId}/deprecate
postMarketplaceVersionsVersionIdDeprecate
POST/api/marketplace/versions/{versionId}/publish
postMarketplaceVersionsVersionIdPublish
POST/api/marketplace/versions/{versionId}/review
postMarketplaceVersionsVersionIdReview
POST/api/marketplace/webhook-events/{eventId}/replay
postMarketplaceWebhookEventsEventIdReplay
POST/api/marketplace/webhooks/{endpointId}/bind
postMarketplaceWebhooksEndpointIdBind
Observability4 operations
GET/api/observability/dead-letters
getObservabilityDeadLetters
POST/api/observability/dead-letters/{id}/replay
postObservabilityDeadLettersIdReplay
POST/api/observability/dead-letters/{id}/resolve
postObservabilityDeadLettersIdResolve
GET/api/observability/metrics
getObservabilityMetrics
Provider6 operations
GET/api/provider/endpoints
getProviderEndpoints
GET/api/provider/endpoints/{endpointId}/action-logs
getProviderEndpointsEndpointIdActionLogs
POST/api/provider/endpoints/{endpointId}/activate
postProviderEndpointsEndpointIdActivate
GET/api/provider/endpoints/{endpointId}/manifests
getProviderEndpointsEndpointIdManifests
GET/api/provider/endpoints/{endpointId}/subscriptions
getProviderEndpointsEndpointIdSubscriptions
POST/api/provider/secrets
postProviderSecrets
Receipts2 operations
GET/api/receipts
getReceipts
GET/api/receipts/{receiptId}
getReceiptsReceiptId
Reviewer4 operations
GET/api/reviewer/manifests
getReviewerManifests
GET/api/reviewer/manifests/{manifestId}
getReviewerManifestsManifestId
GET/api/reviewer/request
getReviewerRequest
PUT/api/reviewer/request
putReviewerRequest
Subscriptions5 operations
GET/api/subscriptions
getSubscriptions
POST/api/subscriptions
postSubscriptions
GET/api/subscriptions/{id}
getSubscriptionsId
POST/api/subscriptions/{id}/approve
postSubscriptionsIdApprove
DELETE/api/subscriptions/{id}/cancel
deleteSubscriptionsIdCancel
Workflows12 operations
GET/api/workflows
getWorkflows
POST/api/workflows
postWorkflows
DELETE/api/workflows/{id}
deleteWorkflowsId
GET/api/workflows/{id}
getWorkflowsId
PUT/api/workflows/{id}
putWorkflowsId
GET/api/workflows/{id}/runs
getWorkflowsIdRuns
POST/api/workflows/{id}/runs
postWorkflowsIdRuns
PATCH/api/workflows/{id}/status
patchWorkflowsIdStatus
GET/api/workflows/catalog
getWorkflowsCatalog
GET/api/workflows/runs/{runId}
getWorkflowsRunsRunId
POST/api/workflows/runs/{runId}/cancel
postWorkflowsRunsRunIdCancel
POST/api/workflows/runs/{runId}/retry
postWorkflowsRunsRunIdRetry

13

Frequently asked questions

Direct answers to the questions providers, consumers, and coding agents need most often.

How does a provider register an AI agent on Kawnix?

Sign in with a provider account, create an endpoint in Provider Console, install Kawnix gateway-signature verification at the provider origin, generate and verify a gateway signing credential, validate and publish an immutable manifest version, submit it for review, then activate the approved version. Provider management routes currently require the authenticated web session, not a protocol API key.

How does a consumer use a published AI agent?

Use a manifest:read API key to discover the contract, then use the signed-in Consumer Console to create and approve the subscription and connect required accounts. Use an endpoint:invoke API key from a trusted server to invoke the endpoint through the Kawnix gateway.

Should an API key be used in browser code?

No. Kawnix API keys are server credentials. The SDK blocks API-key use in browsers by default; browser applications should call their own backend or use the authenticated Kawnix web session.

Which API surface is authoritative?

The current OpenAPI document is authoritative for the route inventory, and client.operations contains the generated operation methods. Convenience namespaces cover common workflows, but route authentication still applies and the task guides should be used where the OpenAPI contract exposes only a generic envelope.

Can a protocol API key register providers or approve subscriptions?

No. Protocol API keys are for scoped machine access to the data plane. Provider registration, manifest lifecycle, subscription approval, connectors, and workflows are control-plane operations protected by an authenticated account session.

Can an approved manifest be edited in place?

No. Manifest versions are immutable. Publish a new semantic version, validate it, submit it for review, and activate it after approval.