---
title: "Update a credential"
method: PATCH
path: "/tenants/{tenantId}/credentials/{credentialId}"
tags: ["Credentials"]
---

# Update a credential

`PATCH /tenants/{tenantId}/credentials/{credentialId}`

Update a credential's name or hold status.

**Hold Status:**
- When `hold: true`, the credential is disabled and cannot be used to send emails.
- When `hold: false`, the credential is active and can send emails.
- Use this to temporarily disable a credential without deleting it.

## Path parameters

- `tenantId` string, required
- `credentialId` integer, required

## Request body

- object
  - `name` string — New name for the credential
  - `hold` boolean — Set to `true` to disable the credential (put on hold). Set to `false` to enable the credential (release from hold).

## Response `200`

Credential updated

- CredentialResponse
  - `success` true, required
  - `data` CredentialWithKey, required
    - `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
    - `key` string — The credential key (secret). Only included when: - Creating a new credential (always returned) - Retrieving with `reveal=true`
    - `smtpUsername` string — SMTP username for authentication. Only included for SMTP credentials when the key is revealed.
  - `meta` ApiMeta, required
    - `requestId` string, required — Unique request identifier for debugging and support

## Other responses

- `400` — Validation error
- `401` — Invalid or missing API key
- `403` — Missing required scope
- `404` — Credential or tenant not found
- `429` — Rate limit exceeded
- `500` — Internal server error

## Changes

- **2026-02-05** `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-04** `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-03** `3aa940f5978d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/arkhq-io/apis/ark-email-api/changes/tenants/:tenantId/credentials/:credentialId/patch.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-service-production.skmtc.workers.dev/v1/apis/arkhq-io/ark-email-api/revisions/98a90852ffca/schema)
