# POST /service-requests/:id/notes

**Resource:** [Service Requests](./service-requests.md)  
**Scopes:** `service-requests:write`  
**Write operation:** yes

Add a note to an existing service request. Notes are appended to a JSONB array on the record. Each note stores a UUID, the user_id of the API key owner, the content text, and a created_at timestamp. Does NOT change the request status. Max content length raised to 20000 chars.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `id` | path | string | yes | Service request UUID |
| `content` | body | string | yes | Text content of the note (max 20000 chars) |

## Request example

```bash
curl -X POST https://ucqwijexmjctglmrxlej.supabase.co/functions/v1/api/v1/service-requests/f112de7b-c7df-4193-bacd-2d43c31c1f11/notes \
  -H "Authorization: Bearer tp_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Investigated the issue -- confirmed the filter parameter is missing from the query builder. Scheduled for sprint 14."
  }'
```

## Response example

```json
{
  "data": {
    "id": "f112de7b-c7df-4193-bacd-2d43c31c1f11",
    "title": "Add status filter to list_opportunities",
    "notes": [
      {
        "id": "572f46fd-a78b-4115-8636-215cdd5c204a",
        "user_id": "771a4a38-3a5d-4a9b-98c3-e10879850c9d",
        "content": "Investigated the issue -- confirmed the filter parameter is missing from the query builder. Scheduled for sprint 14.",
        "created_at": "2026-04-19T20:47:11.328Z"
      }
    ],
    "status": "pending",
    "created_at": "2026-04-19T05:08:56.498025+00:00"
  },
  "meta": { "credits_remaining": 3454, "url": "https://app.trustpager.com/settings/service-requests" }
}
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`