---
title: notes.add | Doing Work API
description: Write a note on a job, or on one visit of it (give visit_id; job_id is then optional). Any shop member can. Notes are internal to the shop and never shown 
url: https://doingwork.work/docs/reference/notes-add/
---

# notes.add

Write a note on a job, or on one visit of it (give visit_id; job_id is then optional). Any shop member can. Notes are internal to the shop and never shown to the customer. Set audience office to keep it to owner and office (owner or office only), pinned to keep it at the top (owner or office only). Attach photos already on the job with media_ids.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `POST /v1/notes` |
| MCP tool | `notes_add` |
| Writes | yes, send an Idempotency-Key |
| Area | [Field work (checklists, forms, time, notes, change orders, subcontractors)](https://doingwork.work/docs/reference/#field-work-checklists-forms-time-notes-change-orders-subcontractors) |

## When to use it

Keep the shop's own notes on a job or one visit (notes.add). For a voice memo, transcribe it with your own speech-to-text and save the words with notes.addVoiceMemo (transcript, duration_seconds, and optionally recorded_at, transcribed_with and language); core runs no speech model and does not store the audio.

## What to tell the owner

Say what you did in plain words and what happens next.

## Input

| Field | Type | Required |
|---|---|---|
| `job_id` | string (uuid) | no |
| `visit_id` | string (uuid) | no |
| `body` | string | yes |
| `audience` | string (one of team, office) | no |
| `pinned` | boolean | no |
| `media_ids` | array | no |

## Example

```http
POST https://doingwork.work/v1/notes
content-type: application/json
Idempotency-Key: 3f1c...

{
  "body": "..."
}
```

## Output

JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are `{code, message, status}`.

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
