---
title: List certificates
description: List certificates in a workspace with search and pagination
method: GET
path: /api/v1/workspaces/{slug}/certificates
group: Certificates
scopes: certificates:read
---

# List certificates

# List certificates

Lists certificates in the workspace. Each item may include an embedded template draft JSON when one exists. Supports search and offset pagination.

## Authorization

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

Requires a workspace API key with `certificates:read` (or full access) and an active Pro seat.

## Path parameters

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

## Query parameters

  
- `search?` string — Filter by certificate name Example: `Python`.

  
- `limit?` integer — Page size (1–200). Defaults to `50`. Example: `50`.

  
- `offset?` integer — Number of items to skip. Defaults to `0`. Example: `0`.

## Request

```bash
curl "https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0" \
  -H "Authorization: Bearer vc_your_api_key"
```

```javascript
const res = await fetch(
  "https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0",
  { headers: { Authorization: "Bearer vc_your_api_key" } },
);
const page = await res.json();
```

```go
req, _ := http.NewRequest(
	"GET",
	"https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0",
	nil,
)
req.Header.Set("Authorization", "Bearer vc_your_api_key")
res, err := http.DefaultClient.Do(req)
```

```python
import urllib.request

req = urllib.request.Request(
    "https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0",
    headers={"Authorization": "Bearer vc_your_api_key"},
)
with urllib.request.urlopen(req) as res:
    print(res.read().decode())
```

## Response schema

- `items*` array — 
- `limit*` integer — 
- `offset*` integer — 
- `total*` integer — 

## Response

### 200

```json
{
  "items": [
    {
      "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",
      "request_form_token": null,
      "correction_form_token": null,
      "attributes": [
        { "key": "course", "label": "Course" },
        { "key": "roll_number", "label": "Roll number" }
      ],
      "request_form_fields": [],
      "unlock_form_fields": [],
      "unlock_form_fields": [],
      "correction_form_fields": [],
      "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", "Pass the final quiz"],
      "created_at": "2026-01-15T10:00:00Z",
      "updated_at": "2026-03-01T12:30:00Z",
      "template": {}
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}
```
