---
canonical_url: "https://docs.composio.dev/toolkits/cert_seal"
markdown_url: "https://docs.composio.dev/toolkits/cert_seal.md"
product: "platform"
version: null
last_updated: null
---

# CertSeal

CertSeal provides APIs for issuing and managing verifiable digital certificates, recipients, batches, designs, and webhook subscriptions.

- **Category:** signatures
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 21
- **Triggers:** 0
- **Slug:** `CERT_SEAL`
- **Version:** 00000000_00

## Tools

### Create Batch

**Slug:** `CERT_SEAL_CREATE_BATCH`

Create a persistent certificate batch from an existing CertSeal design and optional email template. This consumes a batch slot and can fail when the plan batch limit is reached; designs and templates must already exist and are not created by this tool.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Non-empty batch title. |
| `design_id` | string | Yes | ID of an existing design in this workspace; obtain it from CERT_SEAL_LIST_DESIGNS. |
| `course_name` | string | No | Optional course or achievement name printed in certificate context. |
| `description` | string | No | Optional batch description. |
| `issuer_name` | string | No | Optional issuer name printed in certificate context. |
| `email_template_id` | string | No | Existing workspace email template ID; required later if certificate emails will be sent. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Webhook Subscription

**Slug:** `CERT_SEAL_CREATE_WEBHOOK_SUBSCRIPTION`

Create a persistent webhook subscription for selected certificate events. The response contains a wh_sec_ signing secret exactly once; capture it immediately and store it securely because later reads reveal only its tail. The workspace allows at most 20 subscriptions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Public HTTPS callback URL. Loopback, link-local, private-network, and other non-public literal IP addresses are not allowed. |
| `events` | array | Yes | Unique certificate event types to deliver to the callback URL. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Recipient

**Slug:** `CERT_SEAL_DELETE_RECIPIENT`

Permanently delete an issued recipient from an active batch. This cannot be undone, does not refund certificate quota, and permanently burns the certificate ID. Use only when permanent removal is intended.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Active parent batch ID. |
| `recipient_id` | string | Yes | Recipient ID to permanently delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Webhook Subscription

**Slug:** `CERT_SEAL_DELETE_WEBHOOK_SUBSCRIPTION`

Permanently delete a webhook subscription and stop future deliveries. This cannot be undone; create a new subscription to resume events.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `subscription_id` | string | Yes | Webhook subscription ID to permanently delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Batch

**Slug:** `CERT_SEAL_GET_BATCH`

Get one active or archived certificate batch by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Batch ID from CERT_SEAL_LIST_BATCHES or CERT_SEAL_CREATE_BATCH. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Certificate

**Slug:** `CERT_SEAL_GET_CERTIFICATE`

Look up an issued certificate using either its human-readable certificate ID or its public-viewer share token, and return its recipient, batch, design, and resolved variables. Provide exactly one lookup value.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `share_token` | string | No | Public-viewer share token from an issued recipient record. Provide exactly one of share_token or certificate_id. |
| `certificate_id` | string | No | Human-readable issued certificate ID. Provide exactly one of certificate_id or share_token. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Current Workspace

**Slug:** `CERT_SEAL_GET_CURRENT_WORKSPACE`

Verify the connected CertSeal API key and return the workspace ID and username it belongs to. Use this to confirm account context before creating or changing resources.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Recipient

**Slug:** `CERT_SEAL_GET_RECIPIENT`

Get one issued certificate recipient record by batch ID and recipient ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Parent batch ID. |
| `recipient_id` | string | Yes | Recipient ID returned by issuance or recipient listing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Webhook Subscription

**Slug:** `CERT_SEAL_GET_WEBHOOK_SUBSCRIPTION`

Get one webhook subscription by ID. This does not reveal the signing secret; it returns only the stored secret tail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `subscription_id` | string | Yes | Webhook subscription ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Issue and Send Certificates

**Slug:** `CERT_SEAL_ISSUE_AND_SEND_CERTIFICATES`

Atomically issue certificates for 1-100 recipients and queue email delivery for every created certificate. This irreversible external side effect requires every recipient to have an email address and the active batch to have an email template and configured mail delivery. Each recipient permanently consumes one certificate quota unit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Active batch ID that will own all issued certificates and has an email template. |
| `recipients` | array | Yes | One to 100 recipients to issue certificates for atomically. Every recipient must include an email address. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Issue Certificates

**Slug:** `CERT_SEAL_ISSUE_CERTIFICATES`

