Everything on the site, and the API for doing it from outside the site.
Sign up, verify your email, and upload your first certificate (a PDF or an image) from the dashboard. A thumbnail and, when possible, a title/issuer/year suggestion are generated automatically from the file — you review and adjust before saving, nothing is ever auto-filled without a chance to check it first.
Once you have at least one public certificate, your wall is live at /u/your-username — that's the link to share.
Every certificate has a category (Education, Courses, Workshops, Awards, Certifications, Other by default — manage your own list from Categories), a visibility level, and an optional frame style. Related certificates (e.g. individual courses within one program) can be grouped: attach one certificate to another from its edit page, and it shows up nested under its parent with a "+N more" badge, one level deep.
Editing a certificate lets you change any of its details, re-run text detection against the file, redact sensitive parts of it, and pick a frame — but not replace the underlying file itself; a wrong scan means deleting and re-uploading.
Each certificate is Public (shown on your wall to anyone), Unlisted (reachable only if someone has the exact link — not shown on your wall), or Private (visible only to you). You can also create named, revocable share links for a certificate (Friends & Family / Public / Other), each stamped with its own watermark when downloads are off — revoking one immediately invalidates it without touching the certificate itself.
Turning off "Allow downloads" on a certificate doesn't hide it — it still opens inline for anyone who can see it — it just stops offering an explicit, save-to-disk download link to non-owners, who instead see a watermarked preview.
Pick a default layout in Settings — Grid, Featured (top 3 pinned), Timeline (grouped by year), or Categorized (grouped by category) — anyone visiting can still switch between all four just to browse; only your own pick is remembered as the default. Choose a theme (Elegant, Minimal, Sepia, Ink), and independently, a display font (Fraunces, Playfair, Inter, Space Grotesk, or just follow your theme) that applies to your own name/title wherever it appears. A frame style adds a cosmetic border/effect around every card's thumbnail — several are free, a few newer ones are visible as a preview of what's coming with a future paid tier, not selectable yet.
Settings → Privacy has a "Share my wall" switch — turning it off makes your entire wall invisible to everyone but you, as if every certificate on it were private at once, regardless of what any one of them is individually set to. If you'd rather keep it reachable but gated, set a PIN or password instead: anyone but you needs it before anything on your wall shows, even with the direct link. Once entered, a browser isn't asked again for about a week.
If a certificate shows something you'd rather not share — a signature, an ID number, an address — draw boxes over it and redact: the covered regions are permanently blacked out of a genuinely new file, not hidden with an overlay, so the original pixels are gone from what anyone but you ever sees. You can redact again later to cover more, or remove the redaction entirely to go back to showing the true original.
Once redacted, you can optionally generate a title/description suggestion from the redacted image via a free-tier AI provider — shown as an editable draft you can accept, adjust, or ignore, the same way OCR-based suggestions already work. This step is entirely optional and never runs against your original, unredacted file.
Profile (name, username, bio, photo), Appearance (theme, layout, font), Privacy (wall on/off, PIN), API access (below), and a Danger zone to delete your account — which removes every certificate and file permanently and freezes your username for 90 days so nobody, including you, can immediately reclaim it.
Common questions (does this verify certificates, can I recover a deleted account, what happens to share links, etc.) are answered on the separate FAQ page, to keep this page focused on how things work rather than why.
Generate a key from Settings → API access. Every request needs it in an Authorization header:
curl https://wallofcertificates.com/api/v1/certificates \ -H "Authorization: Bearer woc_your_key_here"
A key only ever acts as its own owner — there's no way to use one to reach another account's certificates. Keys can be named, listed, and revoked at any time from Settings; revoking one takes effect immediately.
| Method & path | Does |
|---|---|
| GET /api/v1/certificates | List your certificates (?limit=/?offset=). |
| POST /api/v1/certificates | Upload a file and create a certificate in one call (multipart). |
| GET /api/v1/certificates/:id | Get one certificate. |
| PATCH /api/v1/certificates/:id | Update title/issuer/date/category/description/visibility/download/frame. |
| DELETE /api/v1/certificates/:id | Delete a certificate and its files, permanently. |
| GET /api/v1/categories | List your categories (to use their ids in the calls above). |
curl https://wallofcertificates.com/api/v1/certificates \ -H "Authorization: Bearer woc_your_key_here" \ -F "file=@certificate.pdf" \ -F "title=Google Data Analytics" \ -F "issuer=Google" \ -F "issueDate=2026-01-15" \ -F "visibility=public"
Each key is limited on its own; separately, everything across every key an account owns is limited again as a whole, so creating more keys can't raise your account's total allowance. A request over either limit gets back 429 with a Retry-After header naming how many seconds to wait. Both limits reset every minute.
Certificate grouping, redaction, and AI suggestions aren't exposed via the API yet — those still need the dashboard's review-before-saving flow. Category management (create/rename/reorder/delete) is also dashboard-only for now; the API can only assign an existing category's id to a certificate.