Gupshup WhatsApp API Virtual Sandbox
Send and manage messages through Gupshup APIs.
Gupshup WhatsApp Business API for sending WhatsApp session messages, template messages, raw/template-based messages, managing business profile details, and retrieving app templates.
Use this hosted sandbox to simulate Gupshup WhatsApp API APIs without authentication, API keys, or extra dependencies. Point your code or SDK to the Beeceptor base URL, preferably through an environment variable or feature flag, and switch back to the production API when ready.
This keeps your integration code consistent across local development, QA, demos, and production.
Use cases:
Use this service to integrate WhatsApp messaging into an application: send text, media, location, list, CTA, quick reply, catalog, and template messages; manage WhatsApp business profile metadata; block users; and fetch approved message templates.
General(19 operations)
POST
| Header Name | Example |
|---|---|
apikey* | "xvnwxxggh9vxxxxymu5vxx5iepxqx2zt" |
{
"block_users": [
{
"user": "919876543214"
},
{
"user": "919876543213"
}
],
"messaging_product": "whatsapp"
}{
"block_users": {
"added_users": [
{
"input": "919163805873",
"wa_id": "919163400873"
},
{
"input": "919163805873",
"wa_id": "919263400873"
},
{
"input": "919263805873",
"wa_id": "919263400873"
}
]
},
"messaging_product": "whatsapp",
"status": "success"
}{
"block_users": {
"added_users": [
{
"input": "919163805873",
"wa_id": "919163400873"
},
{
"input": "919163805873",
"wa_id": "919163400873"
},
{
"input": "919163805873",
"wa_id": "919163400873"
},
{
"input": "919163805873",
"wa_id": "919163400873"
}
],
"failed_users": [
{
"errors": [
{
"code": "139100",
"error_data": {
"details": "User blocked"
},
"message": "Failed to block"
},
{
"code": "139100",
"error_data": {
"details": "User blocked"
},
"message": "Failed to block"
},
{
"code": "139100",
"error_data": {
"details": "User blocked"
},
"message": "Failed to block"
},
{
"code": "139100",
"error_data": {
"details": "User blocked"
},
"message": "Failed to block"
}
],
"input": "919163805873",
"wa_id": "919163400873"
},
{
"errors": [
{
"code": "139100",
"error_data": {
"details": "User blocked"
},
"message": "Failed to block"
}
],
"input": "919163805873",
"wa_id": "919163400873"
}
]
},
"error": {
"code": 139100,
"error_data": {
"details": "User blocked"
},
"fbtrace_id": "b925c4cc-9f63-4441-aeee-c1b515b7a353",
"message": "Failed to block",
"type": "OAuthException"
},
"messaging_product": "whatsapp"
}GET
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"business": {
"about": "Strues compello tot bonus aeneus tero comprehendo deleo tamquam calculus.",
"addressLine1": "72618 Haven Fords",
"addressLine2": "Apt. 659",
"altWebsite": "https://cruel-finer.org",
"city": "Dickenshaven",
"contactName": "Linda Farrell IV",
"contactNumber": "+17599516158",
"country": "Madagascar",
"createdOn": 1771107783,
"description": "Cupio timidus subseco aestus dens deputo quaerat clarus. Cupio cultellus tubineus solutio. Quaerat stips caput possimus desolo quidem cupiditate utrum cohaero.",
"displayAddress": "514 S 1st Avenue",
"email": "Ana55@hotmail.com",
"emailVerified": false,
"hqRegion": "Texas",
"id": "065f7e98-56d4-4b94-830c-fbccc59f7c15",
"modifiedOn": 1760633943,
"name": "Parker - Kuphal",
"pinCode": "64181-9780",
"preferredCountry": "Anguilla",
"profileEmail": "Maurine79@gmail.com",
"state": "Mississippi",
"tncAccepted": false,
"vertical": "Outdoors",
"website": "https://beneficial-parade.name"
},
"status": "error"
}GET
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"about": {
"message": "Aegrotatio bellicus cupressus undique."
},
"status": "error"
}PUT
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"about": "Truculenter arbor arbor argentum tam adhuc temporibus tredecim tricesimus ipsa."
}{
"about": {
"message": "Antepono urbanus deficio alius ad cervus sumo."
},
"status": "success"
}GET
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"profile": {
"addressLine1": "625 Cronin Harbors",
"addressLine2": "Suite 109",
"city": "Wisozkboro",
"country": "Samoa",
"desc": "Balbus verumtamen tricesimus taceo sol damno torrens avarus. Explicabo ascit labore aedificium decimus patria aestas ara auctus. Thesis temperantia spargo.",
"pinCode": "56072",
"profileEmail": "Lydia80@gmail.com",
"state": "Florida",
"vertical": "Electronics",
"website1": "https://voluminous-folklore.biz",
"website2": "https://general-breastplate.biz"
},
"status": "error"
}PUT
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"addLine1": "2486 Huel Shoals",
"addLine2": "Suite 671",
"city": "Sarasota",
"country": "Argentina",
"desc": "Colligo amita clamo adfectus pax coerceo amplexus usitas decretum vos. Convoco absens templum virga peior undique adsum. Velum vos canonicus cur somniculosus cena amoveo cubo auctor.",
"pinCode": "62468",
"profileEmail": "Dorcas_Ondricka40@yahoo.com",
"state": "Nevada",
"vertical": "Beauty",
"website1": "https://darling-swine.org/",
"website2": "https://carefree-thigh.info/"
}{
"profile": {
"addressLine1": "40755 Westgate",
"addressLine2": "Suite 194",
"city": "Florencioton",
"country": "Iraq",
"desc": "Tunc vulnero vergo patruus. Ter thalassinus vitiosus tenus. Sed consuasor delinquo acceptus coniecto cogo.",
"pinCode": "47644-8746",
"profileEmail": "Jamaal_Braun@hotmail.com",
"state": "Kansas",
"vertical": "Automotive",
"website1": "https://unwelcome-fit.name",
"website2": "https://violent-bracelet.name"
},
"status": "error"
}GET
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"message": "https://avatars.githubusercontent.com/u/63010356",
"status": "error"
}PUT
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSI4ODIiIGhlaWdodD0iODIxIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSIjZmVkY2NmIi8+PHRleHQgeD0iNDQxIiB5PSI0MTAuNSIgZm9udC1zaXplPSIyMCIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IndoaXRlIj44ODJ4ODIxPC90ZXh0Pjwvc3ZnPg=="
}{
"message": "profile picture updated successfully",
"status": "success"
}GET
| Header Name | Example |
|---|---|
x-api-key | "{{x-api-key}}" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.GET
| Header Name | Example |
|---|---|
x-api-key | "{{x-api-key}}" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.POST
| Header Name | Example |
|---|---|
x-api-key | "{{x-api-key}}" |
{
"agent_number": "+919039692669",
"caller_id": "",
"customer_number": "+919999098057",
"k_number": "+918929761721"
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.GET
| Header Name | Example |
|---|---|
x-api-key | "{{x-api-key}}" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.POST
| Header Name | Example |
|---|---|
x-api-key | "{{x-api-key}}" |
{
"country_code": "+91",
"email": "1agent2@gmail.com",
"first_name": "sakshi",
"last_name": "gupta",
"phone": "8982638105"
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.POST
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"channel": "email",
"destination": "1469486580",
"message": {
"type": "video",
"video": {
"id": "voco-crux-aggero",
"link": "http://link2.com"
}
},
"postbackTexts": [
{
"index": 1,
"text": "hi"
},
{
"index": 0,
"text": "hello"
}
],
"source": "9307759764",
"src.name": "Pfeffer LLC",
"template": {
"id": "tamquam-cruentus-angustus",
"params": {
"0": "hi",
"1": "hello"
}
}
}{
"messageId": "8efc3851-8943-4750-9438-9d4c240b9c04",
"status": "submitted"
}{
"message": "Invalid Destination",
"status": "error"
}{
"message": "Authentication Failed",
"status": "error"
}POST
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"channel": "sms",
"destination": "3688043263",
"source": "7590299509",
"src.name": "Crona - Crooks",
"template": {
"id": "temptatio-conturbo-minima",
"mpm": {
"sections": [
{
"products": [
"p2",
"p1"
],
"title": "Offers"
},
{
"products": [
"p1",
"p2"
],
"title": "Offers"
},
{
"products": [
"p2",
"p1"
],
"title": "Offers"
},
{
"products": [
"p2",
"p1"
],
"title": "Offers"
}
]
},
"params": {
"0": "hi",
"1": "di3i7rs6js"
}
}
}{
"messageId": "f4bc0a16-de31-4164-9199-cf0ab131ec78",
"status": "success"
}{
"message": "Invalid Destination",
"status": "error"
}{
"message": "Authentication Failed",
"status": "error"
}GET
| Query Parameter Name | Example |
|---|---|
pageNo | 0 |
pageSize | 100 |
templateStatus | APPROVED |
templateCategory | MARKETING |
templateType | TEXT |
quality | GREEN |
languageCode | en |
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"status": "success",
"templates": [
{
"appId": "cebxx8x1-xxf6-406c-901x-3f78xxxx5ea",
"buttonSupported": "URL",
"category": "MARKETING",
"containerMeta": "{\"data\":\"Hi\"}",
"createdOn": 1781754475,
"data": "Hi",
"elementName": "event_test",
"externalId": "123",
"id": "312371e9-2771-463b-8cfd-cd8994b810ccf",
"internalCategory": 1,
"internalType": 1,
"languageCode": "en",
"languagePolicy": "deterministic",
"meta": "{\"example\":\"Hi\"}",
"modifiedOn": 1781754475,
"namespace": "6a54628a_7f29_45a7_80b1_46549f39062d",
"priority": 1,
"quality": "UNKNOWN",
"retry": 0,
"stage": "NONE",
"status": "APPROVED",
"templateType": "TEXT",
"vertical": "otp",
"wabaId": 12345
}
]
}{
"message": "Invalid template category: xyz",
"status": "error"
}{
"message": "Authentication Failed",
"status": "error"
}GET
| Header Name | Example |
|---|---|
apikey* | "2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a" |
{
"status": "success",
"template": {
"appId": "0714fd9c-6b06-4912-a3a4-68031a2baa3e",
"buttonSupported": "URL",
"category": "MARKETING",
"containerMeta": "charisma",
"createdOn": 1733489071,
"data": "Cibo conatus tempus.",
"elementName": "order_update",
"externalId": "0",
"id": "dc65557e-c361-4f4b-9abc-ee554d11556c",
"internalCategory": 2,
"internalType": 4,
"languageCode": "ja",
"languagePolicy": "deterministic",
"meta": "{\"body\":\"Hello, how can we help?\"}",
"modifiedOn": 1767283776,
"namespace": "7ftfKl1mKEwqNmVTM8R-IluIb560hk",
"oldCategory": "NONE",
"priority": 10,
"quality": "RED",
"retry": -64339636,
"stage": "NONE",
"status": "PENDING",
"templateType": "TEXT",
"vertical": "transactional",
"wabaId": 66415305468607
}
}{
"message": "Bad request parameters.",
"status": "error"
}{
"message": "Invalid API key",
"status": "error"
}PUT
| Header Name | Example |
|---|---|
Authorization* | "y3qfwlcqhsnujsak4pm0yd3zbu" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.GET
| Header Name | Example |
|---|---|
Authorization* | "y3qfwlcqhsnujsak4pm0yd3zbu" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.Send Message API(2 operations)
GET
| Query Parameter Name | Example |
|---|---|
?userid* | 20000XXXXX |
password* | XXXXXX |
send_to* | 919XXXXXXXXX |
msg* | Dear Abc, This is testing |
method* | SendMessage |
msg_type* | text |
format* | text |
auth_scheme* | plain |
v* | 1.1 |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.POST
{
"auth_scheme": "plain",
"format": "json",
"method": "sendMessage",
"msg": "Alii complectus cribro thymbra perspiciatis trepide concido venustas casus.",
"msg_type": "text",
"password": "J3BTiPtBbDq5",
"send_to": "+18888042237",
"userid": "Ellie.Witting",
"v": 1.1
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.Proxy Channel(5 operations)
GET
| Header Name | Example |
|---|---|
apikey | "<gupshup apikey>" |
{
"id": 1,
"proxyId": "#proxyconvomateapp",
"proxyLabel": "Channel Proxy",
"callbackUrl": "https://proxy.channel.io/callback"
}PUT
| Header Name | Example |
|---|---|
apikey | "<gupshup_apikey>" |
{
"callbackUrl": "https://realistic-scale.org",
"id": "amplitudo-trepide-ullus",
"name": "Sporer and Sons"
}{
"id": 1,
"proxyId": "#proxyconvomateapp",
"proxyLabel": "Channel Proxy",
"callbackUrl": "https://proxy.channel.io/callback"
}POST
| Header Name | Example |
|---|---|
apikey | "<gupshup_apikey>" |
{
"callbackUrl": "https://indolent-stay.org/",
"id": "terminatio-uredo-deleo",
"name": "Raynor and Sons"
}{
"id": 1,
"proxyId": "#proxyconvomateapp",
"proxyLabel": "Channel Proxy",
"callbackUrl": "https://proxy.channel.io/callback"
}{
"status": "error",
"invalidConstraintInformation": [
{
"errorMessage": "{Value cannot be null or empty.}",
"fieldName": "proxyId",
"invalidValue": "null"
}
]
}DELETE
| Header Name | Example |
|---|---|
apikey* | "<gupshup apikey>" |
{
"id": 1,
"proxyId": "#proxyconvomateapp",
"proxyLabel": "Channel Proxy",
"callbackUrl": "https://proxy.channel.io/callback"
}{
"status": "error",
"message": "No proxy found for the given proxyId"
}POST
{
"type": "text",
"text": "<message to forward>",
"contextobj": {
"botname": "<demo bot id>",
"channeltype": "<channel>",
"contextid": "<user id on the channel>"
}
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.Instagram Send Message API
POST
| Header Name | Example |
|---|---|
apikey | "{{API_KEY}}" |
Content-Type | "application/x-www-form-urlencoded" |
{
"context": "q6tAVruUyBlSZ7AVDxZf",
"message": "Tabgo temptatio convoco."
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.Send message API
POST
| Header Name | Example |
|---|---|
Content-Type* | "laborum incididunt in Excepteur nulla" |
apikey* | "fugiat exercitation Ut labore quis" |
content-type* | "ullamco et exercitation minim do" |
{}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.{
"messageId": "65ecd0ed-ba13-471d-ac6e-ccfeed832c48",
"status": "submitted"
}CTA URL message
POST
| Header Name | Example |
|---|---|
apikey* | "61b3021c97214370b341f8baaae0xxxx" |
content-type* | "application/x-www-form-urlencoded" |
{
"destination": 7479114520,
"message": {
"body": "Undique dolore tot astrum trucido decimus. Temperantia quidem curso charisma thermae sto arto usus tenetur. Decet canto dolores ipsum vicinus.",
"display_text": "cohaero",
"footer": "Crur bellicus sui demens.",
"header": {
"type": "url",
"video": {
"link": "https://gummy-fencing.info"
}
},
"type": "url",
"url": "https://turbulent-draft.org"
},
"source": 1467778855
}{
"message": "Crepusculum capio aedificium cultellus trucido sustineo atque confido.",
"status": "submitted"
}{
"message": "Invalid Destination",
"status": "error"
}{
"message": "Authentication Failed",
"status": "error"
}{
"message": "Too Many Requests",
"status": "error"
}(5 operations)
POST
| Header Name | Example |
|---|---|
apikey* | "api_key" |
Content-Type* | "application/x-www-form-urlencoded" |
{
"doCheck": "true",
"modes": "DELIVERED",
"tag": "cursim",
"url": "https://same-fort.name/",
"version": 1
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.DELETE
| Header Name | Example |
|---|---|
apikey* | "api_key" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.GET
| Header Name | Example |
|---|---|
apikey* | "api_key" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.DELETE
| Header Name | Example |
|---|---|
apikey* | "api_key" |
Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.PUT
| Header Name | Example |
|---|---|
apikey* | "{{apikey}}" |
Content-Type* | "application/x-www-form-urlencoded" |
{
"active": true,
"modes": "DELETED",
"tag": "eveniet",
"url": "https://hoarse-heating.biz",
"version": 10
}Missing schema or example in the OpenAPI spec.
Update the definition and recreate the mock server.whatsappmessaginggupshupbusiness messagingtemplatessession messagesmedia messagesprofile managementchat api