# List all macros
You can fetch a list of all macros (saved replies) in your workspace for use in automating responses.
The macros are returned in descending order by updated_at.
This endpoint uses cursor-based pagination via the parameter. The cursor is a Base64-encoded JSON array containing of the last item from the previous page.
The API transforms Intercom placeholders to a more standard XML-like format:
- From:
- To: ``
Endpoint: GET /macros
Version: Unstable
Security: bearerAuth
## Header parameters:
- `Intercom-Version` (string)
Intercom API version.By default, it's equal to the version set in the app package.
Enum: "1.0", "1.1", "1.2", "1.3", "1.4", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "Unstable"
## Query parameters:
- `per_page` (integer)
The number of results per page
Example: 50
- `starting_after` (string)
Base64-encoded cursor containing [updated_at, id] for pagination
Example: "WzE3MTk0OTM3NTcuMCwgIjEyMyJd"
- `updated_since` (integer)
Unix timestamp to filter macros updated after this time
Example: 1719474966
## Response 200 fields (application/json):
- `type` (string)
Always list
Enum: "list"
- `data` (array)
The list of macro objects
- `data.type` (string)
String representing the object's type. Always has the value .
Enum: "macro"
- `data.id` (string)
The unique identifier for the macro.
Example: "123"
- `data.name` (string)
The name of the macro.
Example: "Order Status Update"
- `data.body` (string)
The body of the macro in HTML format with placeholders transformed to XML-like format.
Example: "
Hi , your order is ready!
"
- `data.body_text` (string)
The plain text version of the macro body with original Intercom placeholder format.
Example: "Hi {{user.name|fallback:\"there\"}}, your order is ready!"
- `data.created_at` (string)
The time the macro was created in ISO 8601 format.
Example: "2025-07-17T11:18:08.000Z"
- `data.updated_at` (string)
The time the macro was last updated in ISO 8601 format.
Example: "2025-07-17T15:30:24.000Z"
- `data.visible_to` (string)
Who can view this macro.
Enum: "everyone", "specific_teams"
- `data.visible_to_team_ids` (array)
The team IDs that can view this macro when visible_to is set to specific_teams.
Example: ["456","789"]
- `data.available_on` (array)
Where the macro is available for use.
Enum: "inbox", "messenger"
- `pages` (object)
Pagination information
- `pages.type` (string)
The type of pagination
Enum: "pages"
- `pages.per_page` (integer)
Number of results per page
Example: 50
- `pages.next` (object,null)
Cursor for the next page
- `pages.next.starting_after` (string)
Base64-encoded cursor containing [updated_at, id] for pagination
Example: "WzE3MTk0OTM3NTcuMCwgIjEyMyJd"
## Response 400 fields (application/json):
- `type` (string, required)
The type is error.list
Example: "error.list"
- `request_id` (string,null)
Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"
- `errors` (array, required)
An array of one or more error objects
- `errors.code` (string, required)
A string indicating the kind of error, used to further qualify the HTTP response code
Example: "unauthorized"
- `errors.message` (string,null)
Optional. Human readable description of the error.
Example: "Access Token Invalid"
- `errors.field` (string,null)
Optional. Used to identify a particular field or query parameter that was in error.
Example: "email"
## Response 401 fields (application/json):
- `type` (string, required)
The type is error.list
Example: "error.list"
- `request_id` (string,null)
Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"
- `errors` (array, required)
An array of one or more error objects
- `errors.code` (string, required)
A string indicating the kind of error, used to further qualify the HTTP response code
Example: "unauthorized"
- `errors.message` (string,null)
Optional. Human readable description of the error.
Example: "Access Token Invalid"
- `errors.field` (string,null)
Optional. Used to identify a particular field or query parameter that was in error.
Example: "email"
## Response 403 fields (application/json):
- `type` (string, required)
The type is error.list
Example: "error.list"
- `request_id` (string,null)
Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"
- `errors` (array, required)
An array of one or more error objects
- `errors.code` (string, required)
A string indicating the kind of error, used to further qualify the HTTP response code
Example: "unauthorized"
- `errors.message` (string,null)
Optional. Human readable description of the error.
Example: "Access Token Invalid"
- `errors.field` (string,null)
Optional. Used to identify a particular field or query parameter that was in error.
Example: "email"