Preview: SendMock has no stable release yet. These docs follow develop.

CLI reference

Numbers commands

sendmock numbers add

Add a number.

sendmock numbers add [flags]
FlagTypeDescription
--number <number>requiredstring
E.164, without a channel prefix; channels says whether WhatsApp works.Example: +15550001111
--label <label>requiredstring
A name for the number, e.g. the app or feature that uses it.Example: Support line
--channel <channel>requiredstring[] (repeat for more)
Where the number works: sms, whatsapp or both.One of: sms, whatsappExample: ["sms"]
--inbound-url <inbound-url>string
Reply webhook (Twilio "A message comes in"); null means rules only.Example: http://localhost:3000/sms/inbound
--inbound-method <inbound-method>requiredstring
The HTTP method of the reply webhook.One of: POST, GETExample: POST
--inbound-fallback-url <inbound-fallback-url>string
Called when the reply webhook fails, with ErrorCode and ErrorUrl added, as Twilio does.Example: http://localhost:3000/sms/inbound-fallback
--inbound-template-id <inbound-template-id>string
Payload template for the inbound webhook, e.g. twilio.inbound_sms.Example: twilio.inbound_sms
--status-callback-url <status-callback-url>string
Your app's URL for status changes of messages sent from this number.Example: http://localhost:3000/sms/status
--messaging-service-sid <messaging-service-sid>string
The Messaging Service this number belongs to, MG...; null for none.Example: MG00000000000000000000000000000001

Example

sendmock numbers add --number +15550001111 --label 'Support line' --channel sms --inbound-method POST --inbound-url http://localhost:3000/sms/inbound --inbound-fallback-url http://localhost:3000/sms/inbound-fallback

Output with --json: VirtualNumber. Exit codes: 0, 1, 2.

API
POST/api/v1/numbers
MCP tool
sendmock_number_upsert
In the app
Numbers > Add number

sendmock numbers list

Fake numbers your app sends from, with their webhooks.

sendmock numbers list

Example

sendmock numbers list

Output with --json: VirtualNumber[]. Exit codes: 0, 1, 2.

API
GET/api/v1/numbers
MCP tool
sendmock_number_list
In the app
Numbers

sendmock numbers remove

Delete a number.

sendmock numbers remove <numberId> [flags]
ArgumentTypeDescription
<numberId>requiredstring
The virtual number's ID, from GET /api/v1/numbers.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--yesboolean
Confirms a destructive command; without it the command stops.

Example

sendmock numbers remove 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --yes

Output with --json: nothing. Exit codes: 0, 1, 2.

API
DELETE/api/v1/numbers/{numberId}
MCP tool
sendmock_number_delete
In the app
Numbers > Delete

sendmock numbers update

Change a number.

sendmock numbers update <numberId> [flags]
ArgumentTypeDescription
<numberId>requiredstring
The virtual number's ID, from GET /api/v1/numbers.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--number <number>requiredstring
E.164, without a channel prefix; channels says whether WhatsApp works.Example: +15550001111
--label <label>requiredstring
A name for the number, e.g. the app or feature that uses it.Example: Support line
--channel <channel>requiredstring[] (repeat for more)
Where the number works: sms, whatsapp or both.One of: sms, whatsappExample: ["sms"]
--inbound-url <inbound-url>string
Reply webhook (Twilio "A message comes in"); null means rules only.Example: http://localhost:3000/sms/inbound
--inbound-method <inbound-method>requiredstring
The HTTP method of the reply webhook.One of: POST, GETExample: POST
--inbound-fallback-url <inbound-fallback-url>string
Called when the reply webhook fails, with ErrorCode and ErrorUrl added, as Twilio does.Example: http://localhost:3000/sms/inbound-fallback
--inbound-template-id <inbound-template-id>string
Payload template for the inbound webhook, e.g. twilio.inbound_sms.Example: twilio.inbound_sms
--status-callback-url <status-callback-url>string
Your app's URL for status changes of messages sent from this number.Example: http://localhost:3000/sms/status
--messaging-service-sid <messaging-service-sid>string
The Messaging Service this number belongs to, MG...; null for none.Example: MG00000000000000000000000000000001

