Page stored SMS messages for a workspace number
Read-only human inbox. Returns raw stored text and codes, never parsed OTPs or inferred sender identities. Requires an API key bound to this exact workspace. Unknown, foreign, or malformed workspace/number IDs return opaque 404s. No provider polling, writes, or outbound SMS occurs.
Ordered by received_at DESC, id DESC, including equal timestamps. Pass nextCursor back unchanged to load older retained history; null means no further rows were observed. This is not a snapshot: newly received messages require refreshing the first page and retention may remove older messages. Reset pagination when workspace, number, or sender changes. No total, unread count, or complete sender list is implied. Unknown/repeated query parameters and malformed values return 400. All responses use Cache-Control: no-store.
curl --request GET \
--url https://api.lusor.ai/v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages \
--header 'X-Api-Key: <api-key>'const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.lusor.ai/v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.lusor.ai/v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sender": "<string>",
"body": "<string>",
"receivedAt": "2023-11-07T05:31:56Z"
}
],
"nextCursor": "<string>"
}{
"error": "validation_error",
"details": {}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Workspace API key, created in the dashboard under Settings → API Keys.
Path Parameters
Workspace UUID. Caller must have access.
Phone-number inventory UUID. Foreign and missing ids return an opaque 404.
Query Parameters
Decimal integer without signs, whitespace, or leading zeroes.
1 <= x <= 100Opaque validated pagination cursor from the previous page.
1 - 512^[A-Za-z0-9_-]+$Exact case-sensitive stored sender string; no trimming or brand inference. Omit to include null senders.
1 - 4096Was this page helpful?
curl --request GET \
--url https://api.lusor.ai/v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages \
--header 'X-Api-Key: <api-key>'const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.lusor.ai/v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.lusor.ai/v1/workspaces/{workspaceId}/numbers/{phoneNumberId}/messages"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sender": "<string>",
"body": "<string>",
"receivedAt": "2023-11-07T05:31:56Z"
}
],
"nextCursor": "<string>"
}{
"error": "validation_error",
"details": {}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}
