Accredify Dashboard API

The Accredify Dashboard API, published as two OpenAPI 3.1 documents. v1 covers OAuth 2.0 authorization-code grant and refresh, OpenBadges issuance, update and revocation, batch upload (JSON and Excel), issue-on-upload, certificate revocation by hash, email dispatch and an external-app certificate lookup. v2 covers batches, batch items, courses, documents, templates, email templates and the institution access matrix. Bearer JWT authentication; a UAT sandbox host is published in the specification servers block.

Operations 14

POST /v1/oauth/grant Generate an access token #
GET /v1/oauth/redirect Request for user to authorize third party application access to their account. If successful, returns redirect with authorization code & state which can be used to request for an a #
POST /v1/oauth/refresh Refresh expired access tokens #
GET /v1/login/userTokenToLogin Logs in user using access token in authorization header #
POST /v1/openbadges/issue Allow an issuer to create open badges #
POST /v1/openbadges/new-course Allow an issuer to create an open badges course #
DELETE /v1/openbadges/{assertion} Allow an issuer to revoke an open badge #
PATCH /v1/openbadges/{assertion} Allow an issuer to update an open badge #
POST /v1/uploadBatch Upload a batch to the dashboard #
POST /v1/uploadBatchExcel Upload a batch via Excel to the dashboard #
POST /v1/uploadIssueBatch Uploads and issue a batch to the dashboard #
POST /v1/revokeCerts Revoked certificates by their hashes #
POST /v1/sendEmails Triggers the sending of emails for the certificates provided #
POST /ext/getCertificates Retrieves an array of Certificates #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/accredify0604-dashboard"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

accredify0604-dashboard-v1-openapi.yaml Raw ↑
openapi: 3.1.0
info:
  title: Accredify Dashboard APIs
  description: >-
    This is the API documentation for the Accredify Dashboard, providing access to our services in a development and
    production environment.
  version: 1.0.0
servers:
  - url: 'http://dashboard.local.accredify.io/api'
    description: Accredify Local (Local)
  - url: 'https://dashboard.uat.accredify.io/api'
    description: Accredify Sandbox (UAT)
  - url: 'https://dashboard.accredify.io/api'
    description: Accredify Main Server (Production)
