Create and send a poll in a chat
client.chats.polls.create(stringchatID, PollCreateParams { poll } body, RequestOptionsoptions?): PollEnvelope { chat_id, created_at, message_id, 3 more }
POST/v3/chats/{chatId}/polls
Create an iMessage poll in an existing chat and send it. Polls are iMessage-only.
The chat must already exist — a poll cannot be the first message of a
new chat (use POST /v3/chats for that). Options are add-only and immutable: you
can add options later via POST /v3/messages/{messageId}/poll/options, but never edit
or remove them.
Create and send a poll in a chat
import LinqAPIV3 from '@linqapp/sdk';
const client = new LinqAPIV3({
apiKey: process.env['LINQ_API_V3_API_KEY'], // This is the default and can be omitted
});
const pollEnvelope = await client.chats.polls.create('550e8400-e29b-41d4-a716-446655440000', {
poll: { options: [{ text: 'Tacos' }, { text: 'Sushi' }], idempotency_key: 'poll-abc123' },
});
console.log(pollEnvelope.chat_id);{
"chat_id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2019-12-27T18:11:19.117Z",
"message_id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"poll": {
"options": [
{
"can_be_edited": true,
"creator_handle": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "iMessage",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"option_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"text": "Tacos",
"voters": [
{
"handle": "+14155559876",
"voted_at": "2019-12-27T18:11:19.117Z"
}
]
}
],
"total_voters": 0
},
"reactions": [
{
"handle": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "iMessage",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"is_me": false,
"type": "love",
"custom_emoji": null,
"sticker": {
"file_name": "sticker.png",
"height": 420,
"mime_type": "image/png",
"url": "https://cdn.linqapp.com/attachments/a1b2c3d4/sticker.png?signature=...",
"width": 420
}
}
],
"updated_at": "2019-12-27T18:11:19.117Z"
}{
"error": {
"status": 400,
"code": 1002,
"message": "Phone number must be in E.164 format",
"doc_url": "https://docs.linqapp.com/error/codes/1xxx/1002/"
},
"success": false
}{
"error": {
"status": 401,
"code": 2004,
"message": "Unauthorized - missing or invalid authentication token",
"doc_url": "https://docs.linqapp.com/error/codes/2xxx/2004/"
},
"success": false
}{
"error": {
"status": 404,
"code": 2001,
"message": "Resource not found",
"doc_url": "https://docs.linqapp.com/error/codes/2xxx/2001/"
},
"success": false
}{
"error": {
"status": 500,
"code": 3006,
"message": "Internal server error",
"doc_url": "https://docs.linqapp.com/error/codes/3xxx/3006/"
},
"success": false
}Returns Examples
{
"chat_id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2019-12-27T18:11:19.117Z",
"message_id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"poll": {
"options": [
{
"can_be_edited": true,
"creator_handle": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "iMessage",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"option_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"text": "Tacos",
"voters": [
{
"handle": "+14155559876",
"voted_at": "2019-12-27T18:11:19.117Z"
}
]
}
],
"total_voters": 0
},
"reactions": [
{
"handle": {
"id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a",
"handle": "+15551234567",
"joined_at": "2025-05-21T15:30:00.000-05:00",
"service": "iMessage",
"is_me": false,
"left_at": "2019-12-27T18:11:19.117Z",
"status": "active"
},
"is_me": false,
"type": "love",
"custom_emoji": null,
"sticker": {
"file_name": "sticker.png",
"height": 420,
"mime_type": "image/png",
"url": "https://cdn.linqapp.com/attachments/a1b2c3d4/sticker.png?signature=...",
"width": 420
}
}
],
"updated_at": "2019-12-27T18:11:19.117Z"
}{
"error": {
"status": 400,
"code": 1002,
"message": "Phone number must be in E.164 format",
"doc_url": "https://docs.linqapp.com/error/codes/1xxx/1002/"
},
"success": false
}{
"error": {
"status": 401,
"code": 2004,
"message": "Unauthorized - missing or invalid authentication token",
"doc_url": "https://docs.linqapp.com/error/codes/2xxx/2004/"
},
"success": false
}{
"error": {
"status": 404,
"code": 2001,
"message": "Resource not found",
"doc_url": "https://docs.linqapp.com/error/codes/2xxx/2001/"
},
"success": false
}{
"error": {
"status": 500,
"code": 3006,
"message": "Internal server error",
"doc_url": "https://docs.linqapp.com/error/codes/3xxx/3006/"
},
"success": false
}