---
title: "POST /sites/{site_id}/ssl"
method: POST
path: "/sites/{site_id}/ssl"
tags: ["sniCertificate"]
---

# POST /sites/{site_id}/ssl

`POST /sites/{site_id}/ssl`

Provisions or updates a TLS certificate for the site.

**Creating a certificate (site has no certificate):**
- Omit certificate params to initiate Let's Encrypt provisioning
- Provide certificate, key, and ca_certificates to upload a custom certificate

**Updating a certificate (site already has a certificate):**
- REQUIRES certificate, key, and ca_certificates to replace with a new custom certificate
- Use POST /api/v1/sites/{site_id}/ssl/renew to renew an existing Let's Encrypt certificate

## Path parameters

- `site_id` string, required

## Query parameters

- `certificate` string
- `key` string
- `ca_certificates` string

## Response `200`

OK

- SniCertificate
  - `state` string
  - `domains` string[]
  - `created_at` string, dateTime
  - `updated_at` string, dateTime
  - `expires_at` string, dateTime

## Other responses

- `422` — Unprocessable Entity. Returns errors such as: "certificate parameter is required when updating an existing certificate" (when updating without params), "No custom domain configured", or "bad dns for custom domain"
- `default` — error

---

[API](https://skmtc.net/netlify/apis/netlify-s-api-documentation.md) · [All operations](https://skmtc.net/netlify/apis/netlify-s-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/netlify/netlify-s-api-documentation/revisions/71540d1b5d9d/schema)
