Skip to main content
POST
/
v1
/
custom_block_deploys
Create a custom block deploy
curl --request POST \
  --url https://api.notion.com/v1/custom_block_deploys \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Notion-Version: <notion-version>' \
  --data '
{
  "checksum_crc32": "<string>"
}
'
{
  "object": "<string>",
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "upload_url": "<string>",
  "upload_url_expires_at": "2023-11-07T05:31:56Z"
}
This is an internal/undocumented endpoint. It is not part of the public API and may change without notice. Do not rely on this endpoint for production integrations.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Notion-Version
enum<string>
required

The API version to use for this request. The latest version is 2026-03-11.

Available options:
2026-03-11

Body

application/json
checksum_crc32
string
required

Base64-encoded big-endian CRC32 checksum of the gzipped tarball that will be uploaded to upload_url.

Required string length: 8
Example:

"DUoRhQ=="

Response

object
string
required

The type of object, always 'custom_block_deploy'.

Allowed value: "custom_block_deploy"
id
string<uuid>
required

UUID identifying this custom block deploy.

upload_url
string
required

Presigned S3 PUT URL for uploading the deploy tarball (source.tar.gz).

upload_url_expires_at
string<date-time>
required

When upload_url stops being valid (ISO8601).