Configure Snippets via API
You can create Snippets using the Cloudflare API.
The API token used in API requests to manage Snippets must have at least the following permission:
- Zone > Snippets > Edit
To obtain the complete endpoint, append the Snippets endpoints listed below to the Cloudflare API base URL:
https://api.cloudflare.com/client/v4The {zone_id} argument is the zone ID (a hexadecimal string). You can find this value in the Cloudflare dashboard.
The following table summarizes the available operations.
| Operation | Verb + Endpoint |
|---|---|
| List all code snippets | GET /zones/{zone_id}/snippets |
| Create/update code snippet | PUT /zones/{zone_id}/snippets/{snippet_name} |
| Get code snippet details | GET /zones/{zone_id}/snippets/{snippet_name} |
| Get code snippet content | GET /zones/{zone_id}/snippets/{snippet_name}/content |
| Delete code snippet | DELETE /zones/{zone_id}/snippets/{snippet_name} |
| List snippet rules | GET /zones/{zone_id}/snippets/snippet_rules |
| Create/update/delete snippet rules | PUT /zones/{zone_id}/snippets/snippet_rules |
| Delete all snippet rules | DELETE /zones/{zone_id}/snippets/snippet_rules |
To create or update a Snippet, use the following PUT request. The snippet is named {snippet_name} and the body contains the JavaScript code.
curl --request PUT https://api.cloudflare.com/client/v4/zones/{zone_id}/snippets/{snippet_name} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: multipart/form-data" \--form files=@example.js \--form metadata='{"main_module":"example.js"}'The name of a snippet can only contain the characters a-z, 0-9, and _ (underscore). The name must be unique in the context of the zone. You cannot change the snippet name after creating the snippet.
The required body parameters are:
files: The file with your JavaScript code.metadata: Object containingmain_module, which must match the filename of the uploaded file.
To make this example work, save your JavaScript code in a file named example.js, and then execute curl command with a PUT request from the folder where example.js is located.
{ "errors": [], "messages": [], "success": true, "result": { "created_on": "2023-07-24-00:00:00", "modified_on": "2023-07-24-00:00:00", "snippet_name": "snippet_name_01" }}To deploy a new snippet you must create a snippet rule. The expression of the snippet rule defines when the snippet code will run.
Once you have created a code snippet, you can link it to rules. This is done via the following PUT request to the snippet_rules endpoint.
curl --request PUT \"https://api.cloudflare.com/client/v4/zones/{zone_id}/snippets/snippet_rules" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "description": "Trigger snippet on specific cookie", "enabled": true, "expression": "http.cookie eq \"a=b\"", "snippet_name": "snippet_name_01" } ]}'