For Developers

API-first by design

Everything in Documio is accessible via API. Create forms, submit data, verify documents, and export records programmatically.

Join the newsletter

Developer principles

The technical philosophy behind Documio's architecture.

RESTful API

Predictable endpoints, standard HTTP methods, JSON everywhere. If you've used Stripe or Twilio, you'll feel at home.

Immutability model

Once a submission is verified, it cannot be modified. New versions create new records. This is a feature, not a limitation.

Structured data

Every document is backed by clean JSON. Query, filter, and aggregate your submission data like any database.

Event-driven

Webhooks for all lifecycle events. Build reactive integrations that respond to submissions, verifications, and exports.

The integrity model

How Documio creates verifiable, tamper-evident documents.

Document lifecycle

1

Submission received

Form data + metadata captured (IP, user agent, auth context)

2

Hash computed

SHA-256 hash generated from canonicalized JSON representation

3

Timestamp bound

RFC 3161 timestamp from trusted TSA anchors the hash in time

4

Document sealed

PDF generated with embedded hash and timestamp for independent verification

Verification: Any party can recalculate the hash from the original JSON and verify it matches the timestamp signature. This proves the document existed at the claimed time and hasn't been modified.

Quick start

Create a form and submit data in minutes.

Create a form
curl -X POST https://api.documio.com/v1/forms \
  -H "Authorization: Bearer dk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Customer Feedback",
    "fields": [
      {"key": "rating", "type": "number", "required": true},
      {"key": "feedback", "type": "text"},
      {"key": "email", "type": "email"}
    ]
  }'
Submit data
curl -X POST https://api.documio.com/v1/forms/frm_xxx/submit \
  -H "Content-Type: application/json" \
  -d '{
    "rating": 5,
    "feedback": "Great product!",
    "email": "customer@example.com"
  }'
Response
{
  "id": "sub_7kH9xL2mN",
  "status": "verified",
  "integrity": {
    "hash": "sha256:a7f3b2c1e8d9...",
    "timestamp": "2024-01-15T09:23:42Z",
    "tsa": "timestamp.documio.com"
  },
  "document_url": "https://docs.documio.com/v/..."
}