curl --request GET \
--url https://api-v2.watchcollect.com/v2/messages \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-v2.watchcollect.com/v2/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"primary_occurrence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_timestamp_ms": 123,
"first_seen_at_ms": 123,
"last_seen_at_ms": 123,
"sender": {
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"phone_number": "<string>",
"lid": "<string>",
"display_name": "<string>",
"country_prefix": "<string>"
},
"group_names": [
"<string>"
],
"group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"group_count": 123,
"occurrence_count": 123,
"has_media": true,
"classification_status": "pending",
"message_intent": "selling",
"is_edited": true,
"is_revoked": true,
"message_text": "<string>",
"primary_media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"primary_media_url": "<string>"
}
],
"has_more": true,
"next_cursor": "<string>"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}List projected canonical messages
Cursor-paginated message feed backed only by read-model tables. Defaults to latest activity first using last_seen_at. Enrichment readiness never hides a canonical message; missing media or sender metadata is returned for client-side placeholder rendering.
curl --request GET \
--url https://api-v2.watchcollect.com/v2/messages \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-v2.watchcollect.com/v2/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/messages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"primary_occurrence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_timestamp_ms": 123,
"first_seen_at_ms": 123,
"last_seen_at_ms": 123,
"sender": {
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"phone_number": "<string>",
"lid": "<string>",
"display_name": "<string>",
"country_prefix": "<string>"
},
"group_names": [
"<string>"
],
"group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"group_count": 123,
"occurrence_count": 123,
"has_media": true,
"classification_status": "pending",
"message_intent": "selling",
"is_edited": true,
"is_revoked": true,
"message_text": "<string>",
"primary_media_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"primary_media_url": "<string>"
}
],
"has_more": true,
"next_cursor": "<string>"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Saved view filters are combined with request query params using AND semantics.
Indexed search over message text. Combined with saved-view text_search using AND.
3Search behavior for q. broad matches any normalized word; exact matches the normalized phrase; exact_light matches ordered words within a small positional gap.
broad, exact, exact_light Comma-separated classification statuses.
pending, completed, skipped, failed Comma-separated message intents.
selling, buying, personal, unknown Comma-separated group IDs.
Returns every canonical message whose projected watch listing has the exact same normalized listing fields and sender contact as this listing.
Comma-separated contact IDs.
Comma-separated E.164 country phone prefixes without a leading plus sign.
1 <= x <= 200