Sharing
Sharing adds existing members of the resource’s organization. Use POST /sharing/grantees for direct access, and organization invitations for new colleagues. Grant payloads keep editor (Developer) and viewer; membership roles use admin, developer and viewer. Grids accept viewer for use only. Only admins manage grid sharing; admins or creators manage project/app sharing. The older invitation endpoints handle existing invitations only.
Any API key can call this.
Also requires projects:admin (Delete projects and manage who they are shared with) when resourceType is project.
Also requires apps:admin (Delete or move apps and manage who they are shared with) when resourceType is app.
Also requires pools:admin (Delete grids and manage who they are shared with) when resourceType is grid.
An API key from Account settings, e.g. kn_...
What is shared
Project or app id, or grid id
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
GET /v1/sharing/grantees?resourceType=project&resourceId=text HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"resourceType": "project",
"resourceId": "text",
"resourceName": "text",
"ownerEmail": null,
"callerRole": "viewer",
"grantees": [
{
"userId": "text",
"email": null,
"name": null,
"role": "viewer",
"orgRole": "admin",
"grantedAt": "2026-01-01T00:00:00.000Z"
}
]
}Add members of the resource's organization to a project, app or grid. No invitation: access starts at once. Each role is at most theirs in the organization (a viewer is added as viewer; grids take viewer only), and someone already added gets the new role. People outside the organization can't be added
Any API key can call this.
Also requires projects:admin (Delete projects and manage who they are shared with) when resourceType is project.
Also requires apps:admin (Delete or move apps and manage who they are shared with) when resourceType is app.
Also requires pools:admin (Delete grids and manage who they are shared with) when resourceType is grid.
Errors specific to this operation:
400
not_member: Someone named isn't in the resource's organization
An API key from Account settings, e.g. kn_...
What is shared
Project or app id, or grid id
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
The request body exceeds the limit given in the body
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
POST /v1/sharing/grantees HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 91
{
"resourceType": "project",
"resourceId": "text",
"people": [
{
"userId": "text",
"role": "viewer"
}
]
}{
"resourceType": "project",
"resourceId": "text",
"resourceName": "text",
"ownerEmail": null,
"callerRole": "viewer",
"grantees": [
{
"userId": "text",
"email": null,
"name": null,
"role": "viewer",
"orgRole": "admin",
"grantedAt": "2026-01-01T00:00:00.000Z"
}
]
}Change a grantee's role on a project or app (grids are shared as viewer only). On a grid, taking an old editor grant away also releases the machines and spot groups they added. Not on the caller's own grant.
Any API key can call this.
Also requires projects:admin (Delete projects and manage who they are shared with) when resourceType is project.
Also requires apps:admin (Delete or move apps and manage who they are shared with) when resourceType is app.
Also requires pools:admin (Delete grids and manage who they are shared with) when resourceType is grid.
Errors specific to this operation:
403
forbidden: The grant is the caller's own
An API key from Account settings, e.g. kn_...
User id of the grantee, from the grantees list
^[0-9a-fA-F]{24}$What is shared
Project or app id, or grid id
Resource grant values: viewer reads; editor means Developer. Grids take viewer for use only; organization developers may deploy and viewers only read
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
The request body exceeds the limit given in the body
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
PATCH /v1/sharing/grantees/{granteeUserId} HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 62
{
"resourceType": "project",
"resourceId": "text",
"role": "viewer"
}{
"resourceType": "project",
"resourceId": "text",
"resourceName": "text",
"ownerEmail": null,
"callerRole": "viewer",
"grantees": [
{
"userId": "text",
"email": null,
"name": null,
"role": "viewer",
"orgRole": "admin",
"grantedAt": "2026-01-01T00:00:00.000Z"
}
],
"warning": null
}Remove a grantee's access. On a grid, machines and spot groups a former co-manager added leave it too. Not on the caller's own grant (use leave).
Any API key can call this.
Also requires projects:admin (Delete projects and manage who they are shared with) when resourceType is project.
Also requires apps:admin (Delete or move apps and manage who they are shared with) when resourceType is app.
Also requires pools:admin (Delete grids and manage who they are shared with) when resourceType is grid.
Errors specific to this operation:
403
forbidden: The grant is the caller's own
An API key from Account settings, e.g. kn_...
User id of the grantee, from the grantees list
^[0-9a-fA-F]{24}$What is shared
Project or app id, or grid id
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
DELETE /v1/sharing/grantees/{granteeUserId}?resourceType=project&resourceId=text HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"warning": null
}Give up the caller's own access to a shared project, app or grid. On a grid, their machines and spot groups leave with them.
Requires account:write (Accept or decline invitations, leave shared resources, manage notifications).
Errors specific to this operation:
400
invalid_request: The caller owns the resource
An API key from Account settings, e.g. kn_...
What is shared
Project or app id, or grid id
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
The request body exceeds the limit given in the body
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
POST /v1/sharing/leave HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 46
{
"resourceType": "project",
"resourceId": "text"
}{
"warning": null
}Invitations on a resource the caller manages, or those the caller sent. Pending and accepted ones: by resourceType and resourceId, or the sent ones within the credential's admin scopes and project restrictions
Any API key can call this.
Also requires projects:admin (Delete projects and manage who they are shared with) when resourceType is project.
Also requires apps:admin (Delete or move apps and manage who they are shared with) when resourceType is app.
Also requires pools:admin (Delete grids and manage who they are shared with) when resourceType is grid.
An API key from Account settings, e.g. kn_...
What is shared
With resourceType: the resource whose invitations to list
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
GET /v1/sharing/invitations HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"invitations": [
{
"id": "text",
"resourceType": "project",
"resourceId": "text",
"resourceName": "text",
"inviteeEmail": "text",
"invitedByEmail": "text",
"role": "viewer",
"status": "pending",
"createdAt": "2026-01-01T00:00:00.000Z",
"acceptedAt": "2026-01-01T00:00:00.000Z"
}
]
}Requires account:read (View invitations and notifications addressed to the user).
An API key from Account settings, e.g. kn_...
OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
GET /v1/sharing/invitations/received HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"invitations": [
{
"id": "text",
"resourceType": "project",
"resourceId": "text",
"resourceName": "text",
"inviteeEmail": "text",
"invitedByEmail": "text",
"role": "viewer",
"status": "pending",
"createdAt": "2026-01-01T00:00:00.000Z",
"acceptedAt": "2026-01-01T00:00:00.000Z"
}
]
}Cancel an invitation the caller manages. Cancelling an accepted invitation revokes the access it granted. Needs the admin scope of the invitation's resource type.
Any API key can call this.
Errors specific to this operation:
403
forbidden: The grant is the caller's own
An API key from Account settings, e.g. kn_...
Invitation id
^[0-9a-fA-F]{24}$OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
DELETE /v1/sharing/invitations/{invitationId} HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"warning": null
}Accept an existing resource invitation addressed to the caller. For new team access, use organization invitations and add members to the resource
Requires account:write (Accept or decline invitations, leave shared resources, manage notifications).
Errors specific to this operation:
409
no_org: A grid share, and the caller owns no organization to take it
An API key from Account settings, e.g. kn_...
Invitation id
^[0-9a-fA-F]{24}$OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
The request body exceeds the limit given in the body
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
POST /v1/sharing/invitations/{invitationId}/accept HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"resourceType": "project",
"resourceId": "text",
"resourceName": "text"
}Requires account:write (Accept or decline invitations, leave shared resources, manage notifications).
An API key from Account settings, e.g. kn_...
Invitation id
^[0-9a-fA-F]{24}$OK
The request body, query or headers are invalid (invalid_request, invalid_idempotency_key, ...)
The API key is missing, malformed, unknown, revoked or expired
The key lacks a required permission (insufficient_scope), is limited to other projects or to projects while the call acts on the organization (key_project_restricted), the caller's role on the resource is too low (forbidden), or the account is frozen
No such resource, or the caller cannot see it
The resource is in a state that does not allow the action, or an idempotency key was reused
The request body exceeds the limit given in the body
Too many requests; see the X-RateLimit-* headers and Retry-After
Something failed on our side; the request id is in the body
A service we depend on (the runtime, GitHub) did not answer; retry shortly
The feature is not enabled on this server (github_not_configured), or a service we depend on is down; retry later
A service we depend on did not answer in time; retry shortly
POST /v1/sharing/invitations/{invitationId}/decline HTTP/1.1
Host: api.kinesis.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"declined": true
}Was this helpful?