Example

sendmock numbers update 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --number +15550001111 --label 'Support line' --channel sms --inbound-method POST --inbound-url http://localhost:3000/sms/inbound --inbound-fallback-url http://localhost:3000/sms/inbound-fallback

Output with --json: VirtualNumber. Exit codes: 0, 1, 2, 3.

API
PATCH/api/v1/numbers/{numberId}
MCP tool
sendmock_number_upsert
In the app
Numbers > Edit

sendmock sms services create

Add a Messaging Service.

sendmock sms services create [flags]
FlagTypeDescription
--friendly-name <friendly-name>requiredstring
A name for the service.Example: Notifications
--number-id <number-id>requiredstring[] (repeat for more)
The virtual numbers in the sender pool, by ID.Example: ["01JB7T9Q2R5W8X3Y6Z1A4B7C9D"]
--inbound-mode <inbound-mode>requiredstring
What happens to inbound messages: webhook (call inbound_url), defer_to_sender (each number's own webhook) or drop.One of: webhook, defer_to_sender, dropExample: webhook
--inbound-url <inbound-url>string
Used when inbound_mode is webhook.Example: http://localhost:3000/sms/inbound
--inbound-fallback-url <inbound-fallback-url>string
Called when inbound_url fails.Example: http://localhost:3000/sms/inbound-fallback

Example

sendmock sms services create --friendly-name Notifications --number-id 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --inbound-mode webhook --inbound-url http://localhost:3000/sms/inbound --inbound-fallback-url http://localhost:3000/sms/inbound-fallback

Output with --json: MessagingService. Exit codes: 0, 1, 2.

API
POST/api/v1/messaging-services
MCP tool
sendmock_messaging_service_create
In the app
Numbers > Messaging Services > New Messaging Service

sendmock sms services delete

Delete a Messaging Service.

sendmock sms services delete <serviceSid> [flags]
ArgumentTypeDescription
<serviceSid>requiredstring
The service SID: MG... for a Messaging Service, VA... for a Verify service.Example: MG00000000000000000000000000000001
FlagTypeDescription
--yesboolean
Confirms a destructive command; without it the command stops.

Example

sendmock sms services delete MG00000000000000000000000000000001 --yes

Output with --json: nothing. Exit codes: 0, 1, 2.

API
DELETE/api/v1/messaging-services/{serviceSid}
MCP tool
sendmock_messaging_service_delete
In the app
Numbers > Messaging Services > Delete

sendmock sms services update

Change a Messaging Service.

sendmock sms services update <serviceSid> [flags]
ArgumentTypeDescription
<serviceSid>requiredstring
The service SID: MG... for a Messaging Service, VA... for a Verify service.Example: MG00000000000000000000000000000001
FlagTypeDescription
--friendly-name <friendly-name>requiredstring
A name for the service.Example: Notifications
--number-id <number-id>requiredstring[] (repeat for more)
The virtual numbers in the sender pool, by ID.Example: ["01JB7T9Q2R5W8X3Y6Z1A4B7C9D"]
--inbound-mode <inbound-mode>requiredstring
What happens to inbound messages: webhook (call inbound_url), defer_to_sender (each number's own webhook) or drop.One of: webhook, defer_to_sender, dropExample: webhook
--inbound-url <inbound-url>string
Used when inbound_mode is webhook.Example: http://localhost:3000/sms/inbound
--inbound-fallback-url <inbound-fallback-url>string
Called when inbound_url fails.Example: http://localhost:3000/sms/inbound-fallback

Example

sendmock sms services update MG00000000000000000000000000000001 --friendly-name Notifications --number-id 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --inbound-mode webhook --inbound-url http://localhost:3000/sms/inbound --inbound-fallback-url http://localhost:3000/sms/inbound-fallback

Output with --json: MessagingService. Exit codes: 0, 1, 2, 3.

API
PATCH/api/v1/messaging-services/{serviceSid}
MCP tool
sendmock_messaging_service_update
In the app
Numbers > Messaging Services > Edit