---
title: Get a public certificate
description: Fetch a publicly verifiable issued certificate by public id
method: GET
path: /api/v1/certificates/{publicID}
group: Verify
---

# Get a public certificate

# Get a public certificate

Returns the public view of an issued certificate. No authentication. Pending issues are not visible (`404`).

Also available: the signed Open Badge / Verifiable Credential document at `GET /api/v1/certificates/{publicID}/credential.json` (`Content-Type: application/vc+ld+json`).

## Authorization

None. Do not send an API key.

## Path parameters

  
- `publicID*` string — Public id of the issued certificate Example: `vc_pub_ada01`.

## Query parameters

  
- `workspace?` string — Optional. When set, returns `404` unless the certificate belongs to this workspace slug Example: `acme`.

## Request

```bash
curl https://api.verifycate.com/api/v1/certificates/vc_pub_ada01
```

```javascript
const res = await fetch(
  "https://api.verifycate.com/api/v1/certificates/vc_pub_ada01",
);
const certificate = await res.json();
```

```go
res, err := http.Get(
	"https://api.verifycate.com/api/v1/certificates/vc_pub_ada01",
)
```

```python
import urllib.request

with urllib.request.urlopen(
    "https://api.verifycate.com/api/v1/certificates/vc_pub_ada01"
) as res:
    print(res.read().decode())
```

## Response schema

- `attribute_definitions*` array — 
- `attributes*` object — 
- `blockchain?` AnchorStatus — 
  - `channels*` array — 
  - `status*` string — 
- `certificate*` PublicCertificateRef — 
  - `certificate_type?` string — 
  - `description?` string — 
  - `duration?` string — 
  - `earning_criteria?` array — 
  - `learn_more_url?` string — 
  - `level?` string — 
  - `name*` string — 
  - `skills?` array — 
  - `sponsors?` array — 
- `correction_form_url?` string — 
- `expires_at*` string — 
- `issued_at*` string — 
- `nft?` NFTStatus — 
  - `chain_id*` integer — 
  - `contract*` string — 
  - `explorer_url?` string — 
  - `image_url?` string — 
  - `metadata_uri?` string — 
  - `opensea_url?` string — 
  - `status*` string — 
  - `token_id*` string — 
- `pdf_url?` string — 
- `png_url?` string — 
- `public_id*` string — 
- `recipient_name*` string — 
- `status*` string — 
- `template*` object — 
- `template_version?` integer — 
- `workspace*` PublicBranding — 
  - `avatar_url?` string — 
  - `brand_accent_color?` string — 
  - `brand_background_color?` string — 
  - `brand_text_color?` string — 
  - `hide_verifycate_branding*` boolean — 
  - `logo_url?` string — 
  - `name*` string — 
  - `portal_origin?` string — 
  - `slug*` string — 
  - `website?` string — 

## Response

### 200

```json
{
  "public_id": "vc_pub_ada01",
  "status": "active",
  "recipient_name": "Ada Lovelace",
  "issued_at": "2026-09-03T09:00:00Z",
  "expires_at": "2027-09-03T09:00:00Z",
  "attributes": {
    "course": "Mathematics"
  },
  "attribute_definitions": [
    { "key": "course", "label": "Course" }
  ],
  "template": {},
  "png_url": "https://cdn.example.com/certificates/vc_pub_ada01.png",
  "pdf_url": "https://cdn.example.com/certificates/vc_pub_ada01.pdf",
  "template_version": 2,
  "certificate": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Python Fundamentals",
    "description": "Completion of the Python fundamentals track",
    "certificate_type": "course",
    "level": "beginner",
    "skills": [
      { "id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11", "name": "Python" }
    ]
  },
  "workspace": {
    "slug": "acme",
    "name": "Acme Institute",
    "logo_url": "https://cdn.example.com/logo.png",
    "brand_accent_color": "#0F766E",
    "hide_verifycate_branding": false
  }
}
```

### 404

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