Cloudflare::API Cloudflare::API is a pure Perl client for a focused subset of the Cloudflare API. It covers mainstream compute and storage management, including Workers, R2, KV, D1, Queues, Hyperdrive, and Secrets Store. HTTP transport is provided by HTTP::API::Core. The distribution requires Perl 5.10 or later, HTTP::API::Core 1.01 or later, and HTTPS support through IO::Socket::SSL. Example use Cloudflare::API; my $api=Cloudflare::API->new( token => $ENV{'CLOUDFLARE_API_TOKEN'}, account_id => $ENV{'CLOUDFLARE_ACCOUNT_ID'} ); my $bucket=$api->r2()->create_bucket({ name => 'my-app-assets' }); my $database=$api->d1()->create_database({ name => 'my-app-data' }); my $namespaces=$api->kv()->list_namespaces(); Authentication Pass token and account_id to the constructor, or set CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID. Account and zone lookups do not require a default account ID. Other account-scoped methods do. The cloudflare-api command can also use --auth=wrangler to obtain a token from an existing Wrangler login. When Wrangler reports one account, the command uses its account ID automatically. Use --account-id or CLOUDFLARE_ACCOUNT_ID to select an account explicitly. JSON methods return Cloudflare's decoded result by default. Pass full_response => 1 to retain the complete response envelope and pagination information. request() provides access to JSON endpoints without a named method, while raw_request() returns the HTTP::API::Core::Response object for non-JSON responses. Worker uploads The Workers interface uploads prepared modules, versions, deployments, secrets, routes, and static asset sets. upload_assets() can recursively upload a directory and return the completion token needed for a Worker version. The module does not bundle JavaScript, resolve npm dependencies, or build a Worker project. Continue to use Wrangler for uploads that require bundling or a project build, and use Cloudflare::API when the Worker modules and metadata are already prepared. Current resource methods Resource Methods --------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Accounts list, get Zones list, get Workers list_scripts, download_script, upload_script, upload_version, list_versions, get_version, upload_assets, delete_script, list_deployments, get_deployment, create_deployment, list_secrets, add_secret, delete_secret, get_subdomain, set_subdomain, list_routes, create_route, update_route, delete_route R2 list_buckets, get_bucket, create_bucket, update_bucket, delete_bucket KV list_namespaces, get_namespace, create_namespace, rename_namespace, delete_namespace, list_keys, get_value, put_value, delete_value D1 list_databases, get_database, create_database, update_database, delete_database, query_database, query_sql Queues list_queues, get_queue, create_queue, update_queue, delete_queue, list_consumers, create_consumer, delete_consumer Hyperdrive list_configs, get_config, create_config, replace_config, update_config, delete_config Secrets Store list_stores, get_store, create_store, delete_store, list_secrets, get_secret, create_secret, update_secret, delete_secret, get_quota Create and update methods take a hash reference containing Cloudflare's request body. The named methods intentionally cover a subset of the Cloudflare API; use request() for other JSON endpoints. Command-line client The installed cloudflare-api command exposes the same resource methods and also supports low-level requests: cloudflare-api --resource r2 --action list_buckets --paginate --max-pages 2 cloudflare-api --resource kv --action create_namespace --arg-json '{"title":"my-app-cache"}' cloudflare-api --resource zones --action list --param status=active --output dumper cloudflare-api --method GET --path /accounts --full-response Arguments and named parameters can be supplied as strings, booleans, JSON, or JSON files. List actions support numbered and cursor-based pagination. Output is pretty JSON by default, with Data::Dumper available through --output dumper. Use cloudflare-api --man for the complete option reference. Documentation Reference documentation is available in the doc/ directory and from the GitHub Pages site linked from the repository. Module-specific Markdown pages are stored alongside their modules under lib/Cloudflare.