List messages
Returns messages across your workspace, oldest first, filtered by conversation, channel or direction. Use it to backfill history or to poll for new messages with after; for real-time delivery, prefer webhooks or the event stream.
Requires an API key with the messages:read scope.
apiKeyAuthorizationBearer <token>A secret API key from the dashboard (Developers → API keys): vl_live_…, or vl_test_… for test mode. Each operation says which scope the key needs.
conversationId?stringOnly messages in this conversation.
uuidchannel?stringOnly messages on this channel.
1 <= length <= 64direction?stringinbound (people writing to you) or outbound (what you sent).
"inbound""outbound"after?stringA page's nextCursor: return what came after it. Use it to poll for new messages.
1 <= length <= 256before?stringA page's prevCursor: return what came before it. Pass end for the newest page.
1 <= length <= 256limit?integerHow many items to return, 1–100. Default 50.
1 <= value <= 100A page of messages, oldest first
application/json- response
messages*array<>nextCursor*string|nullhasMore*booleanprevCursor*string|nullcurl "https://api.vlayers.ai/v1/messages?direction=inbound&limit=20" \ -H "Authorization: Bearer $VOICELAYER_API_KEY"{ "messages": [ { "id": "0192f5b0-8d1f-7b62-8c3e-5f9a2b7d4e32", "conversationId": "0192f5b0-7c3e-7a51-9b2d-4e8f1a6c3d21", "channel": "sms", "direction": "inbound", "status": "received", "text": "Do you have a table for two tonight?", "media": [], "from": "+15550123", "to": "+14155550100", "bindingId": null, "metadata": {}, "error": null, "createdAt": "2026-10-20T15:04:05.000Z" } ], "nextCursor": "eyJjIjoiMjAyNi0xMC0yMFQxNTowNDowNVoifQ", "hasMore": false, "prevCursor": null}