# Update certification metadata

URL: /en/docs/api/v1/certifications/id/patch
Last Updated: 2026-07-30T21:15:29.690Z

## Description
No description available.

## Available Actions
- Execute PATCH request
- View request parameters
- View response schema
- Get code examples
- Navigate to related topics
- View step-by-step instructions
- Get best practices

## Content
### PATCH /api/v1/certifications/{id}

**Update certification metadata**

Update certification metadata including title, description, validity periods, and display settings.

**Authentication:** Bearer token (`Authorization: Bearer <token>`)

**Path parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `id` | string (uuid) | Yes | Certification ID |

**Request body** (`application/json`) - required:

- `title` (string): Certification title
- `slug` (string): URL-friendly certification identifier
- `description` (string): Certification description
- `description_markdown` (string): Markdown-formatted description
- `issue_date` (string (date)): Issue date in YYYY-MM-DD format
- `expiry_date` (string (date)): Expiry date in YYYY-MM-DD format
- `validity_months` (integer): Validity period in months
- `state` (enum: valid | expired): Certification state
- `featured` (boolean): Whether certification should be featured
- `show_validity_period_on_card` (boolean): Show validity period on card display
- `variant_options` (array of string (uuid)): Variant option IDs to assign to this item (default locale only). Replaces all existing assignments. If the content update succeeds but the assignment sync fails, the response is still 200 and includes `variant_assignments_warning: variant_assignments_failed` while omitting `variant_options`; an assignment-only update that fails to sync returns 500 with error `variant_assignments_failed`. On success the response echoes the assigned option IDs as `variant_options`.

Example (Update title and description):

```json
{
  "title": "ISO 27001:2022 Certificate",
  "slug": "iso-27001",
  "description": "Updated Information Security Management System certification"
}
```

Example (Extend certification validity):

```json
{
  "expiry_date": "2027-01-01",
  "validity_months": 24,
  "state": "valid"
}
```

Example (Update display settings):

```json
{
  "featured": true,
  "show_validity_period_on_card": true
}
```

Example (Complete certification update):

```json
{
  "title": "SOC 2 Type II - Updated",
  "slug": "soc-2-type-ii",
  "description": "Service Organization Control certification - annual renewal",
  "description_markdown": "## SOC 2 Type II\n\n Annual security audit completed",
  "issue_date": "2025-01-15",
  "expiry_date": "2026-01-15",
  "state": "valid",
  "featured": true
}
```

**Responses:**

- `200` - Certification updated successfully
  - `success` (boolean)
  - `data` (CertificationDetailed (object))
    - `id` (string (uuid)): Unique certification identifier
    - `title` (string): Certification title
    - `slug` (string): URL-friendly certification identifier
    - `description` (string): Certification description
    - `description_markdown` (string): Markdown-formatted description
    - `category` (object): Always "Compliance" category for certifications
      - `id` (string (uuid))
      - `title` (string)
    - `issue_date` (string (date)): Certificate issue date in YYYY-MM-DD format
    - `expiry_date` (string (date)): Certificate expiry date in YYYY-MM-DD format
    - `validity_months` (integer): Certificate validity period in months
    - `state` (enum: valid | expired): Current certification state
    - `featured` (boolean): Whether certification is featured
    - `show_validity_period_on_card` (boolean): Show validity period on card display
    - `badge` (string): URL to certification badge image
    - `file` (string): URL to certification document file
    - `date_created` (string (date-time)): Creation timestamp
    - `date_updated` (string (date-time)): Last update timestamp
- `400` - Bad Request - validation failed
  - `error` (string)
- `401` - Unauthorized
- `404` - Certification not found
- `409` - Conflict - slug already exists
  - `error` (string)
- `500` - Internal server error

**Code samples:**

cURL:

```bash
curl -X PATCH "https://app.orbiqhq.com/api/v1/certifications/{id}" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json"
```

