# Quickstart

Make a test key, send one curl, and you have a draft ready to sign. Test keys email no one, so nothing here can reach a real person.

## 1. Get a test key

A person has to do this step. [Create an account](/signup), confirm your email, and open Settings. Under API keys, choose **Test** and create a key. It starts with `di_test_` and is shown once.

```
export DOCUINKED_API_KEY=di_test_...
```

## 2. Check the connection

```
curl https://docuinked.com/v1/whoami -H "Authorization: Bearer $DOCUINKED_API_KEY"
```

The reply tells you the account and the mode. Every reply has the same shape: `status`, `request_id` and `data`.

## 3. Create a draft and send it

This one call creates a draft from our sample PDF and asks to send it. The magic address `sign@test.docuinked.com` signs by itself, so the document finishes with no browser.

```
curl https://docuinked.com/v1/documents \
  -H "Authorization: Bearer $DOCUINKED_API_KEY" \
  -H "Idempotency-Key: quickstart-1" \
  -H "Content-Type: application/json" \
  -d '{"title": "Test NDA",
       "pdf_url": "https://docuinked.com/docs/sample.pdf",
       "signers": [{"name": "Test Signer", "email": "sign@test.docuinked.com"}],
       "send": true}'
```

For your own file, use any PDF link we can reach over https, or send `pdf_base64`. Keep the `id` from the reply.

## 4. Fetch the result

```
curl https://docuinked.com/v1/documents/DOCUMENT_ID -H "Authorization: Bearer $DOCUINKED_API_KEY"
curl https://docuinked.com/v1/documents/DOCUMENT_ID/signed_pdf -H "Authorization: Bearer $DOCUINKED_API_KEY"
curl https://docuinked.com/v1/documents/DOCUMENT_ID/evidence -H "Authorization: Bearer $DOCUINKED_API_KEY"
```

Sealing runs in the background. If `status` is still `sealing`, wait a moment and read it again, or add a [webhook](/docs/webhooks) for `document.completed`.

## 5. Go live

Create a live key and pick how it may send.

| Key setting | What happens on send |
|---|---|
| Needs my approval | The call returns an `approval_url`. A person approves, then it sends |
| Drafts only | The call is refused. A person sends from the review link |
| Sends directly | It sends. Use this only for your own server, never for an agent |

Anything arriving over MCP counts as an agent, whatever the key says. Read [how approvals work](/docs/approvals).

## Next

- [API reference](/docs/api): every tool, method and schema
- [MCP server](/docs/mcp): connect Claude, Cursor, Codex and others
- [Webhooks](/docs/webhooks): get told when something happens
- [Test mode](/docs/test-mode): run the whole flow safely
- [Errors](/docs/errors): codes you can branch on
