---
title: "Issue an additional API key for a service account"
method: POST
path: "/teams/{teamId}/service-accounts/{serviceAccountId}/keys"
tags: ["Service Accounts"]
---

# Issue an additional API key for a service account

`POST /teams/{teamId}/service-accounts/{serviceAccountId}/keys`

## Request

- Base URL: `https://api.katla.app`
- URL: `https://api.katla.app/teams/{teamId}/service-accounts/{serviceAccountId}/keys`
- Auth: HTTP bearer

For rotation without downtime: issue the new key, deploy it, then revoke the old one. The returned apiKey is shown once.

## Path parameters

- `teamId` string, uuid, required
- `serviceAccountId` string, uuid, required

## Request body

- object
  - `expiresInDays` integer

## Response `201`

Default Response

- object
  - `serviceAccount` object, required
    - `id` string, required
    - `name` string, required
    - `role` 'owner' | 'admin' | 'member', required
    - `scopes` string[], required
    - `createdByUserId` string, nullable, required
    - `revokedAt` string, nullable, required
    - `createdAt` string, required
    - `keys` object[], required
      - `id` string, required
      - `maskedKey` string, required
      - `expiresAt` string, nullable, required
      - `revokedAt` string, nullable, required
      - `lastUsedAt` string, nullable, required
      - `createdAt` string, required
  - `key` object, required
    - `id` string, required
    - `maskedKey` string, required
    - `expiresAt` string, nullable, required
    - `revokedAt` string, nullable, required
    - `lastUsedAt` string, nullable, required
    - `createdAt` string, required
  - `apiKey` string, required

## Other responses

- `403`: Default Response
- `404`: Default Response

---

[API](https://skmtc.dev/katla/apis/katla-api.md) · [All operations](https://skmtc.dev/katla/apis/katla-api/llms.txt) · [OpenAPI document](https://skmtc.dev/katla/apis/katla-api/revisions/6ed2d7f0b009?raw)
