---
title: "bird webhooks client-certificate upload"
description: "Upload the webhook client certificate"
canonical: "https://bird.com/docs/cli/reference/webhooks-client-certificate-upload"
---

# `bird webhooks client-certificate upload`

## Usage

```bash
bird webhooks client-certificate upload [flags]
```

## Description

Upload the webhook client certificate

Send the signed certificate first, then each intermediate certificate, as PEM. It replaces the certificate in use. Deliveries can present the previous certificate for up to a few minutes, so receivers must accept both until then.

Build the request from flags, a JSON WebhookClientCertificateUpload body via --body-file ("-" reads
stdin), or both — a flag overrides the matching body field. Run --example to
print a ready-to-edit body, or --dry-run to print the resolved request without
sending it.

This is destructive and cannot be undone; pass --yes to confirm.

## Procedure

Step 3 of 6 of "Present a client certificate on webhook deliveries". Previous: bird webhooks client-certificate create-signing-request. Next: bird webhooks client-certificate update.

## Examples

```bash
# print the body shape (no credentials needed)
bird webhooks client-certificate upload --example

# the body it prints:
```

```json
{
  "certificate_chain": "-----BEGIN CERTIFICATE-----\nMIIB...\n-----END CERTIFICATE-----\n"
}
```

```bash
# upload the certificate your CA signed, with its intermediates
bird webhooks client-certificate upload --certificate-chain-file signed-chain.pem --yes
```

## Options

#### Safety

| Name    | Description                                          |
| ------- | ---------------------------------------------------- |
| `--yes` | Confirm the action (required; the CLI never prompts) |

#### Request

| Name                | Description                                                  |
| ------------------- | ------------------------------------------------------------ |
| `--body-file`       | Read the JSON request body from this file; "-" reads stdin   |
| `--example`         | Print a complete example request body, then exit             |
| `--dry-run`         | Print the resolved request without sending it, then exit     |
| `--idempotency-key` | Deduplication key; a retry with the same key won't act twice |

#### Options

| Name                       | Description                                                                                                               |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `--certificate-chain`      | PEM-encoded certificates, the signed certificate first, then any intermediate certificates. (required; or in --body-file) |
| `--certificate-chain-file` | Read the PEM certificate chain from this file instead of --certificate-chain.                                             |
| `--response-schema`        | Print the fields this command returns, then exit                                                                          |

## Related

| Name                                                                                                                                | Description                                         |
| ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [`bird webhooks client-certificate create-signing-request`](/docs/cli/reference/webhooks-client-certificate-create-signing-request) | Create a webhook client certificate signing request |
| [`bird webhooks client-certificate get`](/docs/cli/reference/webhooks-client-certificate-get)                                       | Get the webhook client certificate                  |
| [`bird webhooks client-certificate update`](/docs/cli/reference/webhooks-client-certificate-update)                                 | Update the webhook client certificate settings      |

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
