# Messages

## List Messages

> Retrieve recent project outreach messages for reporting or auditing with optional calendar bounds on a chosen message datetime column.

```json
{"openapi":"3.0.3","info":{"title":"MGR Project API","version":"1.0.0"},"tags":[{"name":"Messages"}],"servers":[{"url":"https://api.moregoodreviews.com/project"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey"}}},"paths":{"/messages":{"get":{"tags":["Messages"],"summary":"List Messages","operationId":"listMessages","description":"Retrieve recent project outreach messages for reporting or auditing with optional calendar bounds on a chosen message datetime column.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"Object containing response data for this resource.","properties":{"success":{"type":"boolean","description":"Indicates whether the request completed successfully."},"code":{"type":"integer","description":"Short code or application-level status code for this resource."},"data":{"type":"array","description":"Response payload for the request.","items":{"type":"object","description":"Response payload for the request.","properties":{"id":{"type":"integer","description":"Unique numeric identifier for this resource."},"uuid":{"type":"string","description":"Stable UUID for this resource."},"ask_id":{"type":"integer","description":"Ask id for this resource."},"channel":{"type":"string","description":"Channel for this resource."},"failed_reason":{"type":"string","description":"Failed reason for this resource.","nullable":true},"scheduled_at":{"type":"integer","description":"Scheduled at for this resource."},"processed_at":{"type":"integer","description":"Processed at for this resource."},"sent_at":{"type":"integer","description":"Unix timestamp when the message was sent."},"delivered_at":{"type":"integer","description":"Delivered at for this resource."},"opened_at":{"type":"integer","description":"Opened at for this resource."},"clicked_at":{"type":"string","description":"Clicked at for this resource.","nullable":true},"failed_at":{"type":"string","description":"Failed at for this resource.","nullable":true},"complained_at":{"type":"string","description":"Complained at for this resource.","nullable":true},"canceled_at":{"type":"string","description":"Canceled at for this resource.","nullable":true},"halted_at":{"type":"string","description":"Halted at for this resource.","nullable":true},"created_at":{"type":"integer","description":"Unix timestamp when this resource was created."},"updated_at":{"type":"integer","description":"Unix timestamp when this resource was last updated."},"customer":{"type":"object","description":"Customer for this resource.","properties":{"id":{"type":"integer","description":"Unique numeric identifier for this resource."},"uuid":{"type":"string","description":"Stable UUID for this resource."},"name":{"type":"string","description":"Display name for this resource."},"color":{"type":"string","description":"Hex color associated with the resource."},"gravatar":{"type":"string","description":"Gravatar image URL for the email address."},"platform_url":{"type":"string","description":"Absolute URL to this customer in the web console; uses the agency white-label host when configured."},"unsubscribed_at":{"type":"string","description":"Unix timestamp when the customer unsubscribed, if applicable.","nullable":true}}},"template":{"type":"object","description":"Template for this resource.","properties":{"id":{"type":"integer","description":"Unique numeric identifier for this resource."},"uuid":{"type":"string","description":"Stable UUID for this resource."},"name":{"type":"string","description":"Display name for this resource."},"slug":{"type":"string","description":"URL-friendly identifier for this resource."},"channel":{"type":"string","description":"Channel for this resource."}}}}}},"pagination":{"type":"object","description":"Pagination metadata for list responses.","properties":{"current_page":{"type":"integer","description":"Current page number in the paginated result set."},"from":{"type":"integer","description":"Index of the first item returned on the current page."},"last_page":{"type":"integer","description":"Last available page number in the paginated result set."},"path":{"type":"string","description":"Base API path used for the paginated result set."},"per_page":{"type":"integer","description":"Number of items returned per page."},"to":{"type":"integer","description":"Index of the last item returned on the current page."},"total":{"type":"integer","description":"Total number of matching items."}}}}}}}}},"parameters":[{"name":"channel","in":"query","required":false,"schema":{"type":"string","nullable":true,"description":"Filter messages by delivery channel.","enum":["email","sms"]},"description":"Filter messages by delivery channel."},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true,"description":"Inclusive lower calendar date (YYYY-MM-DD) for the column chosen by date_key, defaulting to created_at when date_key is omitted."},"description":"Inclusive lower calendar date (YYYY-MM-DD) for the column chosen by date_key, defaulting to created_at when date_key is omitted."},{"name":"date_key","in":"query","required":false,"schema":{"type":"string","nullable":true,"description":"Message datetime column paired with date_from and date_to (defaults to created_at when omitted).","enum":["canceled_at","clicked_at","complained_at","delivered_at","failed_at","opened_at","scheduled_at","sent_at"]},"description":"Message datetime column paired with date_from and date_to (defaults to created_at when omitted)."},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true,"description":"Inclusive upper calendar date (YYYY-MM-DD) for the column chosen by date_key; must be on or after date_from when both bounds are provided."},"description":"Inclusive upper calendar date (YYYY-MM-DD) for the column chosen by date_key; must be on or after date_from when both bounds are provided."},{"name":"template_slug","in":"query","required":false,"schema":{"type":"string","nullable":true,"description":"Filter messages by template slug prefix."},"description":"Filter messages by template slug prefix."},{"name":"status","in":"query","required":false,"schema":{"type":"string","nullable":true,"description":"Filter messages by delivery status.","enum":["sent","delivered","opened","clicked","failed","complained","scheduled"]},"description":"Filter messages by delivery status."},{"name":"sort_key","in":"query","required":false,"schema":{"type":"string","nullable":true,"description":"Message timestamp field to sort by.","enum":["scheduled_at","sent_at","opened_at","clicked_at"]},"description":"Message timestamp field to sort by."},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","nullable":true,"description":"Sort direction: asc or desc.","enum":["asc","desc"]},"description":"Sort direction: asc or desc."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","nullable":true,"description":"Maximum number of records to return."},"description":"Maximum number of records to return."}]}}}}
```

## Delete Message

> Delete a scheduled or sent outreach message for the authenticated project.

```json
{"openapi":"3.0.3","info":{"title":"MGR Project API","version":"1.0.0"},"tags":[{"name":"Messages"}],"servers":[{"url":"https://api.moregoodreviews.com/project"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey"}}},"paths":{"/messages/{id}":{"delete":{"tags":["Messages"],"summary":"Delete Message","operationId":"deleteMessage","description":"Delete a scheduled or sent outreach message for the authenticated project.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","nullable":false,"description":"Unique numeric identifier for this message."},"description":"Unique numeric identifier for this message."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"Confirms the message was deleted and related ask completion was refreshed when applicable.","properties":{"success":{"type":"boolean","description":"Indicates whether the request completed successfully."},"code":{"type":"integer","description":"Application-level status code returned by this API."}}}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.moregoodreviews.com/platform/api-reference/messages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
