---
title: Get a certificate
description: Fetch a single certificate by id
method: GET
path: /api/v1/workspaces/{slug}/certificates/{id}
group: Certificates
scopes: certificates:read
---

# Get a certificate

# Get a certificate

Returns one certificate, including linked skills and recipient counts.

## Authorization

```http
Authorization: Bearer vc_...
```

Requires `certificates:read` (or full access) and an active Pro seat.

## Path parameters

  
- `slug*` string — Workspace slug Example: `acme`.

  
- `id*` UUID — Certificate id Example: `550e8400-e29b-41d4-a716-446655440000`.

## Request

```bash
curl https://api.verifycate.com/api/v1/workspaces/acme/certificates/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer vc_your_api_key"
```

```javascript
const id = "550e8400-e29b-41d4-a716-446655440000";
const res = await fetch(
  `https://api.verifycate.com/api/v1/workspaces/acme/certificates/${id}`,
  { headers: { Authorization: "Bearer vc_your_api_key" } },
);
const certificate = await res.json();
```

```go
url := "https://api.verifycate.com/api/v1/workspaces/acme/certificates/550e8400-e29b-41d4-a716-446655440000"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer vc_your_api_key")
res, err := http.DefaultClient.Do(req)
```

```python
import urllib.request

url = "https://api.verifycate.com/api/v1/workspaces/acme/certificates/550e8400-e29b-41d4-a716-446655440000"
req = urllib.request.Request(url, headers={"Authorization": "Bearer vc_your_api_key"})
with urllib.request.urlopen(req) as res:
    print(res.read().decode())
```

## Response schema

- `active_recipient_count*` integer — 
- `attributes*` object — 
- `blockchain_enabled*` boolean — 
- `certificate_type*` string — 
- `correction_form_enabled*` boolean — 
- `correction_form_fields*` array — 
- `correction_form_mode*` string — 
- `correction_form_token*` string — 
- `created_at*` string — 
- `description*` string — 
- `duration*` string — 
- `earning_criteria*` object — 
- `has_template*` boolean — 
- `id*` string — 
- `learn_more_url*` string — 
- `level*` string — 
- `name*` string — 
- `pending_recipient_count*` integer — 
- `published_template_version?` integer — 
- `recipient_status_counts?` RecipientStatusCounts — 
  - `awaiting_form_response*` integer — 
  - `awaiting_review*` integer — 
  - `changes_requested*` integer — 
  - `expired*` integer — 
  - `issued*` integer — 
  - `ready_to_send*` integer — 
  - `waiting_for_publish*` integer — 
- `request_form_enabled*` boolean — 
- `request_form_fields*` array — 
- `request_form_mode*` string — 
- `request_form_token*` string — 
- `skills*` array — 
- `sponsors*` array — 
- `status*` string — 
- `template_versions?` array — 
- `unlock_form_enabled*` boolean — 
- `unlock_form_fields*` array — 
- `unlock_release_policy?` string — 
- `updated_at*` string — 
- `validity_days*` integer — 
- `workspace_id*` string — 

## Response

### 200

```json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "workspace_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "name": "Python Fundamentals",
  "status": "active",
  "validity_days": 365,
  "request_form_enabled": false,
  "unlock_form_enabled": false,
  "request_form_mode": "manual_approval",
  "correction_form_enabled": false,
  "correction_form_mode": "manual_approval",
  "attributes": [
    { "key": "course", "label": "Course" }
  ],
  "description": "Completion of the Python fundamentals track",
  "certificate_type": "course",
  "level": "beginner",
  "duration": "8 weeks",
  "learn_more_url": "https://example.com/python",
  "earning_criteria": ["Complete all modules"],
  "created_at": "2026-01-15T10:00:00Z",
  "updated_at": "2026-03-01T12:30:00Z",
  "skills": [
    { "id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11", "name": "Python" }
  ],
  "has_template": true,
  "published_template_version": 2,
  "pending_recipient_count": 3,
  "active_recipient_count": 42
}
```

### 404

```json
{
  "title": "Not Found",
  "status": 404,
  "detail": "certificate not found",
  "code": "certificate_not_found"
}
```
