Skip to content

Create login session API Reference

POST
/tenants/{tenant}/registries/{name}/sessions
curl --request POST \
--url https://api.kupe.cloud/api/v1/tenants/acme/registries/registry/sessions \
--header 'Authorization: <Authorization>'

Create a login session: a registry credential for the signed-in member, valid for 12 hours, as kupe registry login uses. Admins get push (which includes pull), read-only members pull. No request body (an empty body or {}). The secret is in this response only.

tenant
required
string

Tenant name

name
required
string

Registry name: always registry

Login session created; the secret is shown only here

Media type application/json
object
access
string
Allowed values: pull push
createdAt
string
createdBy
string
displayName
string
expiresAt
string
id
string
kind
string
Allowed values: token session
registry

Registry is the registry host to sign in to.

string
secret

Secret is the password for the registry: 49 characters, returned once. Store it now; it cannot be retrieved again. Its format is published for secret scanning (see the security docs).

string
status
object
phase

Phase is empty or Pending until the token is issued (seconds), then Ready.

string
Allowed values: Pending Ready Failed
username

Username is the registry username the token is issued under.

string
Example
{
"access": "pull",
"createdAt": "2026-10-21T10:00:00Z",
"createdBy": "alice@acme.com",
"displayName": "GitHub Actions",
"expiresAt": "2027-01-19T10:00:00Z",
"id": "rt-0a1b2c3d4e5f6a7b",
"kind": "token",
"registry": "registry.kupe.cloud",
"secret": "<shown once>",
"status": {
"phase": "Pending"
},
"username": "kupe+acme+tok-0a1b2c3d4e5f6a7b"
}

Invalid name, or a request body with fields

Media type application/json
object
code
string
error
string
field
string
message
string
severity
string
Example generated
{
"code": "example",
"error": "example",
"field": "example",
"message": "example",
"severity": "example"
}

Missing or invalid authentication

Media type application/json
object
code
string
error
string
field
string
message
string
severity
string
Example generated
{
"code": "example",
"error": "example",
"field": "example",
"message": "example",
"severity": "example"
}

Not a member of this tenant, or an API key (code session_requires_user)

Media type application/json
object
code
string
error
string
field
string
message
string
severity
string
Example generated
{
"code": "example",
"error": "example",
"field": "example",
"message": "example",
"severity": "example"
}

Registry not found, or the registry is not enabled (code registries_unavailable)

Media type application/json
object
code
string
error
string
field
string
message
string
severity
string
Example generated
{
"code": "example",
"error": "example",
"field": "example",
"message": "example",
"severity": "example"
}

The registry is being deleted (code terminating), or the tenant is suspended (code tenant_suspended), awaiting a payment method (code payment_setup_required) or being deleted (code tenant_terminating)

Media type application/json
object
code
string
error
string
field
string
message
string
severity
string
Example generated
{
"code": "example",
"error": "example",
"field": "example",
"message": "example",
"severity": "example"
}

Too many logins: retry after Retry-After seconds

Media type application/json
object
code
string
error
string
field
string
message
string
severity
string
Example generated
{
"code": "example",
"error": "example",
"field": "example",
"message": "example",
"severity": "example"
}