Proudify
code Developer Docs

API Reference

The Proudify REST API lets you fetch and manage the certificates you have issued programmatically using a personal access token.

Introduction

All API requests are made over HTTPS. The API returns JSON for all responses. Requests and responses are UTF-8 encoded. Timestamps are in ISO 8601 format.

info

The API currently provides read access to certificates you have issued. Write endpoints (issuing, updating, deleting) are on the roadmap.

Authentication

The API uses Bearer token authentication (Laravel Sanctum personal access tokens). Every request must include an Authorization header:

Authorization: Bearer YOUR_API_TOKEN

Generating a token

  1. Sign in to your Proudify account.
  2. Go to Profile → API Tokens.
  3. Enter a name for the token and click Create Token.
  4. Copy the token immediately — it will not be shown again.
warning

Treat API tokens like passwords. Do not embed them in client-side code or commit them to version control. Use environment variables.

Base URL

All endpoints are prefixed with:

https://proudify.in/api/v1

Rate Limiting

The API is rate-limited to 60 requests per minute per token. When you exceed the limit you receive a 429 Too Many Requests response. The following headers are included in every response:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window.
X-RateLimit-RemainingRequests remaining in the current window.
Retry-AfterSeconds to wait before retrying (only on 429).

Errors

All error responses follow the same shape:

{
  "message": "Unauthenticated."
}
StatusMeaning
400Bad Request — invalid parameters.
401Unauthorized — missing or invalid token.
403Forbidden — you do not own this resource.
404Not Found — resource does not exist.
422Validation Error — see errors key for details.
429Too Many Requests — rate limit exceeded.
500Server Error — something went wrong on our end.
GET

/certificates

Returns a paginated list of all certificates issued by the authenticated user, sorted newest first.

Query Parameters

ParameterTypeRequiredDescription
per_page integer optional Results per page. Default: 15. Max: 100.
page integer optional Page number to retrieve. Default: 1.

Example Request

# List the first 25 certificates
curl https://proudify.in/api/v1/certificates?per_page=25 \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Response

{
  "data": [
    {
      "uuid":               "01940e3d-bfa2-7b2e-aef0-c3db35e12abc",
      "title":              "Data Science – Batch 2025",
      "recipient_name":     "Priya Mehta",
      "recipient_email":    "priya@example.com",
      "description":        null,
      "date_of_issue":      "2025-06-01",
      "date_of_expiry":     null,
      "status":             "issued",
      "verification_code":  "PRD-A1B2C3",
      "verify_url":         "https://proudify.in/certificates/verify/...",
      "created_at":         "2025-06-01T10:30:00+05:30"
    }
  ],
  "links": {
    "first": "https://proudify.in/api/v1/certificates?page=1",
    "last":  "https://proudify.in/api/v1/certificates?page=4",
    "prev":  null,
    "next":  "https://proudify.in/api/v1/certificates?page=2"
  },
  "meta": {
    "current_page": 1,
    "per_page":     25,
    "total":        87,
    "last_page":    4
  }
}
GET

/certificates/{uuid}

Returns a single certificate. The {uuid} segment accepts either the certificate's UUID or the human-readable Credential ID (e.g. PRD-A1B2C3) printed on the certificate.

Path Parameters

ParameterTypeRequiredDescription
uuid string required The certificate UUID or Credential ID.

Example Request

curl https://proudify.in/api/v1/certificates/01940e3d-bfa2-7b2e-aef0-c3db35e12abc \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

# Also works with the Credential ID printed on the certificate
curl https://proudify.in/api/v1/certificates/PRD-A1B2C3 \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Response

{
  "data": {
    "uuid":               "01940e3d-bfa2-7b2e-aef0-c3db35e12abc",
    "title":              "Data Science – Batch 2025",
    "recipient_name":     "Priya Mehta",
    "recipient_email":    "priya@example.com",
    "description":        null,
    "date_of_issue":      "2025-06-01",
    "date_of_expiry":     null,
    "status":             "issued",
    "verification_code":  "PRD-A1B2C3",
    "verify_url":         "https://proudify.in/certificates/verify/...",
    "created_at":         "2025-06-01T10:30:00+05:30"
  }
}
GET

/certificates/{uuid}/image

Streams the rendered certificate as a PNG image. Returns 404 if the image has not been generated yet.

Example Request

curl https://proudify.in/api/v1/certificates/01940e3d-bfa2-7b2e-aef0-c3db35e12abc/image \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  --output certificate.png
GET

/certificates/{uuid}/download

Downloads the certificate as a PDF file with a Content-Disposition: attachment header. Returns 404 with "The PDF is still being generated." if the file is not ready yet.

Example Request

curl https://proudify.in/api/v1/certificates/01940e3d-bfa2-7b2e-aef0-c3db35e12abc/download \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -L --output "certificate.pdf"
GET

/certificates/{uuid}/qr

Streams the QR code for the certificate as a PNG image. Scanning the QR code opens the public verification page for the credential.

Example Request

curl https://proudify.in/api/v1/certificates/01940e3d-bfa2-7b2e-aef0-c3db35e12abc/qr \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  --output qr.png

Certificate Object

Fields returned inside data for every certificate endpoint.

FieldTypeDescription
uuidstringInternal UUID of the certificate.
titlestringName of the certificate / program.
recipient_namestringFull name of the certificate recipient.
recipient_emailstringEmail address of the recipient.
descriptionstring|nullOptional description or achievement text.
date_of_issuestring (date)Issue date in YYYY-MM-DD format.
date_of_expirystring|nullExpiry date if set, otherwise null.
statusstringCurrent status: issued, expired, or revoked.
verification_codestringHuman-readable Credential ID (e.g. PRD-A1B2C3).
verify_urlstring (url)Public verification URL for this certificate.
created_atstring (ISO 8601)When the certificate record was created.

Ready to build?

Generate your API token from the Profile page and start making requests.

Create Free Account arrow_forward