paths:
  /v1/oauth/grant:
    post:
      tags:
        - OAuth 2.0
      summary: Generate an access token
      description: Generate an access token
      operationId: authorizationCodeGrant
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - grant_type
                - client_id
                - client_secret
              properties:
                grant_type:
                  description: Type of grant you are requesting for
                  type: string
                  default: authorization_code
                  enum:
                    - authorization_code
                    - password
                  example: authorization_code
                client_id:
                  description: client_id of your application which you have registered with Accredify
                  type: string
                  example: e55d957f-3c09-4276-bc3e-1f3e333c4645
                client_secret:
                  description: client_secret of your application which you have registered with Accredify
                  type: string
                  example: 3Xr4lVLBz2hhoFtnngxQTWFiZUJABRaX2g5pcpra
                authorization_code:
                  description: code that was previously returned to callback endpoint which was registered with Accredify
                  type: string
                  example: >-
                    def50200bbc143dd0a58d85ef86deeebdf75fee730e3496f4c4d6f7afd6e3d1cdbc8bf6b0615e991dd43bbfafd503d6f39d1419a258ddc3c7b6e6a6f0dbce123f47e7ec88fa551e2d207f57d20d288d92a3c8dab8569432047c993bff7bbd4bc882910965ba72f956d9fc2a0f0a330ab94fd5c1338a2df2b536727a409e2ab50c6563773495623ae92ead74d6218606e9e7ec328b059a7ce1d4ceb705260a14a44058f2372f5048d5b1e36c83763023ba1da90d4b8898d49bb7c7dd9d4687b78c3f1082793a1c36967426af93ae6740ae8bb53f77b57a933ec97e2b0f323078f77e9e08cc09a4327a72026d939ae0eaacd46efafeaed785d26e2962f2e5473d2f9876e7e7ba1ffd41b599fb539edafecd2e895093d6aee63d36c0b144d4ea5752d558a2fce47bc2da9ad5f331c9d5bb72d7bb2f9aead6c86e401025c263ed21ab35a7e3b9e6129f063fca08b97efdeb5406fb53ff5d32b096e58c9443a0c2480a6ff183a8a755c5369ef985f1e5b12fcf7dfd1bae67f398ae64760eeae19c76d78947dd4d5387842b2ra
                scope:
                  description: Provide a list of scopes separated by space.
                  type: string
                  example: renderer verification read.document
              type: object
      responses:
        '200':
          $ref: '#/components/responses/SuccessRequest'
        '302':
          $ref: '#/components/responses/RedirectRequest'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
  /v1/oauth/redirect:
    get:
      tags:
        - OAuth 2.0
      summary: >-
        Request for user to authorize third party application access to their account. If successful, returns redirect
        with authorization code & state which can be used to request for an access token
      description: >-
        returns redirect with authorization code and state which can be used to request for an access token. This
        authorization code is returned if the user approves the request.
      operationId: redirect
      parameters:
        - name: client_id
          in: query
          description: client_id of your application which you have registered with Accredify
          required: true
          schema:
            type: string
          example: e55d957f-3c09-4276-bc3e-1f3e333c4645
        - name: state
          in: query
          description: >-
            random string up to 40 characters, to be stored and linked to the user session. this stored state value will
            be used to verify the redirect to your application's callback.
          required: true
          schema:
            type: string
          example: e55d957f-3c09-4276-bc3e-1f3e333c4645
      responses:
        '302':
          $ref: '#/components/responses/RedirectRequest'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
  /v1/oauth/refresh:
    post:
      tags:
        - OAuth 2.0
      summary: Refresh expired access tokens
      description: Refresh access tokens via the refresh token that was provided to them when the access token was issued
      operationId: refresh
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - client_id
                - client_secret
                - refresh_token
              properties:
                client_id:
                  description: client_id of your application which you have registered with Accredify
                  type: string
                  example: e55d957f-3c09-4276-bc3e-1f3e333c4645
                client_secret:
                  description: client_secret of your application which you have registered with Accredify
                  type: string
                  example: 3Xr4lVLBz2hhoFtnngxQTWFiZUJABRaX2g5pcpra
                refresh_token:
                  description: code that was previously returned with access token
                  type: string
                  example: >-
                    def50200bbc143dd0a58d85ef86deeebdf75fee730e3496f4c4d6f7afd6e3d1cdbc8bf6b0615e991dd43bbfafd503d6f39d1419a258ddc3c7b6e6a6f0dbce123f47e7ec88fa551e2d207f57d20d288d92a3c8dab8569432047c993bff7bbd4bc882910965ba72f956d9fc2a0f0a330ab94fd5c1338a2df2b536727a409e2ab50c6563773495623ae92ead74d6218606e9e7ec328b059a7ce1d4ceb705260a14a44058f2372f5048d5b1e36c83763023ba1da90d4b8898d49bb7c7dd9d4687b78c3f1082793a1c36967426af93ae6740ae8bb53f77b57a933ec97e2b0f323078f77e9e08cc09a4327a72026d939ae0eaacd46efafeaed785d26e2962f2e5473d2f9876e7e7ba1ffd41b599fb539edafecd2e895093d6aee63d36c0b144d4ea5752d558a2fce47bc2da9ad5f331c9d5bb72d7bb2f9aead6c86e401025c263ed21ab35a7e3b9e6129f063fca08b97efdeb5406fb53ff5d32b096e58c9443a0c2480a6ff183a8a755c5369ef985f1e5b12fcf7dfd1bae67f398ae64760eeae19c76d78947dd4d5387842b2ra
              type: object
      responses:
        '200':
          $ref: '#/components/responses/SuccessRequest'
        '302':
          $ref: '#/components/responses/RedirectRequest'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
  /v1/login/userTokenToLogin:
    get:
      tags:
        - OAuth 2.0
      summary: Logs in user using access token in authorization header
      operationId: 6566d88c4b075dc49ecd14f458068a33
      responses:
        '200':
          description: 'Success, redirect to recipient dashboard'
  /v1/openbadges/issue:
    post:
      tags:
        - OpenBadges
      summary: Allow an issuer to create open badges
      operationId: issueOpenBadges
      requestBody:
        description: Information required to create a batch of badges
        required: true
        content:
          application/json:
            schema:
              required:
                - courseCode
                - issue
                - distribute
                - badges
              properties:
                courseCode:
                  description: The code of the course
                  type: string
                  example: PHP-Mastery
                batchName:
                  description: The name of the batch (auto-generated by default)
                  type: string
                  example: Batch-001
                issue:
                  description: Should the badges be issued?
                  type: boolean
                  example: true
                distribute:
                  description: Should the badges be sent out to the recipients?
                  type: boolean
                  example: true
                badges:
                  type: array
                  items:
                    required:
                      - recipient
                    properties:
                      assertion:
                        description: Information about the assertion
                        properties:
                          uuid:
                            description: 'Universally unique identifier of the badge, has to be UUID V4'
                            type: string
                            example: 1238a551-6032-46a7-b882-3f05864b4cbe
                          issued_at:
                            description: The date and time of when the badge was issued
                            type: string
                            example: '2021-02-01T12:00:00Z'
                          expires_at:
                            description: The date and time of when the badge will expire
                            type: string
                            example: '2021-02-01T12:00:00Z'
                          narrative:
                            description: The narrative for the award
                            type: string
                            example: Recipient is awarded for exceptional results
                        type: object
                      evidence:
                        description: Information about the evidence
                        properties:
                          url:
                            description: The url hosted page of the evidence
                            type: string
                            example: 'https://accredify.io'
                          narrative:
                            description: The narrative for the evidence
                            type: string
                            example: Recipient is awarded A+
                        type: object
                      recipient:
                        description: Information about the recipient
                        required:
                          - name
                          - email
                        properties:
                          name:
                            description: The name of the recipient
                            type: string
                            example: John Doe
                          email:
                            description: The email of the recipient
                            type: string
                            example: johndoe@gmail.com
                          studentId:
                            description: The student ID of the recipient
                            type: string
                            example: U0129382
                        type: object
                      additionalData:
                        description: >-
                          Additional data related to the badge. This object can include arbitrary properties, not
                          limited to 'IHL'. Clients are encouraged to include any relevant information that provides
                          further context or details about the badge.
                        properties:
                          IHL:
                            description: The Institute of Higher Learning associated with the badge
                            type: string
                            example: INSTITUTE OF TECHNICAL EDUCATION
                        type: object
                    type: object
              type: object
      responses:
        '200':
          description: Successful badge creation
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: The status of the response
                    type: string
                    example: success
                  batch_name:
                    description: The batch name that was created (auto-generated or specified)
                    type: string
                    example: TEST-001
                  message:
                    description: Number of badges created in this batch
                    type: string
                    example: A total of 2 badge(s) has been created
                  badges:
                    description: Array of created badge assertions
                    type: array
                    items:
                      properties:
                        recipient:
                          description: Information about the recipient
                          properties:
                            name:
                              description: The name of the recipient
                              type: string
                              example: John Doe
                            email:
                              description: The email of the recipient
                              type: string
                              example: johndoe@gmail.com
                            studentId:
                              description: The student ID of the recipient
                              type: string
                              example: U0129382
                          type: object
                        assertion:
                          description: Information about the assertion
                          properties:
                            uuid:
                              description: UUID of the badge
                              type: string
                              example: 1238a551-6032-46a7-b882-3f05864b4cbe
                            narrative:
                              description: Narrative of the badge
                              type: string
                              example: Recipient is awarded for exceptional results
                            issued_at:
                              description: Issue date and time of the badge
                              type: string
                              example: '2021-02-01T12:00:00Z'
                            expires_at:
                              description: Expiry date and time of the badge
                              type: string
                              example: '2021-02-01T12:00:00Z'
                          type: object
                        evidences:
                          description: List of evidences for the badge
                          type: array
                          items:
                            properties:
                              url:
                                description: URL of the evidence
                                type: string
                                example: 'https://accredify.io/evidence/123'
                              narrative:
                                description: Narrative for the evidence
                                type: string
                                example: Evidence supporting the badge award
                            type: object
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
      security:
        - bearerAuth: []
  /v1/openbadges/new-course:
    post:
      tags:
        - OpenBadges
      summary: Allow an issuer to create an open badges course
      operationId: createOpenBadgesCourse
      requestBody:
        description: Information required to create a course
        required: true
        content:
          application/json:
            schema:
              required:
                - course_code
                - course_title
                - course_description
                - badge_settings
              properties:
                course_code:
                  description: Unique identifier for the course
                  type: string
                course_title:
                  description: Title of the course
                  type: string
                course_description:
                  description: Description of the course
                  type: string
                course_url:
                  description: URL of the course
                  type: string
                sharing:
                  properties:
                    share_enabled:
                      description: Is sharing enabled
                      type: boolean
                    share_link:
                      description: Share link (defaults to Accredify's share link if none provided)
                      type: string
                  type: object
                badge_settings:
                  required:
                    - badge_image
                  properties:
                    tags:
                      type: array
                      items:
                        description: Tags for the course
                        type: string
                    criteria_narrative:
                      description: Criteria narrative for the badge
                      type: string
                    badge_image:
                      description: Badge image file
                      type: string
                      format: binary
                  type: object
              type: object
      responses:
        '200':
          description: Success request
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: The HTTP status code
                    type: integer
                    example: 200
                  id:
                    description: Created course id
                    type: integer
                    example: 1
                  course_code:
                    description: Created course code
                    type: string
                    example: TEST-001
                  course_title:
                    description: Created course title
                    type: string
                    example: Test Course
                type: object
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
      security:
        - bearerAuth: []
  '/v1/openbadges/{assertion}':
    delete:
      tags:
        - OpenBadges
      summary: Allow an issuer to revoke an open badge
      operationId: revokeOpenBadge
      parameters:
        - name: assertion
          in: path
          description: The UUID of the assertion to be revoked
          required: true
          schema:
            type: string
      requestBody:
        description: Payload required to revoke a badge
        required: true
        content:
          application/json:
            schema:
              required:
                - revocation_reason
              properties:
                revocation_reason:
                  description: Reason for badge revocation
                  type: string
                  example: Duplicated badge
              type: object
      responses:
        '204':
          description: Successful revocation of the badge
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
      security:
        - bearerAuth: []
    patch:
      tags:
        - OpenBadges
      summary: Allow an issuer to update an open badge
      operationId: updateOpenBadge
      parameters:
        - name: assertion
          in: path
          description: The UUID of the assertion to be updated
          required: true
          schema:
            type: string
      requestBody:
        description: Information required to update a badge
        required: true
        content:
          application/json:
            schema:
              properties:
                assertion:
                  description: Information about the assertion
                  properties:
                    issued_at:
                      description: The date and time of when the badge was issued
                      type: string
                      example: '2021-02-01T12:00:00Z'
                    expires_at:
                      description: The date and time of when the badge will expire
                      type: string
                      example: '2021-02-01T12:00:00Z'
                    narrative:
                      description: The narrative for the award
                      type: string
                      example: Recipient is awarded for exceptional results
                  type: object
                evidence:
                  description: Information about the evidence
                  properties:
                    url:
                      description: The url hosted page of the evidence
                      type: string
                      example: 'https://accredify.io'
                    narrative:
                      description: The narrative for the evidence
                      type: string
                      example: Recipient is awarded A+
                  type: object
                recipient:
                  description: Information about the recipient
                  properties:
                    name:
                      description: The name of the recipient
                      type: string
                      example: John Doe
                    email:
                      description: The email of the recipient
                      type: string
                      example: johndoe@gmail.com
                    studentId:
                      description: The student ID of the recipient
                      type: string
                      example: U0129382
                  type: object
              type: object
      responses:
        '200':
          description: Successful update of the badge
          content:
            application/json:
              schema:
                properties:
                  badge:
                    description: The updated badge assertion
                    properties:
                      recipient:
                        description: Information about the recipient
                        properties:
                          name:
                            description: The name of the recipient
                            type: string
                            example: John Doe
                          email:
                            description: The email of the recipient
                            type: string
                            example: johndoe@gmail.com
                          studentId:
                            description: The student ID of the recipient
                            type: string
                            example: U0129382
                        type: object
                      assertion:
                        description: Information about the assertion
                        properties:
                          uuid:
                            description: UUID of the badge
                            type: string
                            example: 1238a551-6032-46a7-b882-3f05864b4cbe
                          narrative:
                            description: Narrative of the badge
                            type: string
                            example: Recipient is awarded for exceptional results
                          issued_at:
                            description: Issue date and time of the badge
                            type: string
                            example: '2021-02-01T12:00:00Z'
                          expires_at:
                            description: Expiry date and time of the badge
                            type: string
                            example: '2021-02-01T12:00:00Z'
                        type: object
                      evidences:
                        description: List of evidences for the badge
                        type: array
                        items:
                          properties:
                            url:
                              description: URL of the evidence
                              type: string
                              example: 'https://accredify.io/evidence/123'
                            narrative:
                              description: Narrative for the evidence
                              type: string
                              example: Evidence supporting the badge award
                          type: object
                    type: object
                  status:
                    description: Status of the response
                    type: string
                    example: success
                type: object
        '401':
          $ref: '#/components/responses/UnauthenticatedRequest'
        '404':
          $ref: '#/components/responses/NotFoundRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntityRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalErrorRequest'
      security:
        - bearerAuth: []
  /v1/uploadBatch:
    post:
      tags:
        - Issue
      summary: Upload a batch to the dashboard
      description: >-
        Uploads a batch consisting of unsigned JSON files. Once the batch has been generated the users can log into the
        dashboard to complete the issuance process
      operationId: uploadBatch
      requestBody:
        description: Information require to create a batch
        required: true
        content:
          application/json:
            schema:
              required:
                - instance
                - batchNo
                - courseCode
                - batchSize
                - totalMsgs
                - msgSeq
                - numOfDocs
                - timestamp
                - file
              properties:
                instance:
                  description: Whether this is meant for the testnet (TST) or mainnet (PRD)
                  type: string
                  example: TST
                batchNo:
                  description: The name of the batch that is to be created
                  type: string
                  example: Batch 001
                courseCode:
                  description: The name of the course to which this batch will be created under
                  type: string
                  example: Course001
                batchSize:
                  description: The total number of documents that will be in this batch
                  type: integer
                  format: int32
                  example: '1'
                totalMsgs:
                  description: The total number of requests that will be sent as part of this batch
                  type: integer
                  format: int32
                  example: '1'
                msgSeq:
                  description: The sequence number of this request
                  type: integer
                  format: int32
                  example: '1'
                numOfDocs:
                  description: The number of documents that are in this request
                  type: integer
                  format: int32
                  example: '1'
                timestamp:
                  description: Timestamp of the request
                  type: string
                  format: date-time
                  example: '2019-09-11T17:21:45+08:00'
                file:
                  description: The base64 encoded version of the zip file containing the JSON files
                  type: string
                  example: UEsDBBQACAgIAON7XVEAAAAAAAAAAAAAAAAxAAAATlVTLUEwMDAw.........
              type: object
      responses:
        '200':
          description: 'Success, all requests received, batch is now creating'
          content:
            application/json:
              schema:
                properties:
                  instance:
                    description: Whether this is meant for the testnet (TST) or mainnet (PRD)
                    type: string
                    example: TST
                  batchNo:
                    description: The name of the batch that is to be created
                    type: string
                    example: Batch 001
                  courseCode:
                    description: The name of the course to which this batch will be created under
                    type: string
                    example: Course001
                  batchSize:
                    description: The total number of documents that will be in this batch
                    type: integer
                    format: int32
                    example: '1'
                  totalMsgs:
                    description: The total number of requests that will be sent as part of this batch
                    type: integer
                    format: int32
                    example: '1'
                  msgSeq:
                    description: The sequence number of this request
                    type: integer
                    format: int32
                    example: '1'
                  numOfDocs:
                    description: The number of documents that are in this request
                    type: integer
                    format: int32
                    example: '1'
                  status:
                    description: The status of the batch
                    type: string
                    example: Creating
                type: object
        '201':
          description: 'Success, request acknowledged'
          content:
            application/json:
              schema:
                properties:
                  instance:
                    description: Whether this is meant for the testnet (TST) or mainnet (PRD)
                    type: string
                    example: TST
                  batchNo:
                    description: The name of the batch that is to be created
                    type: string
                    example: Batch 001
                  courseCode:
                    description: The name of the course to which this batch will be created under
                    type: string
                    example: Course001
                  batchSize:
                    description: The total number of documents that will be in this batch
                    type: integer
                    format: int32
                    example: '1'
                  totalMsgs:
                    description: The total number 

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/accredify0604/refs/heads/main/openapi/accredify0604-dashboard-v1-openapi.yaml