---
title: "Create, issue, and send a credential"
method: POST
path: "/v1/credentials/create-issue-send"
tags: ["Credentials"]
---

# Create, issue, and send a credential

`POST /v1/credentials/create-issue-send`

Use this endpoint to issue a credential. It is an all-in-one solution that simultaneously creates, issues, and sends a credential. This endpoint covers most of the basic scenarios.

## Headers

- `Certifier-Version` string, required — API version header. Required for all requests.

## Request body

- CreateIssueSendCredential
  - `groupId` string, required — The group's (credential template's) ID you want to issue the credential to. Read more about groups (credential templates).
  - `recipient` object, required — The recipient of the credential
    - `name` string, required — The name of the credential's recipient
    - `email` string, email — The email of the credential's recipient
  - `issueDate` string — The date of your credential's issuance (by default is set to today, only YYYY-MM-DD format is allowed)
  - `expiryDate` string — The date of your credential's expiration (by default uses the settings configured on the group (credential template), only YYYY-MM-DD format is allowed)
  - `customAttributes` object — The key-value object of your custom attributes where key is your attribute's tag and value is just your value

## Response `200`

Credential created, issued, and sent successfully

- Credential
  - `id` string, required — The unique credential's identifier
  - `publicId` string, uuid, required — The external unique credential's identifier (used in the digital wallet to generate a URL, e.g. https://credsverse.com/credentials/{publicId})
  - `groupId` string, required — The unique identifier of the group (credential template).
  - `status` 'draft' | 'scheduled' | 'issued' | 'expired', required — The status of the credential
  - `recipient` Recipient, nullable, required — The recipient object (if an email was provided)
    - `id` string, required — The credential recipient's unique identifier
    - `name` string, required — The name of the credential's recipient
    - `email` string, email, required — The email of the credential's recipient
  - `issueDate` string, required — The date of your credential's issuance. Formatted as an ISO 8601 date string (YYYY-MM-DD)
  - `expiryDate` string, nullable, required — The date of your credential's expiration. Formatted as an ISO 8601 date string (YYYY-MM-DD)
  - `attributes` object, required — The key-value object of the credential's attributes. Currently this can only be the recipient.name, configured on a per-credential basis
  - `customAttributes` object, required — The key-value object of your custom attributes, where key is your attribute's tag and value is the text value you want to store
  - `createdAt` string, date-time, required — The date and time when this credential was created. Formatted as an ISO 8601 date and time string
  - `updatedAt` string, date-time, required — The date and time when this credential was updated. Formatted as an ISO 8601 date and time string

## Other responses

- `400` — Bad Request - Missing version, invalid version, invalid JSON, or validation error
- `401` — Unauthorized - Invalid or missing authentication token
- `402` — Payment Required - Feature requires premium subscription
- `404` — Not Found - Resource does not exist
- `429` — Rate Limited - Too many requests
- `500` — Internal Server Error - Problem on Certifier's end

---

[API](https://skmtc.dev/certifier/apis/certifier-api.md) · [All operations](https://skmtc.dev/certifier/apis/certifier-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/certifier/certifier-api/revisions/a84fb47b7f6f/schema)
