> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://support.atomicwork.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://support.atomicwork.com/_mcp/server.

# Create request notes

POST https://{tenant}.atomicwork.com/api/v1/requests/{requestId}/notes
Content-Type: application/json

Creates a note on the request. The note body may mention individual users
(`mentions`) and agent groups (`agent_group_mentions`). Public notes notify the
requester, assignee and all followers, where the follower set is the union of
direct user followers and members of any agent groups following the request,
de-duplicated. Agent groups listed in `agent_group_mentions` are added as
request followers. Private/internal notes are excluded from follower notifications.


Reference: https://support.atomicwork.com/api-reference/atomicwork-public-api/requests/postapi-v-1-requests-request-id-notes

## Authentication

- `X-Api-Key` header (required) — API Key authentication via header

## Request

### Path parameters

- `requestId` (string, required)

### Headers

- `X-Workspace-Id` (string, optional)

### Body (application/json)

This endpoint expects an object.

- `user_id` (long, optional)
- `conversation_id` (long, optional) — When set, the reply is mirrored into this conversation's thread (UAG).
- `description` (string, optional)
- `mentions` (list of long, optional) — User IDs mentioned in the note. Mentioned users are notified and added as direct followers.
- `agent_group_mentions` (list of long, optional) — Agent group IDs mentioned in the note. Members of these groups are notified and the groups are added as request followers.
- `is_private` (boolean, optional, default: false)
- `source` (enum, optional)
  - Allowed values: `EMAIL`, `SLACK`, `TEAMS`, `PORTAL`, `WORKFLOW`, `JOURNEY`, `API`, `UNIVERSAL_AGENT`
- `type` (enum, optional)
  - Allowed values: `ESD_NOTE`, `SLACK_NOTE`, `EMAIL_NOTE`, `RATING`, `TEMPLATE`, `WORKFLOW_NOTE`
- `attachments` (list of long, optional)
- `cc_emails` (list of string, optional)
- `bcc_emails` (list of string, optional)
- `is_broadcast` (boolean, optional, default: false)
- `external_id` (string, optional)
- `external_source_type` (enum, optional)
  - Allowed values: `SAAS_GENIE`, `SNOW`, `JSM_BRIDGE`
- `email_content` (string, optional)
- `event_created_at` (datetime, optional) — Event creation timestamp. When provided via public API, also backdates the note's created time, SLA metrics, and activity timestamps. Must not be in the future or before the request's creation time.
- `transition` (ApiV1RequestsRequestIdNotesPostRequestBodyContentApplicationJsonSchemaTransition, optional) — Applied in the same transaction as the note: both commit, or neither does. Takes the same body PATCH /requests/\{requestId} accepts

## Response

### 200

Successful response

## Types

### ApiV1RequestsRequestIdNotesPostRequestBodyContentApplicationJsonSchemaTransition

Applied in the same transaction as the note: both commit, or neither does. Takes the same body PATCH /requests/\{requestId} accepts

## Examples

**Request**

```json
{
  "user_id": 0,
  "conversation_id": 0,
  "description": "",
  "mentions": [
    0
  ],
  "agent_group_mentions": [
    0
  ],
  "is_private": false,
  "source": "EMAIL",
  "type": "ESD_NOTE",
  "attachments": [
    0
  ],
  "cc_emails": [
    ""
  ],
  "bcc_emails": [
    ""
  ],
  "is_broadcast": false,
  "external_id": "",
  "external_source_type": "SAAS_GENIE",
  "email_content": ""
}
```

**Response**

```json
{}
```

**SDK Code**

