Skip to content

API Examples

All examples assume Fabric is running at http://localhost:3001. Replace placeholder IDs with actual values from your environment.

import { FabricClient } from "@fabric-platform/sdk";
const fabric = new FabricClient({ apiKey: "fab_xxx" });
const health = await fabric.healthCheck();
const providers = await fabric.listProviders();
// Get current principal
const me = await fabric.getMe();
// List my organizations
const orgs = await fabric.getMyOrganizations();
// List my teams
const teams = await fabric.getMyTeams();
// Get my effective permissions
const perms = await fabric.getMyPermissions();
// Create an organization
const org = await fabric.createOrganization({
slug: "acme", name: "Acme Corp",
});
// Get organization details
const orgDetails = await fabric.getOrganization("<org-id>");
// List organization teams
const teams = await fabric.listTeams("<org-id>");
// List organization members
const members = await fabric.listMembers("<org-id>");
// Create a team
const team = await fabric.createTeam({
organizationId: "<org-id>",
slug: "engineering",
name: "Engineering",
});
// Create an invitation
const invite = await fabric.createInvitation({
organizationId: "<org-id>",
email: "user@example.com",
role: "member",
});
// Single permission check
const allowed = await fabric.checkPermission({
action: "organization.invite",
});
// Batch permission check
const results = await fabric.checkPermissions([
{ action: "organization.read" },
{ action: "team.create" },
]);
// Submit a job
const job = await fabric.createJob({
modality: "image",
tier: "premium",
input: { prompt: "a cat in space" },
params: { size: "1024x1024" },
organizationId: "<org-id>",
});
// Submit with idempotency key
const job2 = await fabric.createJob({
modality: "text",
input: { prompt: "Hello world" },
organizationId: "<org-id>",
idempotencyKey: "unique-request-id-123",
});
// Get job status
const status = await fabric.getJob("<job-id>");
// List jobs
const jobs = await fabric.listJobs();
// Get job usage
const usage = await fabric.getJobUsage("<job-id>");
import { WorkflowBuilder } from "@fabric-platform/sdk";
// Create a workflow definition
const workflow = new WorkflowBuilder("transcribe-and-summarize")
.node("transcribe", "ai_invoke", (n) =>
n.config({ operation: "audio.transcribe", modality: "audio" })
)
.node("summarize", "ai_invoke", (n) =>
n.dependsOn("transcribe")
.config({ operation: "ai.generate", modality: "text" })
)
.build();
const defId = await fabric.registerDefinition(workflow);
// Create and run
const result = await fabric.runDefinition(workflow, {
context: { audio: { url: "https://example.com/audio.wav" } },
});
// Or step by step:
const runId = await fabric.runWorkflow(defId, {
audio: { url: "https://example.com/audio.wav" },
});
// Start execution
await fabric.startRun(runId);
// Cancel if needed
await fabric.cancelRun(runId);
// List available providers
const providers = await fabric.listProviders();
// Execute a provider request
const result = await fabric.executeProvider({
modality: "text",
model: "qwen3:latest",
input: { prompt: "Explain quantum computing in one sentence" },
params: { temperature: 0.7 },
});
// Estimate cost
const estimate = await fabric.estimateCost({
modality: "text",
model: "gpt-4",
input: { prompt: "Hello world" },
});
// Create an API key
const key = await fabric.createApiKey({
name: "my-service-key",
organizationId: "<org-id>",
scopes: ["jobs:write", "providers:execute"],
});
console.log("Store this key:", key.raw_key);
// List API keys
const keys = await fabric.listApiKeys();
// Revoke an API key
await fabric.deleteApiKey("<key-id>");
// Stream all events
await fabric.streamEvents((event) => {
console.log(event.kind, event.payload);
});
// Stream job events
await fabric.streamEvents("<job-id>", (event) => {
console.log(event.kind);
});
// Wait for a workflow run
const result = await fabric.waitForRun("<run-id>", {
onEvent: (e) => console.log(e.kind),
});
// Organization usage summary
const usage = await fabric.getOrgUsage("<org-id>");
// Detailed usage records
const records = await fabric.getOrgUsageRecords("<org-id>");
// Audit logs
const logs = await fabric.getOrgAuditLogs("<org-id>");