KintsugiKintsugi

Creating and Managing API Keys

Every Tenanted API request to a data endpoint carries an API key in the Api-Key header. This page covers creating a key in the app, the one moment you can copy it, and how to manage keys after that, in the app or through the API Keys endpoints.

Before You Start

You need an account on the Kintsugi platform and access to an organization.

API keys need a paid plan that includes them. If the API Keys tab asks you to upgrade, the organization you are signed in to does not include them yet, so check which organization you are in before you start.

A key created in the app is scoped to one organization and acts on that organization, so a request made with it needs no organization header. You can hold several keys at once, which is what makes rotation possible without downtime.

Create an API Key

Open the API Keys Tab

Sign in to the Kintsugi platform. If you do not have an account yet, sign up first.

Select Configuration in the left sidebar, below Tools.

The Kintsugi sidebar with Configuration selected, below Tools and above the user and organization switcher
Configuration sits at the bottom of the sidebar, above your name and the organization switcher.

Configuration opens on a row of tabs. Select API Keys.

The Configuration page tab bar: Organization Details, Bank Details, Kintsugi Mail, Users, API Keys, Exemptions, Settings
Configuration tabs: API Keys sits between Users and Exemptions.

The tab lists every key belonging to the organization you are signed in to, with a search box, a link back to this documentation, and a New button. A new organization has none yet.

The API Keys tab with a search box, an API Documentation link, a New button, and the message No API Keys Exist
The API Keys tab before any key exists.

Create a New API Key

Click New. The New Organization API Key dialog opens, named for the scope the key will have.

Choose when the key should expire: Never, One Month, Six Month, or One Year.

The New Organization API Key dialog with the expiry dropdown open, showing Never, One Month, Six Month, and One Year
Expiry is the only decision the dialog asks you to make.

Pick the shortest window that covers the work. An expiring key limits how long a leaked one is useful, and the expiry date is the reminder to rotate. One Month suits local development and spikes, One Year suits a production integration you will rotate on schedule, and Never is worth choosing only when something other than the calendar will retire the key.

Confirm to generate the key.

Copy and Secure Your API Key

This is the only time the key is visible. Copy it before you close the dialog. There is no way to reveal it again, so a key you did not copy has to be deleted and replaced.

Click the copy icon, or Manually copy API key to select the full value yourself.

The dialog confirming the key was created, with a truncated key, a copy icon, a Manually copy API key button, and Done
Copy the key here, or lose it.

Paste it straight into wherever your application reads secrets from, before you do anything else.

Click Done.

Three habits worth keeping from the start:

  • Read the key from the environment, never from source. A key in a commit is a key in your history, and rewriting history is a worse afternoon than rotating a key.
  • Use a separate key per application and environment. Keys are independent, so one can be revoked without taking the others down with it.
  • Share through a password manager, not chat or email.

Viewing and Managing Your API Keys

The API Keys tab lists each key with its truncated value under KEY, plus its CREATED and EXPIRES dates. Only the truncated form is ever shown again. Use the search box to find a key, and the three-dot menu (⋮) at the end of its row to delete it.

The API Keys table showing one key with its created and expires dates, and the row menu open on Delete API Key
An existing key, and the delete action on its row menu.

Deleting a key takes effect immediately and cannot be undone. Anything still using it starts getting 401 unauthorized on the next call, so put the replacement in place first. See Error Handling for what an authentication failure looks like.

Managing Keys Through the API

The Tenanted API exposes the same lifecycle as four endpoints. They manage credentials, so they do not accept an organization API key: they take the session token of a signed-in Owner or Admin, sent as Authorization: Bearer <token>, with Organization-Id naming the organization whose keys you are managing. An organization API key gets 401 unauthorized, and a request that sends both an Api-Key and a bearer token gets 400 multiple_credentials.

EndpointWhat it does
GET /api-keysLists the organization's keys. active=false lists archived keys instead of current ones. Pages forward with limit (1 to 100, default 50) and cursor.
POST /api-keysCreates a key and returns its secret token, once.
PATCH /api-keys/{api_key_id}Changes a key's expiresAt, or removes the expiry with null.
DELETE /api-keys/{api_key_id}Revokes a key.

Creating a key takes one optional field. expiresAt is an RFC 3339 UTC timestamp ending in Z, and it has to be in the future; leave it out for a key that does not expire.

POST https://api.trykintsugi.com/api-keys
-H "Authorization: Bearer <token>"
-H "Organization-Id: orgn_12345"
-H "Api-Version: 2026-07-21"
-H "Content-Type: application/json"
{
"expiresAt": "2027-07-21T15:30:00Z"
}

A 201 Created returns the key's id and its token:

{
  "id": "3f6c2b1e-8a4d-4c2e-9b1f-2d7e5a6c9f10",
  "token": "tok_2mNpQr7Ls8f3k"
}

The token is returned here and never again. Listing keys returns their metadata (id, scope, organizationId, createdAt, expiresAt), never the secret, so store the token before you do anything else.

A few rules worth knowing:

  • Updating sends expiresAt with a new future timestamp, or null to remove the expiry. An empty body returns 400 invalid_request, since it asks for no change. A successful update returns 204 No Content.
  • Revoking returns 204 No Content. A key you cannot revoke, including one that does not exist, returns 404 not_found.
  • A signed-in user without the Owner or Admin role gets 403 forbidden.

Rotating a Key

Because an organization can hold several keys at once, rotation needs no downtime and no maintenance window:

Create the replacement

Generate a new key alongside the one you are retiring, in the app or with Create an API key.

Deploy it

Update the secret your application reads and roll it out.

Confirm the new key is live

Make a request and check it succeeds. Making an Authenticated Request is the quickest check.

Delete the old key

Only once nothing is using it. Deleting first is what turns a rotation into an outage.

Set expiry when you create the key and rotation stops being something you have to remember. The EXPIRES column is your schedule, and expiresAt on List API keys is the same date for your own tooling.

Next Steps

Need Help?