Certifications
A certification is a credential shown on your storefront's credibility strip: what it is, who issued it, when, and a link a buyer can use to verify it. Certifications are a Storlaunch built-in — not a module, available on every plan.
Certifications belong to exactly one workspace (accountId) and render in curated order (sortOrder ascending, then oldest first). Unlike portfolio and testimonials, a certification has no productId — credentials belong to the business, not to one product.
All requests on this page require an sk_* key. See Authentication and API overview.
Endpoints
| Method | Path | Purpose |
|---|---|---|
POST |
/v1/certifications |
Create a certification |
GET |
/v1/certifications |
List all certifications |
GET |
/v1/certifications/:id |
Retrieve one |
PATCH |
/v1/certifications/:id |
Update one (including reordering) |
DELETE |
/v1/certifications/:id |
Delete one permanently |
Create a certification
POST /v1/certifications
name and issuer are both required.
New certifications are published by default — live on your public storefront immediately. Pass
"published": falseto stage.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name |
string (1–140) | yes | The credential, e.g. "AWS Certified Solutions Architect". Trimmed. |
issuer |
string (1–140) | yes | The issuing body, e.g. "Amazon Web Services". Trimmed. |
issuedAt |
string (ISO 8601) | null | no | When it was awarded. Rendered as the year on the card. |
credentialUrl |
string | null | no | Link to the verifiable credential. https:// only — http:// and relative paths are rejected. Max 2048. |
imageUrl |
string | null | no | Badge or certificate image. http(s):// URL or a root-relative path such as /api/v1/files/<name>; blob:/data: previews are rejected. Max 2048. |
published |
boolean | no | Visible on the public storefront. Default true. |
sortOrder |
integer (≥0) | no | Position, ascending. Default 0. |
Note the asymmetry: credentialUrl is https-only because it leaves your storefront, while imageUrl also accepts a root-relative uploads path because it is served from your own origin.
Response — 201 Created
{
"data": {
"certification": {
"id": "crt_01HXAB7K3M9N2P5QRS8TVWXY3Z",
"accountId": "acc_01HX...",
"name": "AWS Certified Solutions Architect",
"issuer": "Amazon Web Services",
"issuedAt": "2025-11-04T00:00:00.000Z",
"credentialUrl": "https://www.credly.com/badges/abc123",
"imageUrl": "/api/v1/files/aws-saa.png",
"sortOrder": 0,
"published": true,
"createdAt": "2026-05-13T10:42:00.123Z",
"updatedAt": "2026-05-13T10:42:00.123Z"
}
},
"error": null,
"meta": { "requestId": "req_01HX...", "timestamp": "2026-05-13T10:42:00Z" }
}
Ids are always crt_ + ULID. Note the singular key certification.
Errors specific to this endpoint
| Status | error.code |
When |
|---|---|---|
400 |
VALIDATION_ERROR |
name or issuer empty or over 140; credentialUrl not https://; imageUrl a blob:/data: URL; issuedAt unparseable. |
401 |
UNAUTHORIZED |
Key missing, malformed, or revoked. |
There is no cross-resource ownership error here — certifications reference nothing else.
List certifications
GET /v1/certifications
Returns every certification for the workspace in render order, published and unpublished alike. No pagination, no filters.
Response — 200 OK
{ "data": { "certifications": [ /* … */ ] }, "error": null, "meta": { /* … */ } }
Retrieve one
GET /v1/certifications/:id
404 RESOURCE_NOT_FOUND when the id does not exist or belongs to another workspace.
Update one
PATCH /v1/certifications/:id
Partial update; every create field is editable, including sortOrder. An empty body is rejected with 400 VALIDATION_ERROR (no fields to update).
Response — 200 OK, the full updated record under data.certification.
Delete one
DELETE /v1/certifications/:id
Permanent — the row is destroyed, not archived.
{ "data": { "deleted": true }, "error": null, "meta": { /* … */ } }
The object
| Field | Type | Nullable | Description |
|---|---|---|---|
id |
string | no | crt_ + ULID. |
accountId |
string | no | Owning workspace. |
name |
string | no | ≤140. |
issuer |
string | no | ≤140. |
issuedAt |
string (ISO 8601) | yes | Rendered as the year. |
credentialUrl |
string | yes | https:// verification link. |
imageUrl |
string | yes | Badge image. |
sortOrder |
integer | no | Ascending. Default 0. |
published |
boolean | no | Default true. |
createdAt / updatedAt |
string (ISO 8601) | no | Server-managed. |
Next
- Portfolio — past work.
- Testimonials — customer quotes.