---
title: "List credentials for a tenant"
method: GET
path: "/tenants/{tenantId}/credentials"
tags: ["Credentials"]
---

# List credentials for a tenant

`GET /tenants/{tenantId}/credentials`

## Request

- Base URL: `https://api.arkhq.io/v1`
- URL: `https://api.arkhq.io/v1/tenants/{tenantId}/credentials`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/arkhq-io/apis/ark-email-api/docs/tenants/:tenantId/credentials/get.ts> (a function with typed inputs; its response is checked against the schema)

List all SMTP and API credentials for a tenant. Credentials are used to send
emails via Ark on behalf of the tenant.

**Security:** Credential keys are not returned in the list response. Use the
retrieve endpoint with `reveal=true` to get the key.

## Path parameters

- `tenantId` string, required

## Query parameters

- `page` integer
- `perPage` integer
- `type` 'smtp' | 'api'

## Response `200`

List of credentials

- ListCredentialsResponse
  - `data` Credential[], required: List of credentials (keys are not included)
    - `id` integer, required: Unique identifier for the credential
    - `name` string, required: Name of the credential
    - `type` 'smtp' | 'api', required: Type of credential: - `smtp` - For SMTP-based email sending - `api` - For API-based email sending
    - `hold` boolean, required: Whether the credential is on hold (disabled). When `true`, the credential cannot be used to send emails.
    - `lastUsedAt` string, date-time, nullable, required: When the credential was last used to send an email
    - `createdAt` string, date-time, required: When the credential was created
    - `updatedAt` string, date-time, required: When the credential was last updated
  - `page` integer, required: Current page number (1-indexed)
  - `perPage` integer, required: Items per page
  - `total` integer, required: Total number of credentials
  - `totalPages` integer, required: Total number of pages
  - `meta` ApiMeta, required
    - `requestId` string, required: Unique request identifier for debugging and support

## Other responses

- `400`: Invalid request parameters
- `401`: Invalid or missing API key
- `403`: Missing required scope
- `404`: Tenant not found
- `429`: Rate limit exceeded
- `500`: Internal server error

## Changes

- **2026-02-08** `37bce0c9a4d7`: 6 warning, 6 info
  - added the new `infrastructure_error` enum value to the `error/code` response property for the response status `400`
  - added the new `infrastructure_error` enum value to the `error/code` response property for the response status `401`
  - added the new `infrastructure_error` enum value to the `error/code` response property for the response status `403`
  - added the new `infrastructure_error` enum value to the `error/code` response property for the response status `404`
  - …8 more
- **2026-02-08** `4f8eeb0b9933`: 276 warning
  - added the new `already_exists` enum value to the `error/code` response property for the response status `400`
  - added the new `already_exists` enum value to the `error/code` response property for the response status `401`
  - added the new `already_exists` enum value to the `error/code` response property for the response status `403`
  - added the new `already_exists` enum value to the `error/code` response property for the response status `404`
  - …272 more
- **2026-02-08** `3aa940f5978d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/arkhq-io/apis/ark-email-api/changes/tenants/:tenantId/credentials/get.md)

---

[API](https://skmtc.dev/arkhq-io/apis/ark-email-api.md) - [All operations](https://skmtc.dev/arkhq-io/apis/ark-email-api/llms.txt) - [OpenAPI document](https://skmtc.dev/arkhq-io/apis/ark-email-api/revisions/98a90852ffca?raw)
