Developers · REST API
AllSign REST API Guide
Bearer-authenticated. JSON over HTTPS. UUID identifiers throughout. Manage agreements, participants, terms, signatures, decisions, and revisions programmatically.
// List your agreements — requires a bearer tokenconst res = await fetch("https://api.allsign.app/agreements", {headers: {Authorization: "Bearer pat_xxxxxxxxxxxxxxxxxxxxxxxx",},});const { data } = await res.json();for (const agreement of data.agreements) {console.log(agreement.ref, agreement.name, agreement.status);}// data.page, data.total_pages, data.total_records — standard pagination
An OAS compliant REST API.
Every resource is reachable at api.allsign.app. All identifiers are UUIDs.
Agreements
Create, list, retrieve, update, and delete. Each agreement carries sections, terms, status, intent (binding or nonbinding), and priority fields. `POST /agreements`
Templates
Reusable agreement structures. Create an agreement from a template in one call. `POST /templates/{ref}/agreements`
Participants
Invite by email with a role: commentor, editor, signer, or viewer. Agent participants include an `agent_ref`. `POST /agreements/{ref}/participants`
Terms
Clauses scoped to an agreement or section. Each term tracks negotiability, lock state, position, and priority. `POST /agreements/{ref}/terms`
Decisions
Per-term accept or reject decisions scoped to the current revision. A rejection can carry a counter-proposal. `POST /terms/{ref}/decisions`
Revisions
Each counter-proposal generates a revision. Retrieve the full revision history for any term. `POST /terms/{ref}/revisions`
Signatures
State-machine-driven. The protocol endpoint returns the current state and the single valid next action. `POST /agreements/{ref}/signatures`
Comments
Thread discussion scoped to agreements, sections, or individual terms. Optionally pinned to the current revision. `POST /agreements/{ref}/comments`
Integration reference
Authentication, endpoint conventions, and available integration options.
Authentication
Authentication
- Personal access tokens (PATs) issued from account settings
- Application tokens for server-side integrations
- Bearer token in the Authorization header: Authorization: Bearer <token>
- All endpoints require authentication — no public routes
Endpoints
Endpoints
- REST over HTTPS
- JSON request and response bodies
- UUID identifiers on all resources (format: uuid)
- Paginated list responses: page, page_size, total_pages, total_records
- Error envelope: error.code, error.message, error.status, error.request_id
SDKs & Agents
SDKs & Agents
- TypeScript SDK (in development)
- Agent email protocol for AI participant invitations
- MCP server for AI tool access
- Agent participants set agent_ref on ParticipantCreate
const BASE = "https://api.allsign.app";const headers = {Authorization: "Bearer pat_xxxxxxxxxxxxxxxxxxxxxxxx","Content-Type": "application/json",};// 1. Create an agreementconst { data: { agreement } } = await fetch(`${BASE}/agreements`, {method: "POST",headers,body: JSON.stringify({name: "Q3 Contractor Agreement",intent: "binding",priority: "high",}),}).then((r) => r.json());// 2. Add a termawait fetch(`${BASE}/agreements/${agreement.ref}/terms`, {method: "POST",headers,body: JSON.stringify({name: "Scope of Work",description: "Deliver the MVP no later than 2026-09-30.",negotiable: 1,priority: "high",}),});// 3. Invite a signerawait fetch(`${BASE}/agreements/${agreement.ref}/participants`, {method: "POST",headers,body: JSON.stringify({name: "Jordan Lee",email: "jordan@example.com",type: "signer",}),});