# 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"