[ Docs ](https://sendnda.com/docs)     

 [ Agents and the API ](https://sendnda.com/docs/agents)     

The API
=======

The same NDAs over plain JSON at /api/v1: the routes, the envelope every answer comes in, and its errors.

 05

Agents and the API
------------------

Article 3 of 4

 The API reaches the same NDAs as [the tools](https://sendnda.com/docs/agents/the-tools), over plain JSON: the ones you sent and the ones sent to your verified email address. Each tool is one of its routes under another name, so a route and its tool answer the same thing.

Sign in
-------

Send an [API token](https://sendnda.com/docs/agents/api-tokens) from the **Agents** page, or the OAuth token of an app you connected, as a bearer token:

```
GET https://sendnda.com/api/v1/ndas
Authorization: Bearer YOUR_TOKEN
Accept: application/json
```

The token acts as you. The limit is the one the MCP server has: 120 requests per minute per account, and five new NDAs a minute.

The routes
----------

Each takes the fields its tool takes, as a query string on a `GET` and as a JSON body otherwise.

| Route | Tool | Does |
|---|---|---|
| `GET /api/v1/ndas` | [list-ndas](https://sendnda.com/docs/agents/the-tools#list-ndas) | Lists the NDAs you sent and received |
| `POST /api/v1/ndas` | [create-nda](https://sendnda.com/docs/agents/the-tools#create-nda) | Creates an NDA and emails both parties at once |
| `GET /api/v1/ndas/{uuid}` | [get-nda](https://sendnda.com/docs/agents/the-tools#get-nda) | Reads one NDA with its agreement text and `document_sha256` |
| `PATCH /api/v1/ndas/{uuid}` | [amend-nda](https://sendnda.com/docs/agents/the-tools#amend-nda) | Changes the terms of an NDA you sent |
| `POST /api/v1/ndas/{uuid}/recipient` | [set-recipient-details](https://sendnda.com/docs/agents/the-tools#set-recipient-details) | Fills in your details on an NDA you received |
| `POST /api/v1/ndas/{uuid}/sign` | [sign-nda](https://sendnda.com/docs/agents/the-tools#sign-nda) | Signs on your side, once you said so |
| `POST /api/v1/ndas/{uuid}/resend` | [resend-nda](https://sendnda.com/docs/agents/the-tools#resend-nda) | Emails the recipient their link again |
| `DELETE /api/v1/ndas/{uuid}` | [delete-nda](https://sendnda.com/docs/agents/the-tools#delete-nda) | Deletes an NDA you sent, until either of you signs |

Signing over the API is the same act as on the page: `consent` must be `true`, `document_sha256` must be the hash of the text the person read, and the signing record credits the token, as `api_token` or `oauth_token`.

The envelope
------------

Every answer is one JSON object. `sendnda` is the version of this contract, then `data` on success or `error` on a failure:

```
{
  "sendnda": 1,
  "data": { "uuid": "…", "role": "sender", "status": "completed", "next_action": "completed", … }
}
```

`data` holds the fields [the tools](https://sendnda.com/docs/agents/the-tools) describe: on `GET /api/v1/ndas` a list of summaries, on the others one NDA.

Errors
------

```
{
  "sendnda": 1,
  "error": { "kind": "not_found", "message": "No NDA with this uuid exists on this account. …" }
}
```

`kind` is what to branch on; `message` says what happened in words.

| Kind | Status | Means |
|---|---|---|
| `usage` | 400, 401, 403, 409, 422 | The request was wrong, the token can't do it, or the NDA is past the step it asks for. A 422 carries `detail`, the messages per field. |
| `not_found` | 404 | No such route, or no NDA under that `uuid` you're a party to. Someone else's NDA answers the same as one that doesn't exist. |
| `throttled` | 429 | A limit is spent. `retry_after` and the `Retry-After` header say how many seconds to wait. |
| `source` | 500 and up | Send NDA couldn't answer. Ask again later. |

 Checked against the code on 7 November 2026.

 [   The tools ](https://sendnda.com/docs/agents/the-tools) [ API tokens   ](https://sendnda.com/docs/agents/api-tokens)
