Everything you need to integrate agreement signing into your application.
Get your first agreement signed in 5 minutes.
API keys, test mode, and auth patterns.
Create, manage, and send agreements.
Cryptographic signature receipts.
Real-time event notifications.
Connect AI agents via Model Context Protocol.
Get your first agreement signed in 5 minutes.
Sign up at pactra.dev/signup, then go to Settings → API Keys and create a new key.
curl -X POST https://pactra.dev/api/v1/agreements \
-H "Authorization: Bearer pk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Service Agreement",
"description": "Q1 consulting contract"
}'Add signers to the agreement, then send it for signature. Each signer receives an email with a secure signing link.
When signing completes, a cryptographic receipt is generated. Verify it anytime via the API to prove what was signed, by whom, and when.
Authenticate API requests using Bearer token authentication with your API key.
Authorization: Bearer pk_live_YOUR_API_KEY
| Prefix | Mode | Description |
|---|---|---|
| pk_live_ | Live | Production data. Sends real emails. |
| pk_test_ | Test | Sandbox mode. No emails sent. |
Create, list, and manage agreements programmatically.
/api/v1/agreements?status=, ?limit=, ?offset= query params./api/v1/agreementsCreate a new draft agreement.
{
"title": "Service Agreement",
"description": "Optional description",
"document_id": "uuid (optional)"
}/api/v1/agreements/:idEvery signature generates a cryptographic receipt with a SHA-256 hash of all signing data. Verify receipts anytime to prove integrity.
/api/v1/receipts/:id/api/v1/receipts/:id/verify{ valid: true/false }.Receive real-time notifications when events occur. Payloads are signed with HMAC-SHA256.
| Event | Description |
|---|---|
| signature.completed | A signer has completed their signature. |
| agreement.completed | All signers have signed. Agreement is complete. |
// Verify the webhook signature
const signature = request.headers['x-pactra-signature'];
const expected = 'sha256=' + hmacSha256(body, webhookSecret);
if (signature !== expected) throw new Error('Invalid signature');Failed deliveries are retried up to 5 times with exponential backoff: 1m, 5m, 30m, 2h, 12h. After max retries, the delivery is marked as dead-lettered.
Connect AI agents to Pactra using the Model Context Protocol (MCP). Any MCP-compatible client (Claude Code, ChatGPT, Cursor, etc.) can create and manage agreements.
// Add to your MCP client configuration
{
"mcpServers": {
"pactra": {
"command": "npx",
"args": ["pactra-mcp"],
"env": {
"PACTRA_API_KEY": "pk_live_YOUR_KEY"
}
}
}
}| Tool | Description |
|---|---|
| list_agreements | List agreements in the workspace |
| create_agreement | Create a new draft agreement |
| get_agreement | Get agreement details and status |
| add_signer | Add a signer to a draft agreement |
| get_receipt | Retrieve a signature receipt |
| verify_receipt | Verify receipt cryptographic integrity |
Use our TypeScript SDK for type-safe API access, or the React component for embedded signing.
import { PactraClient } from '@pactra/sdk';
const pactra = new PactraClient({
apiKey: 'pk_live_...'
});
const agreement = await pactra
.createAgreement({
title: 'Service Agreement'
});import { PactraSigning } from '@pactra/react';
<PactraSigning
token={signingToken}
onSigned={(e) => {
console.log('Signed!', e);
}}
onError={(e) => {
console.error('Error', e);
}}
/>Need help? Contact us at hello@pactra.dev