All docs
Start here
API basics
Agent setups
Resources
- Contacts
- Companies
- Lists
- Deals
- Tasks
- Notes
- Fields
- Quotes
- Stage Checklist Pipelines
- Sequences
- Sequence Lifecycle
- Inbox
- Meetings
- Appointments Management
- Voice & Dialer
- Skills (LLM + API)
- Workflows
- GTM Campaigns
- GTM Context
- GTM Knowledge Base
- Launch Helpers
- Landing Pages
- Intent & Signals
- Search
- Enrichment
- Assert / Upsert
- Agency Keys & Cross-Org Targeting
- CRM Syncs
- Audience Syncs
- Destinations
- Snippet
- Functions
Data pipeline
Webhooks
What's new
Notes
Create, update, and manage notes on contacts
Notes let you attach free-text annotations to contacts for context, follow-ups, and team collaboration.
List Notes
GET /contacts/{contact_id}/notes
Returns all notes on a contact, sorted by most recent first.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
contact_id | string | Contact ID |
Example
cURL
curl "https://be.graph8.com/api/v1/contacts/12345/notes" \
-H "Authorization: Bearer $API_KEY" Python
response = requests.get(
f"{BASE_URL}/contacts/12345/notes",
headers=HEADERS
)
notes = response.json() TypeScript
const response = await fetch(`${BASE_URL}/contacts/12345/notes`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
const notes = await response.json(); Response
{
"data": [
{
"id": "note_uuid",
"content": "Spoke with Jane about the Q2 renewal.",
"entity_type": "contact",
"entity_id": "12345",
"created_by": "user_x",
"created_by_name": "John",
"created_at": "2026-02-25T14:30:00Z",
"updated_at": "2026-02-25T14:30:00Z"
}
]
}
Create Note
POST /contacts/{contact_id}/notes → 201 Created
Returns the full note object on success.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
contact_id | string | Contact ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Note text content |
Example
cURL
curl -X POST "https://be.graph8.com/api/v1/contacts/12345/notes" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Follow up next week about pricing."}' Python
response = requests.post(
f"{BASE_URL}/contacts/12345/notes",
headers=HEADERS,
json={"content": "Follow up next week about pricing."}
) Response 201 Created
{
"data": {
"id": "note_uuid",
"content": "Follow up next week about pricing.",
"entity_type": "contact",
"entity_id": "12345",
"created_by": "user_x",
"created_by_name": "John",
"created_at": "2026-02-25T14:30:00Z",
"updated_at": "2026-02-25T14:30:00Z"
}
}
Update Note
PATCH /notes/{note_id}
Path Parameters
| Parameter | Type | Description |
|---|---|---|
note_id | string | Note ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Updated note text |
Example
cURL
curl -X PATCH "https://be.graph8.com/api/v1/notes/note_uuid" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Updated text"}' Delete Note
DELETE /notes/{note_id}
Returns 204 No Content on success.