---
title: "Create long-lived API credential"
method: POST
path: "/api/credentials"
tags: ["credentials"]
---

# Create long-lived API credential

`POST /api/credentials`

## Request

- Base URL: `https://rstream.io`
- URL: `https://rstream.io/api/credentials`
- Auth: HTTP bearer

## Request body

- CreateCredentialParams
  - `type` 'pat' | 'app' | 'mtls', required
  - `name` string, required
  - `description` string
  - `expiresAt` string, date-time
  - `autoDeleteOnExpire` boolean
  - `permissionPolicy` object, required
    - `version` union
      - 1
      - 2
    - `control` object, required
      - `mode` 'all' | 'select' | 'none', required
      - `permissions` string[], required
    - `engine` object, required
      - `mode` 'all' | 'select' | 'none', required
      - `permissions` string[], required
    - `turn` object, required
      - `mode` 'all' | 'select' | 'none', required
      - `permissions` string[], required
  - `resources` object
    - `tunnels` Schema0 (unresolved $ref)
  - `certificatePem` string

## Response `200`

Successful response.

- union
  - object
    - `id` string, required
    - `type` 'pat', required
    - `name` string, required
    - `description` string
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `expiresAt` string, date-time
    - `autoDeleteOnExpire` boolean
    - `permissions` string[], nullable, required
    - `permissionPolicy` object, required
      - `version` union
        - 1
        - 2
      - `control` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
      - `engine` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
      - `turn` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
    - `resources` object
      - `tunnels` Schema0 (unresolved $ref)
    - `configurationIssues` object[], required
      - `field` 'resources', required
      - `code` 'invalid_format', required
      - `message` string, required
    - `certificateFingerprint` string
    - `token` string, required
  - object
    - `id` string, required
    - `type` 'app', required
    - `name` string, required
    - `description` string
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `expiresAt` string, date-time
    - `autoDeleteOnExpire` boolean
    - `permissions` string[], nullable, required
    - `permissionPolicy` object, required
      - `version` union
        - 1
        - 2
      - `control` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
      - `engine` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
      - `turn` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
    - `resources` object
      - `tunnels` Schema0 (unresolved $ref)
    - `configurationIssues` object[], required
      - `field` 'resources', required
      - `code` 'invalid_format', required
      - `message` string, required
    - `certificateFingerprint` string
    - `clientId` string, required
    - `clientSecret` string, required
  - object
    - `id` string, required
    - `type` 'mtls', required
    - `name` string, required
    - `description` string
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `expiresAt` string, date-time
    - `autoDeleteOnExpire` boolean
    - `permissions` string[], nullable, required
    - `permissionPolicy` object, required
      - `version` union
        - 1
        - 2
      - `control` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
      - `engine` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
      - `turn` object, required
        - `mode` 'all' | 'select' | 'none', required
        - `permissions` string[], required
    - `resources` object
      - `tunnels` Schema0 (unresolved $ref)
    - `configurationIssues` object[], required
      - `field` 'resources', required
      - `code` 'invalid_format', required
      - `message` string, required
    - `certificateFingerprint` string, required

## Other responses

- `400`: Request validation failed.
- `401`: Authentication is required.
- `403`: The token is not authorized.

---

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