Add options to a poll
client.Messages.Poll.AddOptions(ctx, messageID, body) (*PollEnvelope, error)
POST/v3/messages/{messageId}/poll/options
Add one or more options to an existing poll. Options are add-only and immutable — you can append options but never edit or remove them (Apple constraint). Returns the full poll.
Add options to a poll
package main
import (
"context"
"fmt"
"github.com/linq-team/linq-go"
"github.com/linq-team/linq-go/option"
)
func main() {
client := linqgo.NewClient(
option.WithAPIKey("My API Key"),
)
pollEnvelope, err := client.Messages.Poll.AddOptions(
context.TODO(),
"69a37c7d-af4f-4b5e-af42-e28e98ce873a",
linqgo.MessagePollAddOptionsParams{
Options: []linqgo.MessagePollAddOptionsParamsOption{linqgo.MessagePollAddOptionsParamsOption{
Text: "Pizza",
}},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", pollEnvelope.ChatID)
}
{
"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": 403,
"code": 2005,
"message": "Access denied - insufficient permissions for this resource",
"doc_url": "https://docs.linqapp.com/error/codes/2xxx/2005/"
},
"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": 403,
"code": 2005,
"message": "Access denied - insufficient permissions for this resource",
"doc_url": "https://docs.linqapp.com/error/codes/2xxx/2005/"
},
"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
}