Typed SDKs for your product model.
Add a field to Customer, rename an Order status, expose a workflow, grant an agent action, or install a project-published capability surface. Every language client picks it up from the same canonical backbone. Manifest-versioned for compatibility — no silent drift.
Pick your language
Available now or coming soon. All SDKs share the same canonical product-type emitter for guaranteed shape parity.
TypeScript
npm install @vadyl/sdkPython
pip install vadylC#
dotnet add package Vadyl.ClientGo
go get go.vadyl.dev/sdkRust
cargo add vadylJava
implementation 'io.vadyl:sdk:1.0.0'Ruby
gem install vadylKotlin
implementation("io.vadyl:sdk-kotlin:1.0.0")Swift
swift package vadyl-swiftPHP
composer require vadyl/sdkExact SDK contracts
The SDK overview shows the developer experience; the reference pages are the authoritative method, namespace, compatibility, and generated-contract docs.
SDK method reference
Every client method across TypeScript, Python, C#, Go, and Rust with inputs, returns, and errors.
SDK reference model
Generated namespaces, compatibility taxonomy, language parity, retries, pagination, and manifest enforcement.
Project capability surfaces
Project-authored, project-published, project-installed capability surfaces across manifests, grants, exposure bindings, PCG, SDK, CLI, MCP, and usage evidence.
REST controller atlas
Every controller-backed endpoint with parameters, request examples, responses, errors, and samples.
REST API model
Base URLs, resource conventions, pagination, idempotency, error envelopes, OpenAPI discovery, and examples.
Errors reference
Canonical error envelopes, HTTP status mapping, machine-readable codes, reason codes, and correlation IDs.
Limits & quotas
Rate limits, hard and soft quotas, budget enforcement, usage metering, and retry guidance.
Same product operation. Five languages.
Switching language switches every code block on this page — the Customer, Order, workflow, and realtime operation is identical, only the syntax differs.
import { createClient } from "@vadyl/sdk";
const vadyl = createClient({
apiUrl: "https://api.vadyl.app/v1",
token: process.env.VADYL_TOKEN!,
tenant: "acme",
project: "billing",
});const recent = await vadyl.orders.list({
filter: { status: { in: ["paid", "fulfilled"] }, total: { gt: 100 } },
sort: [{ field: "createdAt", direction: "desc" }],
pageSize: 50,
include: ["customer"],
});const customer = await vadyl.customers.create(
{ email: "ada@example.com", name: "Ada Lovelace" },
{ idempotencyKey: `signup:${session.id}` },
);const sub = vadyl.orders.subscribe({
filter: { status: { eq: "paid" } },
});
for await (const evt of sub.events()) {
const order = await vadyl.orders.read(evt.entityId);
console.log("paid:", order);
}One product model. Every language.
Every Vadyl SDK is a projection from the product model and canonical contract backbone — the same graph that drives REST, GraphQL, gRPC, MCP, and OpenAPI. The seven-dimensional version taxonomy is embedded in every generated SDK as a manifest. Mismatches fail closed at runtime with a typed IncompatibleGeneratedSdkError.
Project-published capabilities get typed clients too
When a consumer project installs a provider surface, SDKs project the installed operations, commands, workflows, agent skills, analytics, events, and resources as typed namespaces with version pins and grant-aware errors.
const email = vadyl.surfaces.EmailService;
await email.email.send({
to: user.email,
template: "welcome",
data: { userId: user.id },
});
const usage = await vadyl.surfaces.consumption.query({
surface: "EmailService",
groupBy: ["operation", "consumerProject"],
});Need an SDK that isn't here yet?
Custom SDK generation is built into Vadyl. New language emitters project the same product model and contract backbone — and we're shipping more.