Atomically issue certificates without sending email for 1-100 recipients in one active batch. Each recipient permanently consumes one certificate quota unit even if later deleted; any invalid row, duplicate certificate ID, or quota failure creates none.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Active batch ID that will own all issued certificates. |
| `recipients` | array | Yes | One to 100 recipients to issue certificates for atomically. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Batches

**Slug:** `CERT_SEAL_LIST_BATCHES`

Return one newest-first page of certificate batches in the connected workspace, optionally filtered by archive state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum batches to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous call; omit for the first page. |
| `status` | string ("active" | "archived" | "all") | No | Archive-state filter: active, archived, or all. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Designs

**Slug:** `CERT_SEAL_LIST_DESIGNS`

Return one newest-first page of reusable certificate designs. Designs are read-only through the API and must be authored in the CertSeal web app.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum designs to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous call; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recipients

**Slug:** `CERT_SEAL_LIST_RECIPIENTS`

Return one page of issued certificate recipients in a batch, optionally filtered by email delivery status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum recipients to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous call; omit for the first page. |
| `batch_id` | string | Yes | Parent batch ID. |
| `email_status` | string ("pending" | "queued" | "sending" | "sent" | "failed") | No | Optional email delivery-state filter. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Webhook Subscriptions

**Slug:** `CERT_SEAL_LIST_WEBHOOK_SUBSCRIPTIONS`

Return one newest-first page of webhook subscriptions. Stored signing secrets are never returned; secret_tail is only a non-sensitive identifier.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum subscriptions to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from a previous call; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Rotate Webhook Signing Secret

**Slug:** `CERT_SEAL_ROTATE_WEBHOOK_SIGNING_SECRET`

Immediately invalidate a webhook subscription's current signing secret and replace it. The new wh_sec_ secret is returned exactly once; capture and deploy it immediately or webhook verification will fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `subscription_id` | string | Yes | Webhook subscription whose signing secret will be replaced immediately. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Certificate Emails

**Slug:** `CERT_SEAL_SEND_CERTIFICATE_EMAILS`

Sequentially queue real certificate emails for 1-25 existing recipients in one active batch. Each queued email is irreversible. Processing stops after the first failed or unknown attempt, and remaining recipients are marked not_attempted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Active parent batch ID configured with an email template. |
| `recipient_ids` | array | Yes | One to 25 unique recipient IDs whose certificate emails will be queued in order. Every recipient must have an email address. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Recipient Certificate Email

**Slug:** `CERT_SEAL_SEND_RECIPIENT_CERTIFICATE_EMAIL`

Queue asynchronous certificate email delivery to one recipient. This causes an external email side effect and requires a recipient email, a batch email template, and configured mail delivery; already queued or in-flight recipients and archived batches are rejected.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch_id` | string | Yes | Active parent batch ID configured with an email template. |
| `recipient_id` | string | Yes | Recipient ID whose certificate email will be queued. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Batch Archived State

**Slug:** `CERT_SEAL_SET_BATCH_ARCHIVED`

Idempotently archive or unarchive a batch. Archiving freezes recipient create, update, delete, and send operations but preserves existing certificate URLs; unarchiving re-enables those writes. This persistent change is reversible.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `archived` | boolean | Yes | Set true to archive and freeze the batch, or false to reactivate it. |
| `batch_id` | string | Yes | Batch ID whose archive state will change. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Test Webhook Subscription

**Slug:** `CERT_SEAL_TEST_WEBHOOK_SUBSCRIPTION`

Enqueue one synthetic signed event through CertSeal's normal webhook dispatcher. This causes a real external delivery to the subscription URL; it does not only validate the subscription locally.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event_type` | string ("certificate.issued" | "certificate.sent" | "certificate.failed" | "certificate.viewed") | No | Synthetic event type. Omit it to use the subscription's first configured event. |
| `subscription_id` | string | Yes | Webhook subscription ID that will receive the synthetic event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Recipient

**Slug:** `CERT_SEAL_UPDATE_RECIPIENT`

Partially update an issued certificate recipient. Only supplied fields change, while an explicit null clears an optional field; changing certificate_id must remain globally unique. Archived batches reject this mutation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | object | No | Replacement custom string-variable object; omit to leave unchanged. |
| `name` | string | No | New recipient name; null clears it. |
| `email` | string | No | New recipient email; null clears it. |
| `batch_id` | string | Yes | Parent batch ID. |
| `issue_date` | string | No | New ISO issue date; null clears it. |
| `expiry_date` | string | No | New ISO expiry date; null clears it. |
| `recipient_id` | string | Yes | Recipient ID to update. |
| `certificate_id` | string | No | New globally unique certificate ID; null clears the override if supported by CertSeal. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
