Messages are project-level posts used to communicate within a project. A message can be internal (visible only to agency team members) or client-facing, and can carry its own thread of comments.
{
"id": 321,
"title": "Kickoff notes",
"content": "Welcome to the project! Here's what we'll cover this week...",
"is_internal": false,
"project": {
"id": 789,
"title": "Website Redesign"
},
"user": {
"id": 123,
"name": "John Doe"
},
"created_at": "2023-01-01T12:00:00.000000Z",
"updated_at": "2023-01-01T12:00:00.000000Z"
}
| Attribute | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the message |
| title | string|null | Optional message title |
| content | string | Message body, returned as Markdown |
| is_internal | boolean | Whether the message is internal (agency only) or client-facing |
| project | object | The project the message belongs to (id, title) |
| user | object | The author (id, name) |
| created_at | string | ISO 8601 timestamp |
| updated_at | string | ISO 8601 timestamp |
Retrieves messages for a project, most recent first. Only projects belonging to a company you are a member of are accessible.
/api/v1/projects/{project}/messages
| Parameter | Type | Description |
|---|---|---|
| per_page | integer | Number of results per page (max 1000) |
GET /api/v1/projects/789/messages
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
[
{
"id": 321,
"title": "Kickoff notes",
"content": "Welcome to the project!...",
"is_internal": false,
"project": { "id": 789, "title": "Website Redesign" },
"user": { "id": 123, "name": "John Doe" },
"created_at": "2023-01-01T12:00:00.000000Z",
"updated_at": "2023-01-01T12:00:00.000000Z"
}
]
Posts a new message to a project. The content may be supplied as plain text or Markdown and is automatically converted to Outlign's rich text format for storage.
/api/v1/projects/{project}/messages
| Parameter | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | Message body (plain text or Markdown, max 200,000 characters) |
| title | string | No | Optional title (max 255 characters) |
| is_internal | boolean | No | Mark the message as internal (agency only). Defaults to false |
POST /api/v1/projects/789/messages
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Accept: application/json
{
"title": "Kickoff notes",
"content": "Welcome to the project! Here's what we'll cover this week...",
"is_internal": false
}
201 Created
{
"id": 322,
"title": "Kickoff notes",
"content": "Welcome to the project!...",
"is_internal": false,
"project": { "id": 789, "title": "Website Redesign" },
"user": { "id": 123, "name": "John Doe" },
"created_at": "2023-01-15T10:00:00.000000Z",
"updated_at": "2023-01-15T10:00:00.000000Z"
}
Updates a message you authored. All fields are optional — only the fields you send are changed.
/api/v1/messages/{message}
| Parameter | Type | Description |
|---|---|---|
| title | string|null | Updated title (max 255 characters) |
| content | string | Updated body (plain text or Markdown, max 200,000 characters) |
Note: A message's is_internal visibility cannot be changed after it is
posted. Sending an is_internal value that differs from the stored one returns
403 Forbidden.
PATCH /api/v1/messages/322
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Accept: application/json
{
"content": "Updated kickoff notes with the revised schedule."
}
Deletes a message you authored.
/api/v1/messages/{message}
DELETE /api/v1/messages/322
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
204 No Content