An AI agent you can program.
Every Pazau capability has an API. Start conversations, register Actions, subscribe to outcomes, pull Traces into your warehouse, and ship the Messenger in your own app, all with typed SDKs and a sandbox that behaves like production.
import { Pazau } from "@pazau/sdk";
const pazau = new Pazau({ apiKey: process.env.PAZAU_API_KEY, region: "eu" });
// Hand a conversation to Pazau Agent and wait for the outcome
const run = await pazau.conversations.create({
channel: "chat",
customer: { externalId: "cust_88213", locale: "sv-SE" },
message: "My scooter locked mid-ride and I was still charged.",
procedures: ["ride-billing-dispute@v7"],
});
run.status; // "resolved"
run.actions; // [{ name: "issue_ride_credit", amount: 4.20, currency: "EUR" }]
run.handoff; // nullSix surfaces, one data model.
The same objects your admins see in the app are the ones you get from the API. No separate integration schema to learn.
REST API
Conversations, customers, Procedures, Actions, Traces, and Insights. JSON over HTTPS, versioned by date.
Webhooks
38 event types, HMAC-SHA256 signed, retried with backoff for 72 hours.
JS & Python SDKs
Typed clients with auto-pagination, idempotency keys, and streaming.
Messenger SDK
Native iOS and Android, plus a 38 KB web snippet. Verified identity via JWT.
Actions spec
Declare tools in YAML or import OpenAPI. Limits and approvals live in the spec.
Sandbox
An isolated workspace with seeded data, test channels, and Procedure simulation.
Predictable, typed, and boring in the best way.
Resource-oriented URLs, JSON everywhere, cursor pagination, and idempotency keys on every write. The API is versioned by date (current: 2026-08-01), and we don't break a version once it ships.
- Base URL
api.pazau.com/v1 · api.eu.pazau.com/v1- Auth
- Scoped API keys or OAuth 2.0 client credentials
- Versioning
- Pazau-Version header, 24-month support
- SDKs
- TypeScript, Python, plus a CLI
- OpenAPI
- Full 3.1 spec, published with each release
# JavaScript / TypeScript (Node 18+, Bun, Deno, edge runtimes)
$ npm install @pazau/sdk
# Python 3.9+ (sync and asyncio clients)
$ pip install pazau
# CLI: sandbox, Action testing, Procedure simulation
$ npm install -g @pazau/cli
$ pazau login --workspace copperline-sandbox
$ pazau simulate procedures/damaged-item.md --sample 200
✓ 184 resolved · 11 escalated (expected) · 5 need reviewPull outcomes, scores, and Traces into your own stack.
Most teams start by exporting data. Resolution outcomes, QA scores, and full Traces are first-class API objects, so your BI, your data science team, and your auditors work from the same record.
- Async client for high-volume exports with automatic retries
- Traces export as JSON or signed PDF for regulators
- EU workspaces are served exclusively from EU endpoints
from pazau import Pazau
client = Pazau(region="us")
# Stream last week's QA scores for conversations Pazau Agent resolved
for score in client.insights.qa_scores.list(
scorecard="claims-fnol-v3",
resolved_by="agent",
since="2026-09-20",
): # auto-paginates, 500 per page
if score.compliance_flags:
print(score.conversation_id, score.total, score.compliance_flags)Know the moment a conversation resolves, or doesn't.
Subscribe to 38 events across conversations, handoffs, Actions, approvals, and QA. Every delivery is signed, timestamped, and retried with exponential backoff for up to 72 hours.
{
"id": "evt_01J9ZM2C8H6K",
"type": "conversation.resolved",
"created_at": "2026-09-26T14:02:11Z",
"data": {
"conversation_id": "conv_4812907",
"resolved_by": "agent",
"procedure": "involuntary-schedule-change@v14",
"actions": ["get_booking", "rebook", "send_itinerary"],
"billable_resolution": true,
"csat_predicted": 4.8,
"trace_url": "https://app.pazau.com/traces/trace_01J9ZK4Q"
}
}import os
from pazau.webhooks import verify_signature, InvalidSignature
@app.post("/pazau")
def handle(request):
try:
event = verify_signature(
payload=request.body,
header=request.headers["Pazau-Signature"],
secret=os.environ["PAZAU_WEBHOOK_SECRET"],
tolerance=300, # seconds; rejects replays
)
except InvalidSignature:
return 400
if event.type == "handoff.created":
page_on_call(event.data["queue"], event.data["summary"])
return 200Put Pazau inside your app in an afternoon.
Native SDKs for iOS (Swift, iOS 15+) and Android (Kotlin, API 24+), and a 38 KB web snippet. Pass a signed JWT and Pazau Agent knows who it's talking to, so it can take Actions without asking for an order number.
<script src="https://cdn.pazau.com/messenger/v4.js" async></script>
<script>
Pazau("boot", {
appId: "app_copperline",
userJwt: window.__PAZAU_JWT__, // verified identity
theme: { accent: "#1f3d2b" },
});
</script>import PazauMessenger
Pazau.configure(appId: "app_vasa", region: .eu)
Pazau.identify(jwt: session.pazauToken)
Pazau.present(from: self, context: [
"ride_id": ride.id,
"city": "Göteborg"
])import com.pazau.messenger.Pazau
Pazau.configure(this, appId = "app_vasa", region = Region.EU)
Pazau.identify(jwt = session.pazauToken)
Pazau.present(
this,
context = mapOf("ride_id" to ride.id)
)JWT signed with your key. Unverified sessions can't trigger write Actions.
Carousels, forms, file upload, and flight or order cards.
APNs and FCM push; conversations resume across devices.
WCAG 2.2 AA, Dynamic Type, TalkBack, and VoiceOver.
Tools with limits written into the contract.
An Action is a typed, versioned description of one operation in your systems. Limits, approval rules, and redaction are part of the spec, not a prompt instruction, so the model can't talk its way past them.
- effect: read | write. Writes require customer confirmation by default.
- Hard limits. Per call, per customer, and per workspace per day.
- Approvals. Route to a role in Slack, Teams, or the Inbox; the conversation waits.
- Import, don't rewrite. Generate specs from OpenAPI 3.x with
x-pazauextensions.
name: issue_refund
description: Refund all or part of an order to the original payment method.
effect: write
endpoint: POST https://oms.internal/api/orders/{order_id}/refunds
auth: oauth2:oms-prod
parameters:
order_id: { type: string, pattern: "^CO-\\d{5}$" }
amount: { type: number, minimum: 0.01 }
reason: { enum: [damaged, late, not_received, goodwill] }
limits:
per_call_max: 250.00 # above this → approval
per_customer_30d: 500.00
daily_workspace_cap: 25000.00
approval:
when: amount > 250
approvers: [role:cx_lead]
channel: slack:#refund-approvals
confirm_with_customer: true
redact_response: [card_last4, billing_address]A production twin you can break.
Every Business and Enterprise workspace comes with a sandbox: seeded customers and orders, test phone numbers and chat channels, mock Action endpoints, and Procedure simulation against anonymized history. Promote Procedures and Actions to production with a reviewable diff.
- Seeded data
- 5,000 customers · 20,000 orders
- Test channels
- Chat, email, SMS, voice (+1 555 numbers)
- Action mocks
- Record/replay or static fixtures
- Simulation
- Up to 2,000 past conversations per run
- Promotion
- Diff, approve, publish · audit logged
Generous limits, clear headers.
Limits apply per workspace, per region. Every response includes X-RateLimit-Remaining and X-RateLimit-Reset; a 429 includes Retry-After. SDKs back off automatically.
| Endpoint class | Growth | Business | Enterprise |
|---|---|---|---|
| Read endpoints (GET) | 600 / min | 1,200 / min | Custom, up to 10,000 / min |
| Write endpoints (POST, PATCH, DELETE) | 120 / min | 300 / min | Custom, up to 3,000 / min |
| Conversation create | 60 / min | 240 / min | Custom |
| Bulk export jobs | 5 concurrent | 20 concurrent | 50 concurrent |
| Procedure simulations | 10 / hour | 60 / hour | Unmetered |
| Webhook endpoints per workspace | 10 | 50 | 250 |
Up, and we publish it.
- REST API · US99.99%
- REST API · EU99.99%
- Webhooks delivery99.98%
- Messenger SDK / CDN100.00%
- Actions runtime99.98%
API SLA: 99.9% on Business and 99.95% on Enterprise, with service credits. Subscribe to incidents by email, RSS, or webhook at status.pazau.com.
Developer questions.
Full reference, guides, and changelog at docs.pazau.com.
Is API access included in every plan?+
Does data sent through the API train models?+
How do I keep EU data in the EU?+
What's your deprecation policy?+
Can I test Actions without touching production systems?+
Start building in the sandbox.
We'll provision a sandbox workspace with seeded data and a solutions engineer who has shipped Actions against your stack before.