E-signature API

---

title: E-signature API

description: Ship your first signed contract with Atlas REST API. Upload PDF or DOCX, review detected fields, send to signers, and get webhooks when everyone finishes.

date: 2026-06-25

updated: 2026-06-25

---

Your PM dropped a Slack message on Tuesday: "Can we get NDAs signed from the app by Friday?" You have a PDF, a list of signer emails,. And no patience for a two-week OAuth setup. You need one HTTP flow you can test tonight and wire into production next week.

Atlas gives you that flow. Create an envelope, open a review link to confirm fields, send, then listen for a webhook when the signed PDF is ready. PDF and DOCX both work on create.

Share: One POST to create, one review click, one webhook when signed.

What you will build

Picture a simple backend job:

  1. Your server uploads the contract (PDF or DOCX).
  2. Atlas detects signature fields and returns a review URL.
  3. Someone on your team opens review and clicks Send.
  4. Signers get email in order if there are multiple parties.
  5. Your webhook handler marks the deal closed and stores the signed file.

That is the whole product surface for most integrations. Everything below maps to those five steps.

Step 1: Authenticate and create

All routes live at https://atlaswork.ai/api/. Send your API key as a Bearer token. Copy the key from Dashboard → Settings.

POST /api/envelope accepts three transports:

TransportContent-TypeBody
File uploadmultipart/form-datafile, optional parties[]
Base64application/jsondocument, optional parties[]
Remote URLapplication/jsondocument_url, optional parties[]

Example create with a public PDF URL:

curl -X POST https://atlaswork.ai/api/envelope \
 -H "Authorization: Bearer $ATLAS_API_KEY" \
 -H "Content-Type: application/json" \
 -H "Idempotency-Key: nda-pilot-001" \
 -d '{
 "document_url": "https://cdn.example.com/nda.pdf",
 "webhook_url": "https://api.example.com/webhooks/atlas",
 "parties": [
 {"email": "founder@startup.com", "name": "Alex", "role": "Company"}
 ]
 }'

Response:

{
 "envelope_id": "uuid",
 "review_url": "https://atlaswork.ai/review/uuid?rt=..."
}

Save envelope_id in your database right away. Support will ask for it if anything stalls.

Pass Idempotency-Key on every create. Retries from Zapier, CI, or your job runner must not spawn duplicate envelopes. Keys dedupe within 24 hours.

Step 2: Wait for field detection

Field detection runs async after create. Poll GET /api/envelope/{id} until fields_status is one of:

StatusMeaning
pendingStill running. Do not send yet.
readyFields found. Safe to review and send.
failedError. Check review page banner.
recovered_emptyZero fields. Place them manually on review.

Sending while status is pending returns 409. Drafts and detection are free. You only pay when email goes out.

Step 3: Review before send

Open review_url in a browser. Confirm field placement, party binding, and any prefill values. This is the compliance gate for ad-hoc uploads: software prepares, a human authorizes outbound signature requests.

When the shape is trusted (repeat NDAs, order forms), save a template and skip manual review on later sends. See template signing API.

Step 4: Send and collect signatures

After review, dispatch signers:

curl -X POST "https://atlaswork.ai/api/envelope/$ENVELOPE_ID/send" \
 -H "Authorization: Bearer $ATLAS_API_KEY" \
 -H "Content-Type: application/json" \
 -H "Idempotency-Key: send-$ENVELOPE_ID-001" \
 -d '{
 "parties": [
 {"email": "founder@startup.com", "name": "Alex", "role": "Company"}
 ],
 "fields_version": 1
 }'

Send consumes one credit. You get five free sends on signup. Resends on an already-sent envelope do not charge again.

Multi-party envelopes sign in order. Each party gets a tokenized sign_url with ?t=<token>. Signers only see fields assigned to their party. See sequential signing.

Lightweight progress polling:

curl "https://atlaswork.ai/api/envelope/$ENVELOPE_ID/status" \
 -H "Authorization: Bearer $ATLAS_API_KEY"

Returns status, signed_count, total, and next_signer_email.

Step 5: Webhooks and signed PDF

Set webhook_url at create. Atlas POSTs JSON with X-Atlas-Signature: sha256=HMAC(raw_body, api_key). Verify HMAC before you update CRM or billing state.

Common events:

  • envelope.sent: first signer got email
  • envelope.signed: all parties finished
  • envelope.declined: a signer declined
  • envelope.voided: sender canceled
  • contract.extracted: structured post-sign data ready

When status is signed, GET /api/envelope/{id} includes signed download URLs if the artifact is archived.

Other routes you will touch

ActionRoute
Full stateGET /api/envelope/{id}
ListGET /api/envelopes
Update fieldsPATCH /api/envelope/{id}/fields (needs fields_version)
VoidPOST /api/envelope/{id}/void
RemindPOST /api/envelope/{id}/remind
Template repeat sendPOST /api/templates/{id}/send

Do not pass template_id to envelope create. That path returns 400. Templates use their own send route.

Platform and agents

Multi-tenant SaaS can provision connected accounts via POST /api/platform/connected-accounts and scope requests with Atlas-Account: ext_<id>. See /platforms.

Agents use ten MCP tools at /mcp. Machine-readable API spec: /openapi.json. Agent instructions: /llms.txt.

Error codes

CodeMeaning
402No credits remaining at send time
409Version mismatch, or send while fields pending
400Invalid body or unsupported param

Document formats

Upload PDF or DOCX. DOCX converts to PDF at create. Review and sign always render PDF. Signed output includes an audit certificate when complete.

FAQ

Does Atlas accept PDF and DOCX?

Yes. Upload either format when you create an envelope.

How do I authenticate?

Bearer API key from dashboard settings. MCP connectors in ChatGPT and Claude use OAuth instead.

When do credits get used?

One credit per send, not per upload.

Can I skip review?

Templates and auto_send: true on REST can skip review once legal trusts the shape. Ad-hoc uploads default to review-first.

Where should I compare vendors?

See /compare/docusign.

Pilot one NDA end to end before you wire production CRM webhooks. Full reference lives here; browse the developer guides index for every API topic, or sign up for five free sends and copy your API key tonight.