Currency

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": false to 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:// onlyhttp:// 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.

Response201 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.

Response200 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).

Response200 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

Currency
Rupiah is paid by transfer or QRIS; US dollars settle through PayPal.