For the complete documentation index, see llms.txt. This page is also available as Markdown.

Domains

Reserve hostnames, verify DNS and attach custom domains.

Reserve a custom domain for an app and get the DNS record the user must create at their DNS provider. ready is true once the domain is verified and holds a current certificate, so apps.domains.add can attach it. Members of the project's organization only.

post

Requires apps:write (Create, update, start, stop, restart and rebuild apps).

Authorizations
AuthorizationstringRequired

An API key from Account settings, e.g. kn_...

Path parameters
projectIdstringRequired

Project id

Pattern: ^[0-9a-fA-F]{24}$
appIdstringRequired

App id

Pattern: ^[0-9a-fA-F]{24}$
Body
domainstringRequired

Fully qualified domain name, e.g. app.example.com

Pattern: ^(?=.{4,253}$)(?!-)[a-z0-9-]{1,63}(?<!-)(\.(?!-)[a-z0-9-]{1,63}(?<!-))+$
Responses
200

OK

application/json
post/projects/{projectId}/apps/{appId}/domains/reserve
POST /v1/projects/{projectId}/apps/{appId}/domains/reserve HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "domain": "text"
}
{
  "domain": "text",
  "ready": true,
  "dnsRecord": {
    "type": "text",
    "name": "text",
    "value": "text"
  },
  "certificate": {
    "notBefore": "2026-01-01T00:00:00.000Z",
    "notAfter": "2026-01-01T00:00:00.000Z"
  }
}

Attach a custom domain to an app: verifies the DNS record from reserve, issues the certificate and redeploys the app with the domain. Until the record resolves this fails with domain_not_verified, carrying the record to create; retry after the user has created it. Attaching an already attached domain changes nothing. Members of the project's organization only.

post

Requires apps:write (Create, update, start, stop, restart and rebuild apps).

Errors specific to this operation:

  • 409 domain_not_verified: The DNS record is not in place yet; dnsRecord says what to create, retry once it resolves

  • 400 grid_to_serverless: A grid app cannot move back to serverless

  • 400 no_suitable_machines: No machine can run the app's configuration

  • 429 grid_quota_exceeded: The grids the app targets have no room for it under their per-person app and instance quotas

Authorizations
AuthorizationstringRequired

An API key from Account settings, e.g. kn_...

Path parameters
projectIdstringRequired

Project id

Pattern: ^[0-9a-fA-F]{24}$
appIdstringRequired

App id

Pattern: ^[0-9a-fA-F]{24}$
Body
domainstringRequired

Fully qualified domain name, e.g. app.example.com

Pattern: ^(?=.{4,253}$)(?!-)[a-z0-9-]{1,63}(?<!-)(\.(?!-)[a-z0-9-]{1,63}(?<!-))+$
Responses
201

Created

application/json
post/projects/{projectId}/apps/{appId}/domains
POST /v1/projects/{projectId}/apps/{appId}/domains HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "domain": "text"
}
{
  "domain": "text",
  "domains": [
    "text"
  ],
  "defaultDomain": null
}

Detach a custom domain from an app and redeploy it without the domain; a default domain that is removed falls back to the Kinesis-issued one. Members of the project's organization only.

delete

Requires apps:write (Create, update, start, stop, restart and rebuild apps).

Errors specific to this operation:

  • 400 grid_to_serverless: A grid app cannot move back to serverless

  • 400 no_suitable_machines: No machine can run the app's configuration

  • 429 grid_quota_exceeded: The grids the app targets have no room for it under their per-person app and instance quotas

Authorizations
AuthorizationstringRequired

An API key from Account settings, e.g. kn_...

Path parameters
projectIdstringRequired

Project id

Pattern: ^[0-9a-fA-F]{24}$
appIdstringRequired

App id

Pattern: ^[0-9a-fA-F]{24}$
domainstringRequired

Fully qualified domain name, e.g. app.example.com

Pattern: ^(?=.{4,253}$)(?!-)[a-z0-9-]{1,63}(?<!-)(\.(?!-)[a-z0-9-]{1,63}(?<!-))+$
Responses
200

OK

application/json
delete/projects/{projectId}/apps/{appId}/domains/{domain}
DELETE /v1/projects/{projectId}/apps/{appId}/domains/{domain} HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "domain": "text",
  "domains": [
    "text"
  ],
  "defaultDomain": null,
  "deleted": true
}

Choose which domain the dashboard shows as the app's address: an attached custom domain, or null for the Kinesis-issued hostname.

post

Requires apps:write (Create, update, start, stop, restart and rebuild apps).

Authorizations
AuthorizationstringRequired

An API key from Account settings, e.g. kn_...

Path parameters
projectIdstringRequired

Project id

Pattern: ^[0-9a-fA-F]{24}$
appIdstringRequired

App id

Pattern: ^[0-9a-fA-F]{24}$
Body
domainstring · nullableRequired

An attached custom domain, or null for the Kinesis-issued hostname

Pattern: ^(?=.{4,253}$)(?!-)[a-z0-9-]{1,63}(?<!-)(\.(?!-)[a-z0-9-]{1,63}(?<!-))+$
Responses
200

OK

application/json
post/projects/{projectId}/apps/{appId}/domains/default
POST /v1/projects/{projectId}/apps/{appId}/domains/default HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "domain": "text"
}
{
  "domains": [
    "text"
  ],
  "defaultDomain": null
}

Was this helpful?