user and sends each key press to a destination.user does not exist, it is created as an attendant user with its own dial plan. When it exists, the menu is added to its dial plan, and its answering rule for time-frame is changed to send calls to the menu. The menu always starts at tier Prompt_100, and submenus and greetings take the next free numbers. A tier's audio is read aloud by text to speech and saved as its greeting. It can be sent inside the tier or beside it, the way Read auto attendant returns it.202: the attendant is accepted and applied shortly after. Send synchronous=yes to wait for it: the response is 200 with the new attendant, or 202 if it is not applied within about five seconds.409. To change the menu, use Update auto attendant.Authorization: Bearer ********************synchronous=yes: the new auto attendant.curl --location 'https://awqacore01.crexendocloud.com/ns-api/v2/domains//autoattendants' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"attendant-name": "Main Menu",
"user": "8000",
"time-frame": "Default",
"auto-attendant": {
"audio": {
"file-script-text": "Thank you for calling. For sales, press 1. For support, press 2. For the operator, press 0."
},
"4-digit-dial-by-extension": "yes",
"no-key-press": "option-0",
"unassigned-key-press": "repeat",
"option-1": {
"description": "Sales",
"destination-application": "to-callqueue",
"destination-user": "2000"
},
"option-2": {
"description": "Support",
"auto-attendant": {
"audio": {
"file-script-text": "For billing, press 1. To hear these options again, press 9."
},
"no-key-press": "repeat",
"unassigned-key-press": "repeat",
"option-1": {
"description": "Billing",
"destination-application": "to-user",
"destination-user": "1002"
},
"option-9": {
"description": "Repeat",
"destination-application": "repeat-tier"
}
}
},
"option-0": {
"description": "Operator",
"destination-application": "to-user",
"destination-user": "1001"
}
}
}'{
"attendant-name": "Main Menu",
"user": "8000",
"starting-prompt": "Prompt_100",
"time-frame": "*",
"audio": {
"filename": "greeting-100.wav",
"ordinal-order": 100,
"file-duration-seconds": 6,
"file-size-kilobytes": "46.88 KB",
"created-datetime": "2026-09-01T14:30:00+00:00",
"file-access-url": "https://core1.example.com/ns-api/v2/domains/example.com/users/8000/greetings/100/play?expires=1790000000&signature=Qm9y3Yp0n1kT8w0xR2c4ZbV6fLh5sJd7gA9eN3uWq1M",
"file-script-text": "Thank you for calling. For sales, press 1. For support, press 2. For the operator, press 0.",
"file-source": "",
"text-to-speech-voice-id": "en-US-Wavenet-C",
"text-to-speech-language": "en-US"
},
"auto-attendant": {
"3-digit-dial-by-extension": "no",
"4-digit-dial-by-extension": "yes",
"5-digit-dial-by-extension": "no",
"no-key-press": "option-0",
"unassigned-key-press": "repeat",
"option-1": {
"description": "Sales",
"destination-application": "to-callqueue",
"destination-user": "2000"
},
"option-2": {
"description": "Support",
"auto-attendant": {
"3-digit-dial-by-extension": "no",
"4-digit-dial-by-extension": "no",
"5-digit-dial-by-extension": "no",
"no-key-press": "repeat",
"unassigned-key-press": "repeat",
"option-1": {
"description": "Billing",
"destination-application": "to-user",
"destination-user": "1002"
},
"option-9": {
"description": "Repeat",
"destination-application": "repeat-tier"
}
},
"audio": {
"filename": "greeting-102.wav",
"ordinal-order": 102,
"file-duration-seconds": 4,
"file-size-kilobytes": "31.25 KB",
"created-datetime": "2026-09-01T14:30:00+00:00",
"file-access-url": "https://core1.example.com/ns-api/v2/domains/example.com/users/8000/greetings/102/play?expires=1790000000&signature=Qm9y3Yp0n1kT8w0xR2c4ZbV6fLh5sJd7gA9eN3uWq1M",
"file-script-text": "For billing, press 1. To hear these options again, press 9.",
"file-source": "",
"text-to-speech-voice-id": "en-US-Wavenet-C",
"text-to-speech-language": "en-US"
}
},
"option-0": {
"description": "Operator",
"destination-application": "to-user",
"destination-user": "1001"
}
}
}