Skip to main content

Quick Start

This guide walks you through issuing a digital certificate end-to-end using real API calls. You’ll create the minimum required entities and issue a certificate in a single session.
All entities must belong to the same tenant. Obtain your credentials from the DokStamp dashboard before starting.

Prerequisites

  • API credentials (email + password)
  • Your X-Tenant identifier
  • A PDF file of the certificate to issue

Step 1 — Authenticate

curl -X POST https://api.dokstamp.eu/auth/login \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"email": "admin@myschool.edu", "password": "secret"}'
Save the access_token from the response. You’ll use it in every subsequent request.

Step 2 — Create an Institution

An institution is the issuing body. It must exist before courses or certificates.
curl -X POST https://api.dokstamp.eu/institutions \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Tenant: {TENANT}" \
  -d '{
    "name": "My University",
    "legal_name": "My University Foundation",
    "tax_id": "00.000.000/0001-00",
    "country": "Brazil",
    "website": "https://myuniversity.edu.br",
    "status": "active"
  }'
Save the uuid from the response — you’ll need it as institution_uuid.

Step 3 — Create a Course

curl -X POST https://api.dokstamp.eu/courses \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Tenant: {TENANT}" \
  -d '{
    "name": "Bachelor of Computer Science",
    "code": "BCS-2024",
    "description": "4-year undergraduate program in computer science.",
    "workload_hours": 3200,
    "status": "active",
    "institution_uuid": "{INSTITUTION_UUID}"
  }'
Save the uuid as course_uuid.

Step 4 — Create a Student

curl -X POST https://api.dokstamp.eu/students \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Tenant: {TENANT}" \
  -d '{
    "name": "Maria Fernanda Silva",
    "email": "maria@email.com",
    "date_of_birth": "1998-05-20",
    "gender": "female"
  }'
Save the uuid as student_uuid.

Step 5 — Upload the PDF

Upload the signed certificate PDF file:
curl -X POST https://api.dokstamp.eu/files \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "X-Tenant: {TENANT}" \
  -F "files[]=@/path/to/certificate.pdf"
The response returns an array. Save the first item’s uuid as file_uuid.

Step 6 — Issue the Certificate

Now combine everything into a certificate:
curl -X POST https://api.dokstamp.eu/certificates \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Tenant: {TENANT}" \
  -d '{
    "institution_uuid": "{INSTITUTION_UUID}",
    "course_uuid": "{COURSE_UUID}",
    "student_uuid": "{STUDENT_UUID}",
    "file_uuid": "{FILE_UUID}",
    "status": "issued",
    "issued_at": "2024-12-01T00:00:00Z"
  }'
Response:
{
  "data": {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "issued",
    "issued_at": "2024-12-01T00:00:00.000000Z",
    "public_verification_url": "https://verificar.dokstamp.eu/a1b2c3d4",
    "student": { "name": "Maria Fernanda Silva" },
    "course": { "name": "Bachelor of Computer Science" },
    "institution": { "name": "My University" }
  }
}
The public_verification_url is the shareable link for credential verification.

What’s next?

Entity Registration Order

See the full dependency map before building integrations.

Certificate Lifecycle

Learn how certificates move from draft to issued, revoked, and expired.

Issue Certificate Guide

A longer guide with modules, cohorts, enrollments, and templates.

API Reference

Full parameter reference for every endpoint.