Skip to content
Built with

Resource Clients ​

KV ​

Imported from "void/kv".

kv ​

Typed JSON-aware client for the inferred KV binding.

ts
import { kv } from 'void/kv';

await kv.put('settings', { theme: 'dark' });
const settings = await kv.get<{ theme: string }>('settings');

Key exports: kv, createKV(namespace), KVClient, KVMap, PutOptions, ListOptions.

kv.map(prefix) creates a typed namespaced view where every key is stored under prefix:.

Storage ​

Imported from "void/storage".

storage ​

Default R2 bucket proxy for the inferred STORAGE binding.

ts
import { storage } from 'void/storage';

await storage.put('avatars/alice.png', file);
const object = await storage.get('avatars/alice.png');

Key exports: storage, createStorage(bucket).

AI ​

Imported from "void/ai".

ai ​

Typed AI client for Cloudflare AI models and provider-native AI Gateway requests.

ts
import { ai } from 'void/ai';

const result = await ai.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
  messages: [{ role: 'user', content: 'Summarize this release note.' }],
});

const response = await ai.provider('openai').fetch('/chat/completions', {
  body: {
    model: 'gpt-4o',
    messages: [{ role: 'user', content: 'Summarize this release note.' }],
  },
});

Key exports: ai, VoidAi, provider request types. See AI for provider setup and streaming examples.

AI methods return promises and reject usage limits with UsageLimit from void/limits. Void routes and Pages actions return a structured HTTP 429 for uncaught limits. See usage limits for optional instanceof UsageLimit handling.

Provider keys ​

Default secret names for ai.provider(). Use apiKeyEnv to choose another name.

Provider prefixEnv var
openaiOPENAI_API_KEY
anthropicANTHROPIC_API_KEY
google-ai-studioGOOGLE_API_KEY
deepseekDEEPSEEK_API_KEY
groqGROQ_API_KEY
mistralMISTRAL_API_KEY
grokGROK_API_KEY
openrouterOPENROUTER_API_KEY
perplexityPERPLEXITY_API_KEY
cohereCOHERE_API_KEY
cerebrasCEREBRAS_API_KEY
huggingfaceHUGGINGFACE_API_KEY
replicateREPLICATE_API_KEY
basetenBASETEN_API_KEY
cartesiaCARTESIA_API_KEY
deepgramDEEPGRAM_API_KEY
elevenlabsELEVENLABS_API_KEY
falFAL_API_KEY
ideogramIDEOGRAM_API_KEY
parallelPARALLEL_API_KEY

ISR ​

Imported from "void/isr".

revalidate(options) ​

Revalidate ISR-cached pages on demand. In local development this is a no-op because there is no edge ISR cache.

ts
import { revalidate } from 'void/isr';

await revalidate({ paths: ['/', '/blog/hello'] });
await revalidate({ all: true });

Signature:

ts
function revalidate(options: { paths?: string[]; all?: boolean }): Promise<void>;

Logging ​

Imported from "void/log".

logger ​

Structured logger that emits one JSON line per call so deployed logs can be filtered by message and fields.

ts
import { logger } from 'void/log';

logger.info('checkout completed', { orderId, userId });
logger.error('webhook failed', { provider: 'stripe', attempt: 3 });

Methods: logger.error(message, fields?), logger.warn(message, fields?), logger.info(message, fields?).