Yes, at this time, the general sales contact form is the way to get an API key. We will issue keys a
Yes, at this time, the general sales contact form is the way to get an API key. We will issue keys and accounts to everyone next week.

In exchange for being an early user, you will receive a significantly discounted price when the improved commercial service launches later this year.This new "commercial service" won't replace the free service, and folks will be able to continue using that if they get an API key?
Cloudflare Workers MailChannels developer/user, we'd like a free API key please..MailChannels plans to launch a more capable email delivery API in the future, complete with delivery tracking features, DKIM-key hosting, generative-AI delivery optimization, and more.
version_metadata for each of my envs, or is the key enough to have in the root just once?InstanceType. It automatically types your RPC classes so you could use your RPC methods in other workers with type-safety.
Service and DurableObjectNamespace generic types do, isn't it?logpush = true when you're a member of another account? https://github.com/cloudflare/workers-sdk/issues/2991Cloudflare Workers MailChannels developer/user, we'd like a free API key please.version_metadataInstanceTypeServiceDurableObjectNamespacelogpush = true{
"name": "Error",
"message": "Subrequest depth limit exceeded. This request recursed through Workers too many times. This can happen e.g. if you have a Worker or Durable Object that calls other Workers or objects recursively.",
"timestamp": 1719081484425
}import { RpcTarget, WorkerEntrypoint } from 'cloudflare:workers';
class Counter extends RpcTarget {
#value = 0;
increment(amount: number = 1) {
this.#value += amount;
return this.#value;
}
get value() {
return this.#value;
}
}
export class CounterService extends WorkerEntrypoint {
async newCounter() {
return new Counter();
}
}
export type CounterServiceStub = InstanceType<typeof CounterService>; const [body, body2] = request.body.tee()
const result = await Promise.allSettled([
fetch(url1, { method: request.method, headers: request.headers, body: body }),
fetch(url2, { method: request.method, headers: request.headers, body: body2 })
]) const [body, body2] = request.body.tee()
const result = await Promise.allSettled([
env.MY_SERVICE.fetch(new Request(request, { body })),
fetch(url2, { method: request.method, headers: request.headers, body: body2 })
])