Administration / API / API Library
59 functions · 5 categories Swagger
Cloudflare Service Reference
API Library
Complete reference for CloudflareService — Workers, D1, R2, KV, and Workers for Platforms.
59
Functions
5
Categories
3
Workers
3
Storage
Resources worker-admin worker-encryption worker-proxy d1_shopify kv_shopify R2: tenant Account: 01a211b9…
Workers
16 functions
Scripts
GET ListWorkersAsync List all Workers in account
Signature
Task<CloudflareResponse<List<WorkerScript>>> ListWorkersAsync()
Example
var result = await cf.ListWorkersAsync(); foreach (var w in result!.Result!) Console.WriteLine($"{w.Id} — {w.UsageModel}");
GET GetWorkerScriptAsync Download raw script content
Signature
Task<string> GetWorkerScriptAsync( string scriptName)
Example
string js = await cf.GetWorkerScriptAsync("worker-admin"); Console.WriteLine(js[..200]);
PUT UploadWorkerAsync Deploy or replace a Worker
Signature
Task<CloudflareResponse<WorkerScript>> UploadWorkerAsync( string scriptName, string scriptContent)
Example
string code = "export default { async fetch(req) { return new Response('ok'); } }"; var result = await cf.UploadWorkerAsync("worker-admin", code); Console.WriteLine(result!.Result!.Etag);
DELETE DeleteWorkerAsync Permanently delete a Worker
Signature
Task DeleteWorkerAsync( string scriptName)
Example
await cf.DeleteWorkerAsync("worker-old"); Console.WriteLine("Deleted.");
GET GetWorkerSettingsAsync Get bindings, compat date, usage model
Signature
Task<CloudflareResponse<JsonElement>> GetWorkerSettingsAsync( string scriptName)
Example
var s = await cf.GetWorkerSettingsAsync("worker-admin"); Console.WriteLine(s!.Result.GetRawText());
PATCH UpdateWorkerSettingsAsync Update settings without re-uploading code
Signature
Task<CloudflareResponse<JsonElement>> UpdateWorkerSettingsAsync( string scriptName, object settings)
Example
var settings = new { logpush = true, usage_model = "standard" }; await cf.UpdateWorkerSettingsAsync("worker-admin", settings);
GET ListWorkerVersionsAsync List all uploaded versions
Signature
Task<CloudflareResponse<List<JsonElement>>> ListWorkerVersionsAsync( string scriptName)
Example
var v = await cf.ListWorkerVersionsAsync("worker-admin"); Console.WriteLine($"{v!.Result!.Count} versions");
Routes
GET ListRoutesAsync List all routes for a zone
Signature
Task<CloudflareResponse<List<WorkerRoute>>> ListRoutesAsync( string zoneId)
Example
var routes = await cf.ListRoutesAsync("zone-id"); foreach (var r in routes!.Result!) Console.WriteLine($"{r.Pattern} → {r.Script}");
POST CreateRouteAsync Bind a URL pattern to a Worker
Signature
Task<CloudflareResponse<WorkerRoute>> CreateRouteAsync( string zoneId, string pattern, string scriptName)
Example
var r = await cf.CreateRouteAsync("zone-id", "example.com/api/*", "worker-proxy"); Console.WriteLine($"Created route {r!.Result!.Id}");
PUT UpdateRouteAsync Change route pattern or Worker
Signature
Task<CloudflareResponse<WorkerRoute>> UpdateRouteAsync( string zoneId, string routeId, string pattern, string scriptName)
Example
await cf.UpdateRouteAsync("zone-id", "route-id", "example.com/v2/*", "worker-proxy");
DELETE DeleteRouteAsync Remove a route binding
Signature
Task DeleteRouteAsync( string zoneId, string routeId)
Example
await cf.DeleteRouteAsync("zone-id", "route-id");
Cron Triggers
GET ListCronTriggersAsync Get cron schedules for a Worker
Signature
Task<CloudflareResponse<JsonElement>> ListCronTriggersAsync( string scriptName)
Example
var cron = await cf.ListCronTriggersAsync("worker-admin"); Console.WriteLine(cron!.Result.GetRawText());
PUT UpdateCronTriggersAsync Replace all cron triggers
Signature
Task<CloudflareResponse<JsonElement>> UpdateCronTriggersAsync( string scriptName, string[] cronExpressions)
Example
await cf.UpdateCronTriggersAsync("worker-admin", ["0 * * * *", "0 0 * * *"]);
Custom Domains
GET ListCustomDomainsAsync List custom domains, filter by Worker
Signature
Task<CloudflareResponse<List<JsonElement>>> ListCustomDomainsAsync( string? workerName = null)
Example
var domains = await cf.ListCustomDomainsAsync("worker-proxy"); Console.WriteLine(domains!.Result!.Count);
PUT AttachCustomDomainAsync Attach a hostname to a Worker
Signature
Task<CloudflareResponse<JsonElement>> AttachCustomDomainAsync( string hostname, string workerName, string zoneId)
Example
await cf.AttachCustomDomainAsync( "api.example.com", "worker-proxy", "zone-id");
DELETE DeleteCustomDomainAsync Detach a custom domain
Signature
Task DeleteCustomDomainAsync( string domainId)
Example
await cf.DeleteCustomDomainAsync("domain-id");
🗄
D1 Database
9 functions
Databases
GET ListD1DatabasesAsync List all D1 databases
Signature
Task<CloudflareResponse<List<D1Database>>> ListD1DatabasesAsync( string? nameFilter = null, int page = 1, int perPage = 20)
Example
var dbs = await cf.ListD1DatabasesAsync(); foreach (var db in dbs!.Result!) Console.WriteLine($"{db.Name} — {db.NumTables} tables");
POST CreateD1DatabaseAsync Create a new D1 database
Signature
Task<CloudflareResponse<D1Database>> CreateD1DatabaseAsync( string name, string? locationHint = null)
Example
var db = await cf.CreateD1DatabaseAsync("my-new-db", "wnam"); Console.WriteLine(db!.Result!.Uuid);
GET GetD1DatabaseAsync Get metadata for a D1 database
Signature
Task<CloudflareResponse<D1Database>> GetD1DatabaseAsync( string databaseId)
Example
var db = await cf.GetD1DatabaseAsync("33da2dc6-9834-44ad-af30-0cefe2652105"); Console.WriteLine($"{db!.Result!.Name}: {db.Result.FileSize} bytes");
GET GetDefaultD1DatabaseAsync Get metadata for configured d1_shopify
Signature
Task<CloudflareResponse<D1Database>> GetDefaultD1DatabaseAsync()
Example
var db = await cf.GetDefaultD1DatabaseAsync(); Console.WriteLine($"{db!.Result!.Name}: {db.Result.NumTables} tables");
DELETE DeleteD1DatabaseAsync Permanently delete a D1 database
Signature
Task DeleteD1DatabaseAsync( string databaseId)
Example
await cf.DeleteD1DatabaseAsync("old-db-uuid");
Query / SQL
POST QueryD1Async Execute SQL: SELECT, INSERT, UPDATE, DELETE
Signature
Task<CloudflareResponse<List<D1QueryResult>>> QueryD1Async( string databaseId, string sql, object[]? parameters = null)
Example
var res = await cf.QueryD1Async( "33da2dc6-...", "SELECT * FROM products WHERE active = ?1", [true]); foreach (var row in res!.Result![0].Results) Console.WriteLine(row["id"]);
POST QueryDefaultD1Async SQL on configured d1_shopify
Signature
Task<CloudflareResponse<List<D1QueryResult>>> QueryDefaultD1Async( string sql, object[]? parameters = null)
Example
var res = await cf.QueryDefaultD1Async( "INSERT INTO orders (shop_id, total) VALUES (?1, ?2)", ["shop123", 99.99]); Console.WriteLine($"Inserted row {res!.Result![0].Meta!.LastRowId}");
POST BatchQueryD1Async Execute multiple SQL statements atomically
Signature
Task<CloudflareResponse<List<D1QueryResult>>> BatchQueryD1Async( string databaseId, IEnumerable<D1Statement> statements)
Example
var stmts = new D1Statement[] { new() { Sql = "INSERT INTO users (name) VALUES (?1)", Params = ["Alice"] }, new() { Sql = "SELECT COUNT(*) as n FROM users" } }; var res = await cf.BatchQueryD1Async("db-id", stmts);
POST ExportD1DatabaseAsync Export database as SQL dump
Signature
Task<CloudflareResponse<JsonElement>> ExportD1DatabaseAsync( string databaseId)
Example
var export = await cf.ExportD1DatabaseAsync("33da2dc6-..."); var url = export!.Result.GetProperty("result").GetProperty("signed_url").GetString(); Console.WriteLine(url);
🪣
R2 Storage
12 functions
Buckets
GET ListR2BucketsAsync List all R2 buckets
Signature
Task<CloudflareResponse<JsonElement>> ListR2BucketsAsync( string? nameContains = null)
Example
var buckets = await cf.ListR2BucketsAsync(); Console.WriteLine(buckets!.Result.GetRawText());
POST CreateR2BucketAsync Create a new R2 bucket
Signature
Task<CloudflareResponse<R2Bucket>> CreateR2BucketAsync( string name, string? locationHint = null)
Example
var b = await cf.CreateR2BucketAsync("my-assets", "WNAM"); Console.WriteLine(b!.Result!.Name);
GET GetR2BucketAsync Get R2 bucket properties
Signature
Task<CloudflareResponse<R2Bucket>> GetR2BucketAsync( string bucketName)
Example
var b = await cf.GetR2BucketAsync("tenant"); Console.WriteLine($"{b!.Result!.Name} — {b.Result.Location}");
DELETE DeleteR2BucketAsync Delete an empty R2 bucket
Signature
Task DeleteR2BucketAsync( string bucketName)
Example
await cf.DeleteR2BucketAsync("old-bucket");
Objects (S3)
PUT PutR2ObjectAsync Upload an object to R2
Signature
Task PutR2ObjectAsync( string key, Stream content, string contentType, Dictionary<string,string>? metadata = null)
Example
using var stream = File.OpenRead("image.png"); await cf.PutR2ObjectAsync( "products/image.png", stream, "image/png", new() { ["uploaded-by"] = "admin" });
GET GetR2ObjectAsync Download an object from R2
Signature
Task<Stream> GetR2ObjectAsync( string key)
Example
using var stream = await cf.GetR2ObjectAsync("products/image.png"); using var file = File.Create("local.png"); await stream.CopyToAsync(file);
HEAD HeadR2ObjectAsync Check existence and get metadata
Signature
Task<HttpResponseHeaders> HeadR2ObjectAsync( string key)
Example
var headers = await cf.HeadR2ObjectAsync("products/image.png"); bool exists = headers != null; Console.WriteLine($"Exists: {exists}");
DELETE DeleteR2ObjectAsync Delete an object from R2
Signature
Task DeleteR2ObjectAsync( string key)
Example
await cf.DeleteR2ObjectAsync("products/old-image.png");
GET ListR2ObjectsAsync List objects with optional prefix filter
Signature
Task<string> ListR2ObjectsAsync( string? prefix = null, int maxKeys = 1000)
Example
string xml = await cf.ListR2ObjectsAsync("products/", 100); Console.WriteLine(xml[..500]);
CORS Policies
GET GetR2CorsAsync Get CORS rules for a bucket
Signature
Task<CloudflareResponse<JsonElement>> GetR2CorsAsync( string bucketName)
Example
var cors = await cf.GetR2CorsAsync("tenant"); Console.WriteLine(cors!.Result.GetRawText());
PUT PutR2CorsAsync Set (replace) CORS policy
Signature
Task<CloudflareResponse<JsonElement>> PutR2CorsAsync( string bucketName, IEnumerable<CorsRule> rules)
Example
var rules = new[] { new CorsRule { AllowedOrigins = ["https://example.com"], AllowedMethods = ["GET", "PUT"], MaxAgeSeconds = 3600 }}; await cf.PutR2CorsAsync("tenant", rules);
DELETE DeleteR2CorsAsync Remove all CORS rules
Signature
Task DeleteR2CorsAsync( string bucketName)
Example
await cf.DeleteR2CorsAsync("tenant");
🔑
KV Storage
11 functions
Namespaces
GET ListKvNamespacesAsync List all KV namespaces
Signature
Task<CloudflareResponse<List<KvNamespace>>> ListKvNamespacesAsync( int page = 1, int perPage = 20)
Example
var ns = await cf.ListKvNamespacesAsync(); foreach (var n in ns!.Result!) Console.WriteLine($"{n.Title} — {n.Id}");
POST CreateKvNamespaceAsync Create a KV namespace
Signature
Task<CloudflareResponse<KvNamespace>> CreateKvNamespaceAsync( string title)
Example
var ns = await cf.CreateKvNamespaceAsync("SESSION_CACHE"); Console.WriteLine(ns!.Result!.Id);
PUT RenameKvNamespaceAsync Rename a KV namespace
Signature
Task<CloudflareResponse<KvNamespace>> RenameKvNamespaceAsync( string namespaceId, string newTitle)
Example
await cf.RenameKvNamespaceAsync("87747519...", "kv_shopify_v2");
DELETE DeleteKvNamespaceAsync Delete namespace and all its keys
Signature
Task DeleteKvNamespaceAsync( string namespaceId)
Example
await cf.DeleteKvNamespaceAsync("namespace-id");
Values
PUT WriteKvValueAsync Write a key-value pair with optional TTL
Signature
Task WriteKvValueAsync( string namespaceId, string key, string value, int? expirationTtl = null)
Example
await cf.WriteKvValueAsync( "87747519...", "session:user123", "{\"userId\": 42}", expirationTtl: 3600);
GET ReadKvValueAsync Read raw value by key
Signature
Task<string> ReadKvValueAsync( string namespaceId, string key)
Example
string val = await cf.ReadKvValueAsync("87747519...", "session:user123"); Console.WriteLine(val);
GET GetKvMetadataAsync Read key metadata without fetching value
Signature
Task<CloudflareResponse<JsonElement>> GetKvMetadataAsync( string namespaceId, string key)
Example
var meta = await cf.GetKvMetadataAsync("87747519...", "session:user123"); Console.WriteLine(meta!.Result.GetRawText());
DELETE DeleteKvValueAsync Delete a key-value pair
Signature
Task DeleteKvValueAsync( string namespaceId, string key)
Example
await cf.DeleteKvValueAsync("87747519...", "session:user123");
GET ListKvKeysAsync List keys with optional prefix filter
Signature
Task<CloudflareResponse<List<KvKey>>> ListKvKeysAsync( string namespaceId, string? prefix = null, int limit = 1000)
Example
var keys = await cf.ListKvKeysAsync("87747519...", prefix: "session:"); foreach (var k in keys!.Result!) Console.WriteLine(k.Name);
Bulk Operations
PUT BulkWriteKvAsync Write up to 10,000 pairs in one call
Signature
Task<CloudflareResponse<object>> BulkWriteKvAsync( string namespaceId, IEnumerable<KvBulkItem> items)
Example
var items = new KvBulkItem[] { new() { Key = "u:alice", Value = "{\"score\":100}", ExpirationTtl = 86400 }, new() { Key = "u:bob", Value = "{\"score\":200}" } }; await cf.BulkWriteKvAsync("87747519...", items);
DELETE BulkDeleteKvAsync Delete up to 10,000 keys at once
Signature
Task<CloudflareResponse<object>> BulkDeleteKvAsync( string namespaceId, IEnumerable<string> keys)
Example
await cf.BulkDeleteKvAsync( "87747519...", ["session:user1", "session:user2", "session:user3"]);
🏗
Workers for Platforms
11 functions
Dispatch Namespaces
GET ListDispatchNamespacesAsync List all dispatch namespaces
Signature
Task<CloudflareResponse<List<DispatchNamespace>>> ListDispatchNamespacesAsync()
Example
var ns = await cf.ListDispatchNamespacesAsync(); foreach (var n in ns!.Result!) Console.WriteLine(n.NamespaceName);
POST CreateDispatchNamespaceAsync Create a dispatch namespace
Signature
Task<CloudflareResponse<DispatchNamespace>> CreateDispatchNamespaceAsync( string name)
Example
var ns = await cf.CreateDispatchNamespaceAsync("my-platform"); Console.WriteLine(ns!.Result!.NamespaceId);
GET GetDispatchNamespaceAsync Get dispatch namespace properties
Signature
Task<CloudflareResponse<DispatchNamespace>> GetDispatchNamespaceAsync( string namespaceName)
Example
var ns = await cf.GetDispatchNamespaceAsync("my-platform"); Console.WriteLine(ns!.Result!.NamespaceId);
DELETE DeleteDispatchNamespaceAsync Delete namespace and all Workers in it
Signature
Task DeleteDispatchNamespaceAsync( string namespaceName)
Example
await cf.DeleteDispatchNamespaceAsync("old-platform");
Namespace Scripts
GET ListNamespaceScriptsAsync List Workers in a dispatch namespace
Signature
Task<CloudflareResponse<List<JsonElement>>> ListNamespaceScriptsAsync( string namespaceName)
Example
var scripts = await cf.ListNamespaceScriptsAsync("my-platform"); Console.WriteLine($"{scripts!.Result!.Count} tenant workers");
PUT UploadNamespaceScriptAsync Deploy a Worker into a namespace
Signature
Task<CloudflareResponse<WorkerScript>> UploadNamespaceScriptAsync( string namespaceName, string scriptName, string scriptContent)
Example
string code = "export default { fetch: (r) => new Response('tenant ok') }"; var r = await cf.UploadNamespaceScriptAsync( "my-platform", "tenant-acme", code);
GET GetNamespaceScriptSettingsAsync Get bindings and settings
Signature
Task<CloudflareResponse<JsonElement>> GetNamespaceScriptSettingsAsync( string namespaceName, string scriptName)
Example
var s = await cf.GetNamespaceScriptSettingsAsync("my-platform", "tenant-acme"); Console.WriteLine(s!.Result.GetRawText());
DELETE DeleteNamespaceScriptAsync Remove a Worker from a namespace
Signature
Task DeleteNamespaceScriptAsync( string namespaceName, string scriptName, bool force = false)
Example
await cf.DeleteNamespaceScriptAsync("my-platform", "tenant-acme");
Script Tags
GET ListScriptTagsAsync List tags on a namespace Worker
Signature
Task<CloudflareResponse<List<string>>> ListScriptTagsAsync( string namespaceName, string scriptName)
Example
var tags = await cf.ListScriptTagsAsync("my-platform", "tenant-acme"); Console.WriteLine(string.Join(", ", tags!.Result!));
PUT SetScriptTagsAsync Replace all tags on a namespace Worker
Signature
Task<CloudflareResponse<List<string>>> SetScriptTagsAsync( string namespaceName, string scriptName, string[] tags)
Example
await cf.SetScriptTagsAsync( "my-platform", "tenant-acme", ["tenant:acme", "plan:pro", "region:us"]);
DELETE DeleteScriptTagAsync Remove a single tag
Signature
Task DeleteScriptTagAsync( string namespaceName, string scriptName, string tag)
Example
await cf.DeleteScriptTagAsync("my-platform", "tenant-acme", "plan:pro");
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.