```python Requests_postapi_v1_requests__requestId__notes_example
import requests

url = "https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes"

payload = {
    "user_id": 0,
    "conversation_id": 0,
    "description": "",
    "mentions": [0],
    "agent_group_mentions": [0],
    "is_private": False,
    "source": "EMAIL",
    "type": "ESD_NOTE",
    "attachments": [0],
    "cc_emails": [""],
    "bcc_emails": [""],
    "is_broadcast": False,
    "external_id": "",
    "external_source_type": "SAAS_GENIE",
    "email_content": ""
}
headers = {
    "X-Workspace-Id": "{{workspace_id}}",
    "X-Api-Key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Requests_postapi_v1_requests__requestId__notes_example
const url = 'https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes';
const options = {
  method: 'POST',
  headers: {
    'X-Workspace-Id': '{{workspace_id}}',
    'X-Api-Key': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"user_id":0,"conversation_id":0,"description":"","mentions":[0],"agent_group_mentions":[0],"is_private":false,"source":"EMAIL","type":"ESD_NOTE","attachments":[0],"cc_emails":[""],"bcc_emails":[""],"is_broadcast":false,"external_id":"","external_source_type":"SAAS_GENIE","email_content":""}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Requests_postapi_v1_requests__requestId__notes_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes"

	payload := strings.NewReader("{\n  \"user_id\": 0,\n  \"conversation_id\": 0,\n  \"description\": \"\",\n  \"mentions\": [\n    0\n  ],\n  \"agent_group_mentions\": [\n    0\n  ],\n  \"is_private\": false,\n  \"source\": \"EMAIL\",\n  \"type\": \"ESD_NOTE\",\n  \"attachments\": [\n    0\n  ],\n  \"cc_emails\": [\n    \"\"\n  ],\n  \"bcc_emails\": [\n    \"\"\n  ],\n  \"is_broadcast\": false,\n  \"external_id\": \"\",\n  \"external_source_type\": \"SAAS_GENIE\",\n  \"email_content\": \"\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-Workspace-Id", "{{workspace_id}}")
	req.Header.Add("X-Api-Key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Requests_postapi_v1_requests__requestId__notes_example
require 'uri'
require 'net/http'

url = URI("https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-Workspace-Id"] = '{{workspace_id}}'
request["X-Api-Key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"user_id\": 0,\n  \"conversation_id\": 0,\n  \"description\": \"\",\n  \"mentions\": [\n    0\n  ],\n  \"agent_group_mentions\": [\n    0\n  ],\n  \"is_private\": false,\n  \"source\": \"EMAIL\",\n  \"type\": \"ESD_NOTE\",\n  \"attachments\": [\n    0\n  ],\n  \"cc_emails\": [\n    \"\"\n  ],\n  \"bcc_emails\": [\n    \"\"\n  ],\n  \"is_broadcast\": false,\n  \"external_id\": \"\",\n  \"external_source_type\": \"SAAS_GENIE\",\n  \"email_content\": \"\"\n}"

response = http.request(request)
puts response.read_body
```

```java Requests_postapi_v1_requests__requestId__notes_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes")
  .header("X-Workspace-Id", "{{workspace_id}}")
  .header("X-Api-Key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"user_id\": 0,\n  \"conversation_id\": 0,\n  \"description\": \"\",\n  \"mentions\": [\n    0\n  ],\n  \"agent_group_mentions\": [\n    0\n  ],\n  \"is_private\": false,\n  \"source\": \"EMAIL\",\n  \"type\": \"ESD_NOTE\",\n  \"attachments\": [\n    0\n  ],\n  \"cc_emails\": [\n    \"\"\n  ],\n  \"bcc_emails\": [\n    \"\"\n  ],\n  \"is_broadcast\": false,\n  \"external_id\": \"\",\n  \"external_source_type\": \"SAAS_GENIE\",\n  \"email_content\": \"\"\n}")
  .asString();
```

```php Requests_postapi_v1_requests__requestId__notes_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes', [
  'body' => '{
  "user_id": 0,
  "conversation_id": 0,
  "description": "",
  "mentions": [
    0
  ],
  "agent_group_mentions": [
    0
  ],
  "is_private": false,
  "source": "EMAIL",
  "type": "ESD_NOTE",
  "attachments": [
    0
  ],
  "cc_emails": [
    ""
  ],
  "bcc_emails": [
    ""
  ],
  "is_broadcast": false,
  "external_id": "",
  "external_source_type": "SAAS_GENIE",
  "email_content": ""
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-Api-Key' => '<apiKey>',
    'X-Workspace-Id' => '{{workspace_id}}',
  ],
]);

echo $response->getBody();
```

```csharp Requests_postapi_v1_requests__requestId__notes_example
using RestSharp;

var client = new RestClient("https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes");
var request = new RestRequest(Method.POST);
request.AddHeader("X-Workspace-Id", "{{workspace_id}}");
request.AddHeader("X-Api-Key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"user_id\": 0,\n  \"conversation_id\": 0,\n  \"description\": \"\",\n  \"mentions\": [\n    0\n  ],\n  \"agent_group_mentions\": [\n    0\n  ],\n  \"is_private\": false,\n  \"source\": \"EMAIL\",\n  \"type\": \"ESD_NOTE\",\n  \"attachments\": [\n    0\n  ],\n  \"cc_emails\": [\n    \"\"\n  ],\n  \"bcc_emails\": [\n    \"\"\n  ],\n  \"is_broadcast\": false,\n  \"external_id\": \"\",\n  \"external_source_type\": \"SAAS_GENIE\",\n  \"email_content\": \"\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Requests_postapi_v1_requests__requestId__notes_example
import Foundation

let headers = [
  "X-Workspace-Id": "{{workspace_id}}",
  "X-Api-Key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "user_id": 0,
  "conversation_id": 0,
  "description": "",
  "mentions": [0],
  "agent_group_mentions": [0],
  "is_private": false,
  "source": "EMAIL",
  "type": "ESD_NOTE",
  "attachments": [0],
  "cc_emails": [""],
  "bcc_emails": [""],
  "is_broadcast": false,
  "external_id": "",
  "external_source_type": "SAAS_GENIE",
  "email_content": ""
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{tenant}.atomicwork.com/api/v1/requests/requestId/notes")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```