Skip to main content

SDKs

Expedify ships typed client libraries for TypeScript and Python, generated from the /v1 OpenAPI spec — so they never drift from the API. They bake in Bearer agx_ auth, pagination, the filter DSL, typed models, and automatic 429 retry.

Preview

The SDKs are generated from the published spec (that's why the API's named types — Contact, Deal, ErrorEnvelope — come through). The examples below show the target ergonomics for the published @expedify/sdk / expedify packages. Install availability is announced here at launch.

Install

# TypeScript / JavaScript
npm install @expedify/sdk

# Python
pip install expedify

Authenticate

TypeScript
import { Expedify } from "@expedify/sdk";
const client = new Expedify({ apiKey: process.env.EXPEDIFY_API_KEY });
Python
from expedify import Expedify
client = Expedify(api_key=os.environ["EXPEDIFY_API_KEY"])

The client sends Authorization: Bearer agx_… on every request against https://api.expedify.ai/v1.

Typed CRM objects

const contact = await client.contacts.create({
email: "jane@acme.com",
first_name: "Jane",
lead_status: "qualified",
});

const deal = await client.deals.get(dealId); // typed Deal

Requests and responses are the named schemas from the spec (Contact, ContactCreate, Deal, …).

Pagination

for await (const contact of client.contacts.listAll({ q: "acme" })) {
// auto-follows offset pages
}

Filtering (the DSL)

await client.contacts.list({
filters: [{ field: "lead_score", operator: "gte", value: 50 }],
match: "all",
sort: "created_at",
order: "desc",
});

Errors

The error envelope is raised as a typed exception:

from expedify import ExpedifyError
try:
client.contacts.get(bad_id)
except ExpedifyError as e:
print(e.type, e.message, e.request_id) # e.g. "not_found", "...", "..."

Retries

429 responses are retried automatically, honoring Retry-After. Configurable via the client options.

Versioning

SDKs are versioned to /v1. A breaking contract change (caught by the golden contract test) forces a major version bump — never a silent break.

MCP needs no SDK

The SDKs cover the REST surface. For MCP, clients speak the protocol natively — the "SDK" is just the connect guide.