---
title: "Upload a cert"
method: PUT
path: "/v8/certs"
tags: ["certs"]
---

# Upload a cert

`PUT /v8/certs`

## Request

- Base URL: `https://api.vercel.com`
- URL: `https://api.vercel.com/v8/certs`
- Auth: HTTP bearer

Upload a cert

## Query parameters

- `teamId` string
- `slug` string

## Request body

- object
  - `ca` string, required: The certificate authority
  - `key` string, required: The certificate key
  - `cert` string, required: The certificate
  - `skipValidation` boolean: Skip validation of the certificate

## Response `200`

- object
  - `autoRenew` false | true, required
  - `cns` string[], required
  - `createdAt` number, required
  - `expiresAt` number, required
  - `id` string, required

## Other responses

- `400`: One of the provided values in the request body is invalid.
- `401`: The request is not authorized.
- `402`: This feature is only available for Enterprise customers.
- `403`: You do not have permission to access this resource.
- `404`
- `410`

## Changes

- **2026-09-30** `099fbe1f521c`: 1 info
  - added the non-success response with the status `404`
- **2026-07-21** `2ae10ee9d21c`: 1 info
  - added the non-success response with the status `410`
- **2026-01-22** `c12186034433`: 2 warning
  - added the new `false` enum value to the `autoRenew` response property for the response status `200`
  - added the new `true` enum value to the `autoRenew` response property for the response status `200`
- **2025-10-09** `50caddad4ae7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/vercel/apis/vercel-api/changes/v8/certs/put.md)

---

[API](https://skmtc.dev/vercel/apis/vercel-api.md) - [All operations](https://skmtc.dev/vercel/apis/vercel-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vercel/apis/vercel-api/revisions/60686c0e1f6a?raw)
