Create a cache rule via API Use the Rulesets API API documentation 
Basic rule settings  When creating a cache rule via API, make sure you:
Set the rule action to set_cache_settings. Define the parameters in the action_parameters field according to the settings  Deploy the rule to the http_request_cache_settings phase entry point ruleset. 
Procedure  Use the List zone rulesets API link label Open API docs link http_request_cache_settings phase entry point ruleset. If the phase ruleset does not exist, create it using the Create a zone ruleset API link label Open API docs link kind: zone phase: http_request_cache_settings  Use the Update a zone ruleset API link label Open API docs link Create a zone ruleset API link label Open API docs link  
Example requests  These examples are setting all the Cache Rules of a zone to a single rule, since using these examples directly will cause any existing rules to be deleted.Example: Cache everything for example.com curl   --request  PUT  \ 
https://api.cloudflare.com/client/v4/zones/ { zone_id } /rulesets/ { ruleset_id }   \ 
 
--header   "Authorization: Bearer <API_TOKEN>"   \ 
 
--header   "Content-Type: application/json"   \ 
 
--data   '{ 
  "rules": [ 
    { 
      "expression": "(http.host eq \"example.com\")", 
      "description": "cache everything for example.com", 
      "action": "set_cache_settings", 
      "action_parameters": { 
        "cache": true 
      } 
    } 
  ] 
}' 
 
Example: Extend read timeout for Android clients curl   --request  PUT  \ 
https://api.cloudflare.com/client/v4/zones/ { zone_id } /rulesets/ { ruleset_id }   \ 
 
--header   "Authorization: Bearer <API_TOKEN>"   \ 
 
--header   "Content-Type: application/json"   \ 
 
--data   '{ 
  "rules": [ 
    { 
      "expression": "(http.user_agent contains \"Android\")", 
      "description": "extend read timeout for android clients", 
      "action": "set_cache_settings", 
      "action_parameters": { 
        "cache": true, 
        "read_timeout": 300 
      } 
    } 
  ] 
}' 
 
Example: Disable Cache Reserve for frequently updated assets curl   --request  PUT  \ 
https://api.cloudflare.com/client/v4/zones/ { zone_id } /rulesets/ { ruleset_id }   \ 
 
--header   "Authorization: Bearer <API_TOKEN>"   \ 
 
--header   "Content-Type: application/json"   \ 
 
--data   '{ 
  "rules": [ 
    { 
      "expression": "(starts_with(http.request.uri, \"/feed/\"))", 
      "description": "disable cache reserve for frequently updated assets", 
      "action": "set_cache_settings", 
      "action_parameters": { 
        "cache": true, 
        "cache_reserve": { 
          "enabled": false 
        } 
      } 
    } 
  ] 
}' 
 
Example: Turn off default cache TTLs curl   --request  PUT  \ 
https://api.cloudflare.com/client/v4/zones/ { zone_id } /rulesets/ { ruleset_id }   \ 
 
--header   "Authorization: Bearer <API_TOKEN>"   \ 
 
--header   "Content-Type: application/json"   \ 
 
--data   '{ 
  "rules": [ 
    { 
      "expression": "(http.host eq \"example.com\")", 
      "description": "turn off default cache ttls", 
      "action": "set_cache_settings", 
      "action_parameters": { 
        "cache": true, 
        "edge_ttl": { 
          "mode": "bypass_by_default" 
        } 
      } 
    } 
  ] 
}' 
 
Required API token permissions  The API token used in API requests to manage Cache Rules must have the following permissions:
Zone  > Cache Rules  > Edit Account Rulesets  > Edit Account Filter Lists  > Edit