API Endpoints

Catalog of routes available in Acreditta’s public API, grouped by what you’re trying to accomplish. All of them require the Authorization: Bearer <idToken> header you get from Getting started with the API, unless stated otherwise.

🔎 Note: this table summarizes the purpose of each route. The exact parameters, request body, and full response codes are in Swagger: https://public-api.acreditta.com/swagger/#/.

Issue credentials

Route Method Use
/credential/issue POST Issues a single credential.
/credential/batch/create POST Creates an issuance batch.
/credential/batch/close/{batchId} PATCH Closes an already-created issuance batch.

Issue a single credential

POST /credential/issue accepts the following fields in the body:

Field Type Required Notes
credentialTemplateId string Yes ID of the credential template to issue.
firstName string Yes Earner’s first name.
lastName string No Earner’s last name.
email string (email) Yes Earner’s email — receives the notification if sendNotification is true.
phoneNumber string No With country code, e.g. +573203133677.
identification string No Earner’s identification number.
awardedAt string (date) Yes Date the credential was awarded.
expiresAt string (date) No Expiration date, if the credential has one.
creditHours integer No Associated credit hours, if the template uses them.
licenseNumber string No License number, if the template requires it.
result string No Result or grade obtained.
programStartDate / programEndDate string (date) No Start and end dates of the completed program.
degreeCertificate string No Number or identifier of the certificate/diploma.
book / sheet string No Registry book and page, if your institution uses them.
evidences array (max 5 items) No Evidence of the achievement. Each item accepts name (required), description, and url.
evidenceAnnexe object No Additional annex: annexe (content) and type (markdown or url).
issuingTags array of string No Free-form tags to classify the issuance.
sendNotification boolean No Whether to notify the earner by email as soon as it’s issued.
overwriteRecord object No Overrides, only for this issuance, the design (recordDesign), text (texts), or images (images) of the record.
updateCredential boolean No true to update an already-issued credential instead of creating a new one. Defaults to false.
credentialUUID string No Required only when updateCredential is true — identifies the credential to update.

POST /credential/issue also accepts the batch_id query parameter (integer, optional): if you send it, the credential is added to the given issuance batch instead of being issued standalone (see Batch credential issuance).

The response includes credentialId, transactionBlock, acceptanceLink, and rejectionLink.

{
  "credentialTemplateId": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "user@example.com",
  "awardedAt": "2026-09-07",
  "evidences": [
    { "name": "string", "description": "string", "url": "string" }
  ],
  "sendNotification": true
}

🔎 Note: to update an already-issued credential instead of creating a new one, send updateCredential: true together with credentialUUID.

Batch credential issuance

To issue to many earners at once: create the batch with POST /credential/batch/create (providing credentialTemplateId), issue individual credentials inside that batch by passing batch_id as a query parameter on POST /credential/issue, and when you’re done, close it with PATCH /credential/batch/close/{batchId}.

Query credentials

Route Method Use
/credential/list GET Lists your organization’s credentials.
/credential/{credentialId} GET Looks up a specific credential.
/credential/record/{credentialId} GET Gets a credential’s record/certificate.
/report/credential/status GET Credential status report.

🔎 Note: /credential/record/{credentialId} is the only credential route that does not require a plan with the API feature enabled — it stays open so it doesn’t break older PDF/record integrations. Every other route requires the API feature active on your plan (see Plans and limits).

Manage credentials

Route Method Use
/credential/revoke/{credentialId} PATCH Revokes a credential.

Templates and flows

Route Method Use
/template/list GET Lists your organization’s templates.
/template/validate-user GET Checks whether an email has access to a template (parameters credentialTemplateId, email).
/flows GET Lists the flows configured in your organization.
/get-organization GET Returns your organization’s metadata.

Response codes you should handle

Code When it appears
200 The request was processed successfully.
401 Invalid or expired token, or the JWT doesn’t correspond to an API user (profile=developer). Check your login.
402 Your organization doesn’t have the plan that enables API access. See Plans and limits.
406 The request failed validation (for example, a required field is missing or malformed). Check the body against the schema in Swagger.

Next step


CONTENIDO