{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":522,"path":"api-reference/rest-apis/omichannel-callback-api.md","title":"Omichannel Callback API","bundle":null,"doc_type":null,"release":"australia","body":"\n# Omichannel Callback API\n\nThe Omnichannel Callback API provides methods for creating, updating, and initiating a callback request for live agent conversations.\n\nThe Omnichannel Callback API allows agents to programmatically call users back rather than waiting in the queue for an available agent. For example, agents can use the callback functionality to call users back when the agent wait time is long or when there are no agents available. You can do the following actions with this API:\n\n-   Create a new, immediate callback request or schedule a new request.\n-   Create an initial interaction and subsequent retry interactions.\n-   Update an existing callback.\n\nThis API belongs to the sn\\_omni\\_callback namespace and requires the Administrator with callback API \\[sn\\_omni\\_callback.callback\\_api\\] role.\n\nFor more information about the Omnichannel Callback application as an ServiceNow AI Platform capability, see [Omnichannel Callback](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/conversational-interfaces/omnichannel-callback.md).\n\n**Parent Topic:**[REST API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/api-rest.md)\n\n## Omnichannel Callback - POST api/sn\\_omni\\_callback/actions\n\nProvides actions for integrating third-party Contact Center as a Service \\(CCaaS\\) platforms with ServiceNow®'s Omnichannel Callback system. This API acts as a bridge, routing callback operations \\(create, update, cancel, close\\) to external CCaaS providers via configurable Workflow Studio subflows.\n\n**Note:** This endpoint works similarly to [Omnichannel Callback - POST /api/sn\\_omni\\_callback/callback/create](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/omichannel-callback-api.md) and [Omnichannel Callback - PATCH /api/sn\\_omni\\_callback/callback/update](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/omichannel-callback-api.md), but is used to update or create callbacks in a third-party integration with routing context.\n\n### Intelligent routing\n\nThe /actions endpoint intelligently routes callback requests based on the **routingContext** parameter. When a routing rule is configured, the API uses a single, unified payload structure for all actions and routes the request to a CCaaS subflow using `routingContext`. When routing is configured, the content of the request never changes. Only the top‑level **action** value differs.\n\n**Note:** The API checks for routing rules in the Callback Routing Configuration \\[sys\\_cs\\_callback\\_routing\\_config\\] table based on the **routingContext** parameter. If a matching rule is found, the request is forwarded to the configured custom subflow. The subflow can integrate with external CCaaS platforms or implement custom business logic. The subflow processes the request and returns the response.\n\nIf **routingContext** is omitted or no routing rule matches, the API falls back to default ServiceNow behavior and expects the standard payload format of the corresponding POST /create, PATCH /update, or PATCH /cancel endpoints.\n\n### URL format\n\nVersioned URL: `/api/sn_omni_callback/v1/actions`\n\nDefault URL: `/api/sn_omni_callback/actions`\n\n### Supported request parameters\n\n<table id=\"table_ixc_cvl_k3c\" class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table id=\"table_myd_yh1_zhc\" class=\"create_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nObject\n\n</td><td>\n\nObject containing the operation and details.Data type: Object\n\n```\n{\n    \"action\": \"String\",\n    \"payload\": {Object},\n    \"routingContext\": {Object}\n  }\n```\n\n</td></tr><tr><td>\n\naction\n\n</td><td>\n\nRequired. Defines the action to perform on the callback.Accepted values:\n\n-   `create`: Creates a new callback record.\n-   `update`: Updates an existing callback record based on the callback number.\n-   `close`: Closes a callback record because the callback request has been fulfilled. Doesn't initiate the callback. Updates the reason field in the Callback \\[sys\\_cs\\_callback\\] table.\n-   `cancel`: Cancels a callback record because the customer cancelled the request and doesn't need to connect with an agent. Updates the reason field in the Callback \\[sys\\_cs\\_callback\\] table.\n\nData type: String\n\n</td></tr><tr><td>\n\npayload\n\n</td><td>\n\nRequired. Object containing specific data required for the given action when **routingContext** object is passed. For close and cancel operations, only **callbackID** is needed in the payload.**Note:** For create and update actions, if **routingContext** isn't passed, use the **payload** object structure documented in the [Omnichannel Callback - POST /api/sn\\_omni\\_callback/callback/create](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/omichannel-callback-api.md) and [Omnichannel Callback - PATCH /api/sn\\_omni\\_callback/callback/update](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/omichannel-callback-api.md) operations, respectively. The 'Examples' section demonstrates both routing and non-routing scenarios.\n\nData type: Object\n\n**payload** structure for create and update actions.\n\n```\n{\n  \"callbackContext\": {Object},\n  \"callbackDetails\": {Object},\n  \"callbackId\": \"String\",\n  \"phoneNumber\": \"String\",\n  \"type\": \"String\"\n}\n```\n\n**payload** structure for close and cancel actions.\n\n```\n\"payload\": {\n  \"callbackId\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\npayload.callbackContext\n\n</td><td>\n\nOptional. Object containing the context details about the callback request.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\]\n\nData type: Object\n\n```\n\"callbackContext\": {\n  \"customer_timezone\": \"String\",\n  \"ivr_path\": \"String\",\n  \"queue\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\npayload.callbackContext.customer\\_timezone\n\n</td><td>\n\nTime zone of customer who requested the callback. Time zones can be provided in the following formats. -   `Country/City`: For example, `America/Los_Angeles`.\n-   `Country/Time zone`: For example, `US/Pacific`.\n-   `Time zone abbreviation`: For example, `PST`.\n\nFor a complete list of valid timezones, see the Time zone field in the User \\[sys\\_user\\] table. For more information about time zones, see [Time zones](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/r_TimeZones.md).\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackContext.ivr\\_path\n\n</td><td>\n\nThe IVR \\(Interactive Voice Response\\) path that a customer follows before being transferred to a human agent.Typically contains a list of queues or menu options the customer navigated through in the IVR system. This string is passed by Contact Center as a Service \\(CCaaS\\). For example, `\"ivr_path\": \"Technical Support > Account Management\"`\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackContext.queue\n\n</td><td>\n\nNumber assignments in the queue.Data type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails\n\n</td><td>\n\nOptional. Object containing the details about the callback request.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: Object\n\n```\n\"callbackDetails\": {\n  \"description\": \"String\",\n  \"end_time\": \"String\",\n  \"expire_time\": \"String\",\n  \"first_name\": \"String\",\n  \"last_name\": \"String\",\n  \"opened_by\": \"String\",\n  \"phone_number\": \"String\",\n  \"next_retry\": \"String\",\n  \"reason\": \"String\",\n  \"scheduled_start_time\": \"String\",\n  \"short_description\": \"String\",\n  \"state\": \"String\", \n  \"type\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\npayload.callbackDetails.description\n\n</td><td>\n\nDetailed explanation of the callback request. Can include specific customer concerns, context, or notes from the agent.Data type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.end\\_time\n\n</td><td>\n\nThe time window when the callback request is expected to be completed. After this timestamp, the callback is considered overdue or expired unless rescheduled. Only applicable to a `Scheduled` callback type.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.expire\\_time\n\n</td><td>\n\nThe final cutoff time after which the callback request should no longer be attempted. This is often used to automatically close or cancel stale requests.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.first\\_name\n\n</td><td>\n\nFirst name of the customer requesting the callback.Data type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.last\\_name\n\n</td><td>\n\nLast name of the customer requesting the callback.Data type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.opened\\_by\n\n</td><td>\n\nSys\\_id of the user or agent who created or initiated the callback request.Table: User \\[sys\\_user\\]\n\n</td></tr><tr><td>\n\npayload.callbackDetails.phone\\_number\n\n</td><td>\n\nPhone number of the customer to call back.Data type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.next\\_retry\n\n</td><td>\n\nThe next scheduled attempt time if previous callback attempts were unsuccessful. Useful for automated or manual retry logic.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.reason\n\n</td><td>\n\nReason for the callback request. Helps with routing, analytics, and reporting by tagging the callback with a standardized reason.Valid values:\n\n-   `Other issue`\n-   Custom values defined by your implementation. For example, `“Billing Inquiry”`, `“Technical Support”`\n\nTable: Callback \\[sys\\_cs\\_callback\\], Field: reason\\_type\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.scheduled\\_start\\_time\n\n</td><td>\n\nDate and time value to when the callback window begins. Only applicable to a `Scheduled` callback type.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.short\\_description\n\n</td><td>\n\nA brief summary of the callback request, usually used in lists or dashboards.Data type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.state\n\n</td><td>\n\nThe current workflow status of the callback request. Valid values:\n\n-   `pending approval`\n-   `in progress`\n-   `completed`\n-   `canceled`\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.callbackDetails.type\n\n</td><td>\n\nThe category of the request. Value is always `callback`.\n\n</td></tr><tr><td>\n\npayload.callbackId\n\n</td><td>\n\nRequired. Sys\\_id or external\\_id of the callback.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\npayload.phoneNumber\n\n</td><td>\n\nRequired. Phone number of the user requesting the callback.Data type: String\n\n</td></tr><tr><td>\n\npayload.type\n\n</td><td>\n\nRequired. Type of callback.Valid value: `callback_request`\n\nData type: String\n\n</td></tr><tr><td>\n\nroutingContext\n\n</td><td>\n\nRequired for routing configuration. If not passed or the routing rule doesn't match, the actions endpoint doesn't invoke a CCaaS subflow and falls back to using default ServiceNow processing.Contextual information used to find a custom subflow or routing rule. If omitted, the API uses default callback processing.\n\nData type: Object\n\n```\n\"routingContext\": {\n \"sourceTable\": \"String\",\n \"sourceId\": \"String\",\n \"userId\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nroutingContext.sourceId\n\n</td><td>\n\nSys\\_id of the source record initiating the callback. Corresponds to the value of **sourceTable**.Data type: String\n\n</td></tr><tr><td>\n\nroutingContext.sourceTable\n\n</td><td>\n\nThe table name where the request originated.Accepted values:\n\n-   `sp_portal`\n-   `sn_csm_ec_engmnt_center_module`\n-   `sn_embeddable_core_module`\n\nData type: String\n\n</td></tr><tr><td>\n\nroutingContext.userId\n\n</td><td>\n\nUser initiating the request \\(often the agent or system user\\).Table: User \\[sys\\_user\\]\n\nData type: String\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-entry-RESTAPI\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table>|Header|Description|\n|------|-----------|\n|None| |\n\n### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|200|Successful. The request was successfully processed.|\n\n### Response body parameters \\(JSON or XML\\)\n\n<table><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nbody\n\n</td><td>\n\nObject containing success or failure information about the request.Data type: Object\n\n```\n{\n  \"status\": 200,\n  \"body\": {\n    \"message\": \"String\",\n    \"number\": \"String\"\n }\n}\n```\n\n</td></tr><tr><td>\n\nbody.message\n\n</td><td>\n\nMessage with a brief details about the action's success or failure.Data type: String\n\n</td></tr><tr><td>\n\nbody.number\n\n</td><td>\n\nThe callback reference number. For example, `\"CAL0010012\"`.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nstatus\n\n</td><td>\n\nCorresponding status code of the request.Data type: String\n\n</td></tr></tbody>\n</table>### Create example \\(routing enabled\\)\n\nThis action creates a new callback record with routing context configured.\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"action\": \"create\",\n  \"routingContext\": {\n    \"sourceTable\": \"sn_csm_ec_engmnt_center_module\",\n    \"sourceId\": \"a1b2c3d4e5f6a7b8\",\n    \"userId\": \"beth.anglin\"\n  },\n  \"payload\": {\n    \"callbackId\": \"cb-98765\",\n    \"callbackDetails\": {\n      \"first_name\": \"Alice\",\n      \"last_name\": \"Smith\",\n      \"state\": \"Pending Approval\",\n      \"reason\": \"Request updated by user\",\n      \"end_time\": \"2025-12-17T23:00:00Z\",\n      \"scheduled_start_time\": \"2025-12-17T22:00:00Z\",\n      \"next_retry\": \"2025-12-18T10:00:00Z\",\n      \"expiry_time\": \"2025-12-18T12:00:00Z\",\n      \"phone_number\": \"+14155552671\",\n      \"short_description\": \"Callback request for customer support\",\n      \"description\": \"Customer requested a callback regarding their recent order.\",\n      \"opened_by\": \"user_sys_id_12345\",\n      \"type\": \"callback\"\n    },\n    \"type\": \"callback_request\",\n    \"phoneNumber\": \"+14155552671\",\n    \"callbackContext\": {\n      \"queue\": \"Customer Support\",\n      \"ivr_path\": \"support/ivr-path\",\n      \"customer_timezone\": \"GMT-5\"\n    }\n  },\n  \"additional_parameters\": {}\n}\n```\n\n### Create \\(no routing context\\)\n\nThe following example demonstrates how to create a new callback record without routing context.\n\n**Note:** Create actions without routing context follow the request structure documented in [Omnichannel Callback - POST /api/sn\\_omni\\_callback/callback/create](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/omichannel-callback-api.md).\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"action\": \"create\",\n  \"payload\": {\n  \"type\": \"asap\",\n  \"callbackDetails\": {\n    \"appointment\": \"68cc0a5a9314521060320dd548373cbd\",\n    \"description\": \"Customer reported issue with order #12345\",\n    \"short_description\": \"Order issue\",\n    \"reason_type\": \"product_issue\",\n    \"expire_time\": \"2025-09-01 17:00\",\n    \"messaging_channel\": \"web_channel_sys_id\",\n    \"channel_to_callback\": \"genesys_channel_sys_id\",\n    \"scheduled_start_time\": \"2025-09-01 1:00\",\n    \"end_time\": \"2025-09-01 17:00\",\n    \"user_document\": \"abel.tuter\",\n    \"user_table\": \"sys_user\"\n},\n  },\n  \"callbackContext\": {\n    \"queue\": \"sample queue\",\n    \"ivr_path\": \"sample ivr path\"\n  },\n  \"inboundId\": \"ServiceNowVoice\",\n  \"isExternal\": true,\n  \"phoneNumber\": \"+123454768\",\n  \"externalCallbackId\": \"new-external-id\",\n  \"interactionDetails\": {\n    \"clientSessionId\": \"f8453abb-a33d-45b7-bf01-52b7a821e99z\",\n    \"userId\": \"32423424\",\n    \"callerPhoneNumber\": \"+14089178877\"\n  }\n}\n```\n\n### Update action \\(routing enabled\\)\n\nThis example action updates an existing callback record with routing context. The **callbackNumber** value identifies the record to update:\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"action\": \"update\",\n  \"payload\": {\n    \"callbackDetails\": {\n      \"appointment\": \"68cc0a5a9314521060320dd548373cbd\",\n      \"description\": \"Customer reported issue with order #12345\",\n      \"short_description\": \"Order issue\",\n      \"reason_type\": \"product_issue\",\n      \"expire_time\": \"2025-09-01 17:00\",\n      \"messaging_channel\": \"web_channel_sys_id\",\n      \"channel_to_callback\": \"genesys_channel_sys_id\",\n      \"scheduled_start_time\": \"2025-09-01 1:00\",\n      \"end_time\": \"2025-09-01 17:00\",\n      \"user_document\": \"abel.tuter\",\n      \"user_table\": \"sys_user\"\n    },\n    \"callbackContext\": {\n      \"queue\": \"5 value changed via api\",\n      \"ivr_path\": \"5 some-ivr-path changed via api\"\n    },\n    \"inboundId\": \"AmazonConnect\",\n    \"phoneNumber\": \"+14089178877\",\n    \"callbackId\": \"a16ead53fff0621088c6ffffffffffce\"\n  }\n}\n```\n\n### Update \\(no routing context\\)\n\nThe following example demonstrates how to update a callback record without routing context:\n\n**Note:** Update actions without routing context follow the request structure documented in [Omnichannel Callback - PATCH /api/sn\\_omni\\_callback/callback/update](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/omichannel-callback-api.md).\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"action\": \"update\",\n  \"payload\": {\n    \"callbackDetails\": {\n      \"appointment\": \"68cc0a5a9314521060320dd548373cbd\",\n      \"description\": \"Customer reported issue with order #12345\",\n      \"short_description\": \"Order issue\",\n      \"reason_type\": \"product_issue\",\n      \"expire_time\": \"2025-09-01 17:00\",\n      \"messaging_channel\": \"web_channel_sys_id\",\n      \"channel_to_callback\": \"genesys_channel_sys_id\",\n      \"scheduled_start_time\": \"2025-09-01 1:00\",\n      \"end_time\": \"2025-09-01 17:00\",\n      \"user_document\": \"abel.tuter\",\n      \"user_table\": \"sys_user\"\n    },\n    \"callbackContext\": {\n      \"queue\": \"5 value changed via api\",\n      \"ivr_path\": \"5 some-ivr-path changed via api\"\n    },\n    \"inboundId\": \"AmazonConnect\",\n    \"phoneNumber\": \"+14089178877\",\n    \"callbackId\": \"a16ead53fff0621088c6ffffffffffce\"\n  }\n}\n```\n\n### Cancel action\n\nThis example action cancels a given callback record with routing context and updates the reason field in the Callback \\[sys\\_cs\\_callback\\] table.\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n    \"action\": \"cancel\",\n    \"routingContext\": {\n        \"sourceTable\": \"sn_csm_ec_engmnt_center_module\",\n        \"sourceId\": \"a1b2c3d4e5f6a7b8\",\n        \"userId\": \"beth.anglin\"\n    },\n     \"payload\": {\n        \"callbackId\": \"CAL0001234\"\n    }\n}\n```\n\n### Cancel \\(no routing context\\)\n\nThe following example demonstrates how to cancel a callback record without routing context:\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"action\": \"cancel\",\n  \"payload\": {\n    \"callbackId\": \"cb-98765\"\n  }\n}\n```\n\n### Close action \\(routing enabled\\)\n\nThis example closes a callback record with routing context and updates the reason field in the Callback \\[sys\\_cs\\_callback\\] table:\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n    \"action\": \"close\",\n    \"routingContext\": {\n        \"sourceTable\": \"sn_csm_ec_engmnt_center_module\",\n        \"sourceId\": \"a1b2c3d4e5f6a7b8\",\n        \"userId\": \"beth.anglin\"\n    },\n    \"payload\": {\n        \"callbackId\": \"CAL0001234\"\n    }\n}\n```\n\n### Close \\(no routing context\\)\n\nThe following example demonstrates how to close a callback record without routing context:\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/actions \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"action\": \"close\",\n  \"payload\": {\n    \"callbackId\": \"cb-98765\"\n  }\n}\n```\n\n## Omnichannel Callback - POST /api/sn\\_omni\\_callback/callback/attempt\n\nInitiates an interaction for an existing callback, including retry attempts.\n\n### URL format\n\nDefault URL: `/api/sn_omni_callback/callback/attempt`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table class=\"rest_api_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\ncallbackId\n\n</td><td>\n\nRequired. Sys\\_id or external\\_id of the callback.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\ninteractionDetails\n\n</td><td>\n\nOptional. Details about the interaction. Meant for 'asap' \\(immediate\\) callback types so that interaction details are routed directly to the agent without waiting.All interaction details are passed in the payload of the [Voice Interaction Resource - POST /cs/voice-interactions](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/voice-interaction-resource-api.md).\n\nData type: Object\n\n```\n\"interactionDetails\": {\n  \"callerPhoneNumber\": \"String\",\n  \"clientSessionId\": \"String\",\n  \"userId\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\ninteractionDetails.callerPhoneNumber\n\n</td><td>\n\nCaller's callback phone number. This is the number the agent uses to reach the caller in case the call drops. Data type: String\n\nFormat: E.164 standard compliant\n\nDefault: None\n\n</td></tr><tr><td>\n\ninteractionDetails.clientSessionId\n\n</td><td>\n\nUnique identifier of a record in an external system used to track this phone call. This information links the records between the two systems. Data type: String\n\nFormat: Typically a UUID or unique session token generated by the external system\n\nDefault: None\n\n</td></tr><tr><td>\n\ninteractionDetails.userId\n\n</td><td>\n\nSys\\_id of the user to call back.Table: User \\[sys\\_user\\]\n\nData type: String\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-entry-RESTAPI\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table><table class=\"rest_api_response_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"d2936e85\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table>### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|200|Successful. The request was successfully processed.|\n|400|Bad Request. A bad request type or malformed request was detected.|\n|500|Internal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.|\n\n### Response body parameters \\(JSON or XML\\)\n\n<table id=\"table_xp5_5td_fgc\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nerrors\n\n</td><td id=\"omni-response-errors-entry\">\n\nMessage containing details about the failures of the callback creation, like missing required request IDs.Data type: Array of strings\n\n```\n\"errors\": [\"String\", \"String\"]\n```\n\n</td></tr><tr><td>\n\nmessages\n\n</td><td id=\"omni-response-messages-entry\">\n\nMessage containing details about the success of the callback creation.Data type: Array of strings\n\n```\n\"messages\": [\"String\", \"String\"]\n```\n\n</td></tr><tr><td>\n\nresult\n\n</td><td id=\"omni-response-result-row\">\n\nResult of the request.Data type: Object\n\n```\n\"result\": {\n  \"status\": \"String\",\n  \"response\": {Object},\n  \"errors\": [Array],\n  \"messages\": [Array]\n}\n```\n\n</td></tr><tr><td>\n\nresult.response\n\n</td><td id=\"omni-response-result.response-entry\">\n\nObject containing callback and interaction IDs of the callback request.Data type: Object\n\n```\n\"response\": {\n  \"callback_created\": Boolean\n  \"callback_id\": \"String\",\n  \"interaction_id\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.response.interaction\\_id\n\n</td><td id=\"omni-response-result.response.interaction_id-entry\">\n\nSys\\_id of the newly created interaction.Table: Interaction \\[interaction\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.status\n\n</td><td id=\"omni-response-result.status-entry\">\n\nSuccess or failure status of the request.Valid values:\n\n-   success\n-   failure\n\nData type: String\n\n</td></tr></tbody>\n</table>### cURL request\n\nThe following example demonstrates a POST attempt request with details about the initial interaction and subsequent retry interactions.\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/callback/attempt' \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"callbackId\": \"<ID#>\",\n  \"interactionDetails\": {\n    \"clientSessionId\": \"<ID#>\",\n    \"userId\": \"<ID#>\",\n    \"callerPhoneNumber\": \"+112345678901\"\n  }\n}\n```\n\nResponse body when a valid callback\\_Id is provided and a new interaction was successfully created for the callback.\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"interaction_id\": \"<Interaction ID#>\"\n    }\n  }\n}\n```\n\nResponse body when an invalid callback\\_Id was provided in the request.\n\n```\n{\n  \"result\": {\n    \"status\": \"failure\",\n    \"response\": {\n      \"interactionId\": null\n    },\n    \"errors\": [\n      \"Callback not found for callback ID: <ID#>\"\n    ]\n  }\n}\n```\n\nResponse body when the interaction already exists for the given callback \\(message returns details about the existing interaction\\):\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"interaction_id\": \"<Interaction ID#>\"\n    },\n    \"messages\": [\n      \"Active Interaction <Interaction ID#> already exists for callback <ID#>\"\n    ]\n  }\n}\n```\n\n## Omnichannel Callback - POST /api/sn\\_omni\\_callback/callback/create\n\nInitiates a new immediate or scheduled callback request based on details you provide in the request body. For immediate callbacks, this API creates both the callback and interaction. For scheduled callbacks, creates the callback with an appointment ID.\n\n### URL format\n\nVersioned URL: `/api/sn_omni_callback/v1/callback/create`\n\nDefault URL: `/api/sn_omni_callback/callback/create`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table class=\"rest_api_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\ncallbackContext\n\n</td><td>\n\nObject containing the context details about the callback request.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\]\n\nData type: Object\n\n```\n\"callbackContext\": {\n  \"customer_timezone\": \"String\",\n  \"ivr_path\": \"String\",\n  \"source_channel\": \"String\",\n  \"queue\": \"String\",\n  \"voicemail_duration\": \"String\",\n  \"voicemail_recorded_at\": \"String\",\n  \"voicemail_transcript\": \"String\",\n  \"voicemail_url\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\ncallbackContext.customer\\_timezone\n\n</td><td>\n\nTime zone of customer who requested the callback. Time zones can be provided in the following formats. -   `Country/City`. For example, `America/Los_Angeles`.\n-   `Country/Time zone`. For example, `US/Pacific`.\n-   `Time zone abbreviation`. For example, `PST`.\n\nFor a complete list of valid timezones, see the Time zone field in the User \\[sys\\_user\\] table. For more information about time zones, see [Time zones](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/r_TimeZones.md).\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.ivr\\_path\n\n</td><td>\n\nThe IVR \\(Interactive Voice Response\\) path that a customer follows before being transferred to a human agent.Typically contains a list of queues or menu options the customer navigated through in the IVR system. This string is passed by Contact Center as a Service \\(CCaaS\\). For example, `\"ivr_path\": \"Technical Support > Account Management\"`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.queue\n\n</td><td>\n\nNumber assignments in the queue.Data type: String\n\n</td></tr><tr><td>\n\ncallbackContext.source\\_channel\n\n</td><td>\n\nSource of the callback. For example, IVR, Web, or VA.Data type: String\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_duration\n\n</td><td>\n\nLength of the voicemail in hours, minutes, or seconds.Field: Voicemail Duration\n\nData type: Number\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_recorded\\_at\n\n</td><td>\n\nTime stamp in which the voicemail was recorded.Field: Voicemail Recorded At\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_transcript\n\n</td><td>\n\nTranscribed text of the voicemail.Field: Voicemail Transcript\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_url\n\n</td><td>\n\nRelative link to the callback record containing the voicemail.Field: Voicemail URL\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails\n\n</td><td>\n\nObject containing the details about the callback request.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: Object\n\n```\n\"callbackDetails\": {\n  \"appointment\": \"String\",\n  \"channel_to_callback\": \"String\",\n  \"description\": \"String\",\n  \"end_time\": \"String\",\n  \"expire_time\": \"String\",\n  \"messaging_channel\": \"String\",\n  \"reason_type\": \"String\"\n  \"scheduled_start_time\": \"String\",\n  \"short_description\": \"String\",\n  \"user_document\": \"String\",\n  \"user_table\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\ncallbackDetails.appointment\n\n</td><td>\n\nSys\\_id of the appointment. Only applicable to a `Scheduled` callback type.Table: Appointment Booking \\[sn\\_apptmnt\\_booking\\_appointment\\_booking\\]\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.channel\\_to\\_callback\n\n</td><td>\n\nTarget messaging channel to route the callback through.Table: Messaging Channel \\[sys\\_cs\\_channel\\], Field: sys\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.description\n\n</td><td>\n\nFull description describing the reason for the callback, if needed.Data type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.end\\_time\n\n</td><td>\n\nDate and time value to stop the callback attempt. Only applicable to a `Scheduled` callback type.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.expire\\_time\n\n</td><td>\n\nDate and time to close the callback request.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.messaging\\_channel\n\n</td><td>\n\nSource of the callback. Identifies the client interface that initiated the callback request, such as a web client, mobile app, or embedded messenger.Table: Messaging Channel \\[sys\\_cs\\_channel\\], Field: sys\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.reason\\_type\n\n</td><td>\n\nReason for the callback request. Helps with routing, analytics, and reporting by tagging the callback with a standardized reason.Valid values:\n\n-   `Other issue`\n-   Custom values defined by your implementation. For example, `“Billing Inquiry”`, `“Technical Support”`\n\nTable: Callback \\[sys\\_cs\\_callback\\], Field: reason\\_type\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.scheduled\\_start\\_time\n\n</td><td>\n\nDate and time value to initiate the callback. Only applicable to a `Scheduled` callback type.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.short\\_description\n\n</td><td>\n\nProvides a detailed explanation of the callback request. Can include specific customer concerns, context, or notes from the agent.Data type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.user\\_document\n\n</td><td>\n\nSys\\_id of the user who requested the callback. Used with **callbackDetails.user\\_table** to identify the user requesting the callback.Table: User \\[sys\\_user\\], Field: sys\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.user\\_table\n\n</td><td>\n\nTable where the user record resides. Used with **callbackDetails.user\\_document** to identify the user requesting the callback. Value is always `sys_user`.Data type: String\n\n</td></tr><tr><td>\n\nexternalCallbackId\n\n</td><td>\n\nExternal identifier for the callback that was created in a third party vendor.Data type: String\n\n</td></tr><tr><td>\n\ninboundId\n\n</td><td>\n\nSys\\_id of the inbound call associated with the callback. Provides traceability linking the callback request to a specific inbound call record that might originate from a third-party provider or CCaaS platform.Table: Callback \\[sys\\_cs\\_callback\\], Field: provider\\_application\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ninteractionDetails\n\n</td><td>\n\nOptional. Details about the interaction. Meant for 'asap' \\(immediate\\) callback types so that interaction details are routed directly to the agent without waiting.All interaction details are passed in the payload of the [Voice Interaction Resource - POST /cs/voice-interactions](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/voice-interaction-resource-api.md).\n\nData type: Object\n\n```\n\"interactionDetails\": {\n  \"callerPhoneNumber\": \"String\",\n  \"clientSessionId\": \"String\",\n  \"userId\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\ninteractionDetails.callerPhoneNumber\n\n</td><td>\n\nCaller's callback phone number. This is the number the agent uses to reach the caller in case the call drops. Data type: String\n\nFormat: E.164 standard compliant\n\nDefault: None\n\n</td></tr><tr><td>\n\ninteractionDetails.clientSessionId\n\n</td><td>\n\nUnique identifier of a record in an external system used to track this phone call. This information links the records between the two systems. Data type: String\n\nFormat: Typically a UUID or unique session token generated by the external system\n\nDefault: None\n\n</td></tr><tr><td>\n\ninteractionDetails.userId\n\n</td><td>\n\nSys\\_id of the user to call back.Table: User \\[sys\\_user\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nisExternal\n\n</td><td>\n\nFlag that indicates whether the callback is external and was requested in different third-party vendor.Valid values:\n\n-   true: Callback is external.\n-   false: Callback is not external.\n\nDefault: false\n\n</td></tr><tr><td>\n\ntype\n\n</td><td>\n\nRequired. Type of callback.Valid values:\n\n-   `asap`: The callback interaction is created instantly.\n-   `scheduled`: The callback interaction is created and scheduled for a later time selected by the customer.\n\nData type: String\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-entry-RESTAPI\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table><table class=\"rest_api_response_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"d2936e85\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table>### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|200|Successful. The request was successfully processed.|\n|400|Bad Request. A bad request type or malformed request was detected.|\n|500|Internal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.|\n\n### Response body parameters \\(JSON or XML\\)\n\n<table><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nresult\n\n</td><td id=\"omni-response-result-row\">\n\nResult of the request.Data type: Object\n\n```\n\"result\": {\n  \"status\": \"String\",\n  \"response\": {Object},\n  \"errors\": [Array],\n  \"messages\": [Array]\n}\n```\n\n</td></tr><tr><td>\n\nresult.errors\n\n</td><td>\n\nMessage containing details about the failures of the callback creation, like missing required request IDs.Data type: Array of strings\n\n```\n\"errors\": [\"String\", \"String\"]\n```\n\n</td></tr><tr><td>\n\nresult.messages\n\n</td><td>\n\nMessage containing details about the success of the callback creation.Data type: Array of strings\n\n```\n\"messages\": [\"String\", \"String\"]\n```\n\n</td></tr><tr><td>\n\nresult.response\n\n</td><td id=\"omni-response-result.response-entry\">\n\nObject containing callback and interaction IDs of the callback request.Data type: Object\n\n```\n\"response\": {\n  \"callback_created\": Boolean\n  \"callback_id\": \"String\",\n  \"interaction_id\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.response.callback\\_created\n\n</td><td id=\"omni-response-result.response.callback_created-entry\">\n\nFlag indicating whether the new callback request was created or not.\n\n Possible values:\n\n-   true: Callback was created successfully.\n-   false: Callback was not created. For example, the callback already exists with the given callback\\_id.\n\n Data type: Boolean\n\n</td></tr><tr><td>\n\nresult.response.callback\\_id\n\n</td><td id=\"omni-response-result.response.callback_id-entry\">\n\nSys\\_id of the new callback, if applicable.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.response.interaction\\_id\n\n</td><td id=\"omni-response-result.response.interaction_id-entry\">\n\nSys\\_id of the newly created interaction.Table: Interaction \\[interaction\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.status\n\n</td><td id=\"omni-response-result.status-entry\">\n\nSuccess or failure status of the request.Valid values:\n\n-   success\n-   failure\n\nData type: String\n\n</td></tr></tbody>\n</table>### cURL request\n\nThe following example creates a simple callback request according to details the agent provides in the request body.\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/callback/create' \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"type\": \"asap\",\n  \"callbackDetails\": {\n    \"appointment\": \"68cc0a5a9314521060320dd548373cbd\",\n    \"description\": \"Customer reported issue with order #12345\",\n    \"short_description\": \"Order issue\",\n    \"reason_type\": \"product_issue\",\n    \"expire_time\": \"2025-09-01 17:00\",\n    \"messaging_channel\": \"web_channel_sys_id\",\n    \"channel_to_callback\": \"genesys_channel_sys_id\",\n    \"scheduled_start_time\": \"2025-09-01 1:00\",\n    \"end_time\": \"2025-09-01 17:00\",\n    \"user_document\": \"abel.tuter\",\n    \"user_table\": \"sys_user\"\n},\n  },\n  \"callbackContext\": {\n    \"queue\": \"sample queue\",\n    \"ivr_path\": \"sample ivr path\"\n  },\n  \"inboundId\": \"ServiceNowVoice\",\n  \"isExternal\": true,\n  \"phoneNumber\": \"+123454768\",\n  \"externalCallbackId\": \"new-external-id\",\n  \"interactionDetails\": {\n    \"clientSessionId\": \"f8453abb-a33d-45b7-bf01-52b7a821e99z\",\n    \"userId\": \"32423424\",\n    \"callerPhoneNumber\": \"+14089178877\"\n  }\n}\n```\n\nThe response body returns a success response with callback and interaction IDs for the newly created callback request.\n\n```\n{\n  \"status\": \"success\",\n  \"response\": {\n    \"callback_id\": \"a16ead53fff0621088c6ffffffffffce\",\n    \"interaction_id\": \"696e6d57fff0621088c6ffffffffff7d\"\n  }\n}\n```\n\nResponse body when interaction details were not provided:\n\n```\n{\n  \"status\": \"success\",\n  \"response\": {\n    \"callback_created\": true,\n    \"callback_id\": \"7df2059ffffc221088c6ffffffffff0c\"\n  }\n}\n```\n\nResponse body when the callback ID already exists but new interaction details were provided:\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"interaction_id\": \"84054fff53786210011eddeeff7b12d6\",\n      \"callback_id\": \"8b43c3fb53786210011eddeeff7b12a6\",\n      “callback_created”: false\n    },\n    \"messages\": [\n      \"Successfully updated the callback 8b43c3fb53786210011eddeeff7b12a6\",\n      \"Successfully created the interaction 84054fff53786210011eddeeff7b12d6\"\n    ]\n  }\n}\n```\n\nResponse body when the callback ID already exists but new interaction details were not provided:\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"callback_id\": \"8b43c3fb53786210011eddeeff7b12a6\"\n    },\n    \"messages\": [\n      \"Successfully updated the callback 8b43c3fb53786210011eddeeff7b12a6\"\n    ]\n  }\n}\n```\n\nResponse body when mandatory fields are missing in the request:\n\n```\n{\n  \"result\": {\n    \"status\": \"failure\",\n    \"response\": {\n      \"callbackId\": null\n    },\n    \"errors\": [\n      \"Parameter 'type' is required in request\"\n    ]\n  }\n}\n```\n\n## Omnichannel Callback - POST api/sn\\_omni\\_callback/callback/get\n\nFetches callback information based on query parameters.\n\n### URL format\n\nVersioned URL: `/api/sn_omni_callback/v1/callback/get`\n\nDefault URL: `/api/sn_omni_callback/callback/get`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table class=\"rest_api_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nqueryParameters\n\n</td><td>\n\nObject containing the key-value pair of the query parameters to filter results on.Data type: Object\n\n```\n\"queryParameters\": {\n  \"number\": \"String\",\n  \"state\": \"String\",\n  \"opened_by\": \"String\",\n  \"sys_id\", \"String\",\n  \"callback_type\": \"String\",\n  \"external_callback_id\": \"String\",\n  \"callback_number\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nqueryParameters.number\n\n</td><td>\n\nThe callback reference number to look up. For example, `\"CAL0010012\"`.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nqueryParameters.state\n\n</td><td>\n\nNumber representing the current state of the callback.Possible values:\n\n-   `1`: Open\n-   `2`: Work in Progress\n-   `3`: Closed Complete\n-   `4`: Closed Abandoned\n-   `7`: Cancelled\n\nData type: Number\n\n</td></tr><tr><td>\n\nqueryParameters.opened\\_by\n\n</td><td>\n\nUser ID of the user requesting the callback.Table: User \\[sys\\_user\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nqueryParameters.sys\\_id\n\n</td><td>\n\nSys\\_id of the callback record.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nqueryParameters.callback\\_type\n\n</td><td>\n\nType of callback.Valid values:\n\n-   `asap`: The callback interaction is created instantly.\n-   `scheduled`: The callback interaction is created and scheduled for a later time selected by the customer.\n\nData type: String\n\n</td></tr><tr><td>\n\nqueryParameters.external\\_callback\\_id\n\n</td><td>\n\nExternal identifier for the callback created in a third-party system.Data type: String\n\n</td></tr><tr><td>\n\nqueryParameters.callback\\_number\n\n</td><td>\n\nPhone number of the caller to call back.Data type: String\n\n</td></tr><tr><td>\n\nresponseParameters\n\n</td><td>\n\nOptional. Specifies which fields to return in the response. If omitted, the endpoint returns default fields.Data type: Object\n\n```\n\"responseParameters\": {\n  \"callback\": [Array],\n  \"context\": [Array]\n}\n```\n\n</td></tr><tr><td>\n\nresponseParameters.callback\n\n</td><td>\n\nOptional. Returns fields from the callback record \\(for example, `number`, `phone_number`\\).Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: Object\n\n```\n\"callback\": [String, String]\n```\n\nValid values:\n\n-   `number`: Unique reference number for that callback \\(for example, `\"CAL0010012\"`\\).\n-   `phone_number`: Phone number of the caller.\n\n</td></tr><tr><td>\n\nresponseParameters.context\n\n</td><td>\n\nOptional. Returns contextual information of the callback, such as queue, assignment, or related metadata in the form of key:value pairs.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\]\n\nData type: Array of Strings\n\n```\n\"callbackContext\": {\n  \"customer_timezone\": \"String\",\n  \"ivr_path\": \"String\",\n  \"source_channel\": \"String\",\n  \"queue\": \"String\",\n  \"voicemail_duration\": \"String\",\n  \"voicemail_recorded_at\": \"String\",\n  \"voicemail_transcript\": \"String\",\n  \"voicemail_url\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresponseParameters.context.customer\\_timezone\n\n</td><td>\n\nTime zone of the user requesting the callback.String\n\n</td></tr><tr><td>\n\nresponseParameters.context.ivr\\_path\n\n</td><td>\n\nThe IVR \\(Interactive Voice Response\\) path that a customer follows before being transferred to a human agent.Typically contains a list of queues or menu options the customer navigated through in the IVR system. This string is passed by Contact Center as a Service \\(CCaaS\\). For example, `\"ivr_path\": \"Technical Support > Account Management\"`\n\nData type: String\n\n</td></tr><tr><td>\n\nresponseParameters.context.source\\_channel\n\n</td><td>\n\nSource of the callback. For example, IVR, Web, or VA.String\n\n</td></tr><tr><td>\n\nresponseParameters.context.queue\n\n</td><td>\n\nName or ID of the queue where the callback is assigned.String\n\n</td></tr><tr><td>\n\nresponseParameters.context.voicemail\\_duration\n\n</td><td>\n\nLength of the voicemail in hours, minutes, or seconds.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\], Field: Voicemail Duration\n\nString\n\n</td></tr><tr><td>\n\nresponseParameters.context.voicemail\\_recorded\\_at\n\n</td><td>\n\nTime stamp in which the voicemail was recorded.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\], Field: Voicemail Recorded At\n\nData type: String\n\n</td></tr><tr><td>\n\nresponseParameters.context.voicemail\\_transcript\n\n</td><td>\n\nTranscribed text of the voicemail.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\], Field: Voicemail Transcript\n\nData type: String\n\n</td></tr><tr><td>\n\nresponseParameters.context.voicemail\\_url\n\n</td><td>\n\nRelative link to the callback record containing the voicemail.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\], Field: Voicemail URL\n\nData type: String\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Header|Description|\n|------|-----------|\n|None| |\n\n|Header|Description|\n|------|-----------|\n|None| |\n\n### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|200|Successful. The request was successfully processed.|\n\n### Response body parameters \\(JSON or XML\\)\n\n<table><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nresult\n\n</td><td>\n\nObject containing the callback record or callback information that matched the specified search criteria.Date type: Object\n\n```\n\"result\": {\n  \"response\": {Object},\n  \"status\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.response\n\n</td><td>\n\nCallback information.Data type: Object\n\n```\n\"response\": {\n \"callbacks\": [Array],\n \"count\": \"Number\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.response.callbacks\n\n</td><td>\n\nObject containing details about the callback record in the form of key:value pairs. **Note:** Displays all default fields if **responseParameters** wasn't specified in the request.\n\nData type: Array of Strings\n\n```\n\"callbacks\": [\n  {\n    \"number\": \"String\",\n    \"state\": \"String\",\n    \"first_name\": \"Virtual\",\n    \"last_name\": \"Agent\",\n    \"user_table\": \"sys_user\",\n    \"opened_by\": \"Virtual Agent\",\n    \"assigned_to\": \"\"\n  }\n]\n```\n\n</td></tr><tr><td>\n\nresult.response.callbacks.assigned\\_to\n\n</td><td>\n\nID of the agent assigned to the request.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context\n\n</td><td>\n\nContextual information of the callback record. Varies based on the request input.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\]\n\nData type: Array of Strings\n\n```\n\"callbackContext\": {\n  \"customer_timezone\": \"String\",\n  \"ivr_path\": \"String\",\n  \"source_channel\": \"String\",\n  \"queue\": \"String\",\n  \"voicemail_duration\": \"String\",\n  \"voicemail_recorded_at\": \"String\",\n  \"voicemail_transcript\": \"String\",\n  \"voicemail_url\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.customer\\_timezone\n\n</td><td>\n\nTime zone of user requesting the callback.String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.ivr\\_path\n\n</td><td>\n\nThe IVR \\(Interactive Voice Response\\) path that a customer follows before being transferred to a human agent.Typically contains a list of queues or menu options the customer navigated through in the IVR system. This string is passed by Contact Center as a Service \\(CCaaS\\). For example, `\"ivr_path\": \"Technical Support > Account Management\"`\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.source\\_channel\n\n</td><td>\n\nSource of the callback. For example, IVR, Web, or VA.String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.queue\n\n</td><td>\n\nName or ID of the queue where the callback is assigned.String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.voicemail\\_duration\n\n</td><td>\n\nLength of the voicemail in hours, minutes, or seconds.String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.voicemail\\_recorded\\_at\n\n</td><td>\n\nTime stamp in which the voicemail was recorded.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.voicemail\\_transcript\n\n</td><td>\n\nTranscribed text of the voicemail.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.context.voicemail\\_url\n\n</td><td>\n\nRelative link to the callback record containing the voicemail.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.created\\_on\n\n</td><td>\n\nTime stamp when callback was created.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.first\\_name\n\n</td><td>\n\nFirst name of the user who initiated or is associated with the callback.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.last\\_name\n\n</td><td>\n\nLast name of the associated user. Completes the user’s full name for logging, routing, and display.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.number\n\n</td><td>\n\nUnique callback reference number. For example, `\"CAL0010012\"`.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.opened\\_by\n\n</td><td>\n\nUser ID of the user requesting the callback.Table: User \\[sys\\_user\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.phone\\_number\n\n</td><td>\n\nPhone number of the caller.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.status\n\n</td><td>\n\nCurrent status of the callback. Possible values:\n\n-   `1`: Open\n-   `2`: Work in Progress\n-   `3`: Closed Complete\n-   `4`: Closed Abandoned\n-   `7`: Cancelled\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.response.callbacks.user\\_table\n\n</td><td>\n\nTable to reference when looking up callback user details. For example, sys\\_user.Data type: String\n\n</td></tr><tr><td>\n\nresult.response.count\n\n</td><td>\n\nNumber of matching records according to search criteria.Data type: Number\n\n</td></tr><tr><td>\n\nresult.status\n\n</td><td>\n\nSuccess or error status of the request.Possible values:\n\n-   error: Internal or unexpected failure, such as a database connection failure, server exception, or uncaught runtime error.\n-   failed: Operation couldn't be completed. For example: No record found, validation failed, or unsupported parameter.\n-   not\\_found: Queried entity doesn’t exist.\n-   unauthorized: Caller lacks permissions, credentials, or access.\n-   invalid\\_request: For malformed parameters, wrong types, or missing required fields.\n-   timeout: Upstream system or database didn’t return on time.\n-   partial\\_success: Some records processed successfully or some failed.\n\nData type: String\n\n</td></tr></tbody>\n</table>### cURL request\n\nThe following POST example queries callback records specifically opened by a Virtual Agent \\(`\"opened_by\": \"virtual.agent\"`\\) and is in a closed state \\(`4`\\), and directs the API to return only the callback record's reference number and phone number \\(`\"callback\": [\"number\", \"callback_number\"]`\\) within a queue context \\(`\"context\": [\"queue\"]`\\).\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/callback/get' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json\" \\\n  -u 'username':'password' \\ \n  -d {\n  \"queryParameters\": {\n    \"opened_by\": \"virtual.agent\",\n    \"state\": 4,\n  },\n  \"responseParameters\": {\n    \"callback\": [\"number\", \"callback_number\"],\n    \"context\": [\"queue\"]\n  }\n}\n```\n\nResponse body.\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"callbacks\": [\n        {\n          \"number\": \"CAL0010036\",\n          \"callback_number\": \"+14089178878\",\n          \"context\": {\n            \"queue\": \"21 value changed via api\"\n          }\n        },\n        {\n          \"number\": \"CAL0010037\",\n          \"callback_number\": \"+14089178878\",\n          \"context\": {\n            \"queue\": \"21 value changed via api\"\n          }\n        },\n        {\n          \"number\": \"CAL0010001\",\n          \"callback_number\": \"+918008509174\",\n          \"context\": {\n            \"queue\": \"queue\"\n          }\n        },\n        {\n          \"number\": \"CAL0010033\",\n          \"callback_number\": \"+14089178878\",\n          \"context\": {\n            \"queue\": \"21 value changed via api\"\n          }\n        },\n        {\n          \"number\": \"CAL0010003\",\n          \"callback_number\": \"+918008509174\",\n          \"context\": {\n            \"queue\": \"Soumya queue\"\n          }\n        },\n        {\n          \"number\": \"CAL0010035\",\n          \"callback_number\": \"+14089178878\",\n          \"context\": {\n            \"queue\": \"21 value changed via api\"\n          }\n        },\n        {\n          \"number\": \"CAL0010038\",\n          \"callback_number\": \"+14089178878\",\n          \"context\": {\n            \"queue\": \"21 value changed via api\"\n          }\n        },\n        {\n          \"number\": \"CAL0010034\",\n          \"callback_number\": \"+14089178878\",\n          \"context\": {\n            \"queue\": \"21 value changed via api\"\n          }\n        }\n      ],\n      \"count\": 8\n    }\n  }\n}\n```\n\nThe following example retrieves callback information based on a matching external ID, `new-external-2325`. Because the call doesn't provide **responseParameters** in the request, the response returns the full default record.\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/callback/get' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json\" \\\n  -u 'username':'password' \\ \n  -d {\n  \"queryParameters\": {\n    \"external_callback_id\": \"new-external-2325\"\n  }\n}\n```\n\nResponse body:\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"callbacks\": [\n        {\n          \"number\": \"CAL0010038\",\n          \"state\": \"Closed Abandoned\",\n          \"first_name\": \"Virtual\",\n          \"last_name\": \"Agent\",\n          \"user_table\": \"sys_user\",\n          \"opened_by\": \"Virtual Agent\",\n          \"assigned_to\": \"\"\n        }\n      ]\n    }\n  }\n}\n```\n\n## Omnichannel Callback - PATCH /api/sn\\_omni\\_callback/callback/update\n\nUpdates an existing callback according to details provided in the request.\n\nOnly provide request parameters in the request body that you want to update.\n\n### URL format\n\nDefault URL: `/api/sn_omni_callback/callback/update`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table class=\"rest_api_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\ncallbackContext\n\n</td><td>\n\nObject containing the context details about the callback request.Table: Callback Context \\[sys\\_cs\\_callback\\_context\\]\n\nData type: Object\n\n```\n\"callbackContext\": {\n  \"customer_timezone\": \"String\",\n  \"ivr_path\": \"String\",\n  \"source_channel\": \"String\",\n  \"queue\": \"String\",\n  \"voicemail_duration\": \"String\",\n  \"voicemail_recorded_at\": \"String\",\n  \"voicemail_transcript\": \"String\",\n  \"voicemail_url\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\ncallbackContext.customer\\_timezone\n\n</td><td>\n\nTime zone of customer who requested the callback. Time zones can be provided in the following formats. -   `Country/City`. For example, `America/Los_Angeles`.\n-   `Country/Time zone`. For example, `US/Pacific`.\n-   `Time zone abbreviation`. For example, `PST`.\n\nFor a complete list of valid timezones, see the Time zone field in the User \\[sys\\_user\\] table. For more information about time zones, see [Time zones](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/r_TimeZones.md).\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.ivr\\_path\n\n</td><td>\n\nThe IVR \\(Interactive Voice Response\\) path that a customer follows before being transferred to a human agent.Typically contains a list of queues or menu options the customer navigated through in the IVR system. This string is passed by Contact Center as a Service \\(CCaaS\\). For example, `\"ivr_path\": \"Technical Support > Account Management\"`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.queue\n\n</td><td>\n\nNumber assignments in the queue.Data type: String\n\n</td></tr><tr><td>\n\ncallbackContext.source\\_channel\n\n</td><td>\n\nSource of the callback. For example, IVR, Web, or VA.Data type: String\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_duration\n\n</td><td>\n\nLength of the voicemail in hours, minutes, or seconds.Field: Voicemail Duration\n\nData type: Number\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_recorded\\_at\n\n</td><td>\n\nTime stamp in which the voicemail was recorded.Field: Voicemail Recorded At\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_transcript\n\n</td><td>\n\nTranscribed text of the voicemail.Field: Voicemail Transcript\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackContext.voicemail\\_url\n\n</td><td>\n\nRelative link to the callback record containing the voicemail.Field: Voicemail URL\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails\n\n</td><td>\n\nObject containing the details about the callback request.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: Object\n\n```\n\"callbackDetails\": {\n  \"appointment\": \"String\",\n  \"channel_to_callback\": \"String\",\n  \"description\": \"String\",\n  \"end_time\": \"String\",\n  \"expire_time\": \"String\",\n  \"messaging_channel\": \"String\",\n  \"reason_type\": \"String\"\n  \"scheduled_start_time\": \"String\",\n  \"short_description\": \"String\",\n  \"user_document\": \"String\",\n  \"user_table\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\ncallbackDetails.appointment\n\n</td><td>\n\nSys\\_id of the appointment. Only applicable to a `Scheduled` callback type.Table: Appointment Booking \\[sn\\_apptmnt\\_booking\\_appointment\\_booking\\]\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.channel\\_to\\_callback\n\n</td><td>\n\nTarget messaging channel to route the callback through.Table: Messaging Channel \\[sys\\_cs\\_channel\\], Field: sys\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.description\n\n</td><td>\n\nFull description describing the reason for the callback, if needed.Data type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.end\\_time\n\n</td><td>\n\nDate and time value to stop the callback attempt. Only applicable to a `Scheduled` callback type.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.expire\\_time\n\n</td><td>\n\nDate and time to close the callback request.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.messaging\\_channel\n\n</td><td>\n\nSource of the callback. Identifies the client interface that initiated the callback request, such as a web client, mobile app, or embedded messenger.Table: Messaging Channel \\[sys\\_cs\\_channel\\], Field: sys\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.reason\\_type\n\n</td><td>\n\nReason for the callback request. Helps with routing, analytics, and reporting by tagging the callback with a standardized reason.Valid values:\n\n-   `Other issue`\n-   Custom values defined by your implementation. For example, `“Billing Inquiry”`, `“Technical Support”`\n\nTable: Callback \\[sys\\_cs\\_callback\\], Field: reason\\_type\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.scheduled\\_start\\_time\n\n</td><td>\n\nDate and time value to initiate the callback. Only applicable to a `Scheduled` callback type.Format: glide\\_date\\_time value, such as `yyyy-MM-dd HH:mm:ss`\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.short\\_description\n\n</td><td>\n\nProvides a detailed explanation of the callback request. Can include specific customer concerns, context, or notes from the agent.Data type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.user\\_document\n\n</td><td>\n\nSys\\_id of the user who requested the callback. Used with **callbackDetails.user\\_table** to identify the user requesting the callback.Table: User \\[sys\\_user\\], Field: sys\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\ncallbackDetails.user\\_table\n\n</td><td>\n\nTable where the user record resides. Used with **callbackDetails.user\\_document** to identify the user requesting the callback. Value is always `sys_user`.Data type: String\n\n</td></tr><tr><td>\n\ncallbackId\n\n</td><td>\n\nRequired. Sys\\_id or external\\_id of the callback.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\ninboundId\n\n</td><td>\n\nSys\\_id of the inbound call associated with the callback. Provides traceability linking the callback request to a specific inbound call record that might originate from a third-party provider or CCaaS platform.Table: Callback \\[sys\\_cs\\_callback\\], Field: provider\\_application\\_id\n\nData type: String\n\n</td></tr><tr><td>\n\nphoneNumber\n\n</td><td>\n\nPhone number of the caller.Data type: String of numbers\n\nFormat: E.164 standard compliant\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-entry-RESTAPI\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table><table class=\"rest_api_response_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"d2936e85\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table>### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|200|Successful. The request was successfully processed.|\n|400|Bad Request. A bad request type or malformed request was detected.|\n|500|Internal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.|\n\n### Response body parameters \\(JSON or XML\\)\n\n<table id=\"table_xp5_5td_fgc\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nerrors\n\n</td><td id=\"omni-response-errors-entry\">\n\nMessage containing details about the failures of the callback creation, like missing required request IDs.Data type: Array of strings\n\n```\n\"errors\": [\"String\", \"String\"]\n```\n\n</td></tr><tr><td>\n\nmessages\n\n</td><td id=\"omni-response-messages-entry\">\n\nMessage containing details about the success of the callback creation.Data type: Array of strings\n\n```\n\"messages\": [\"String\", \"String\"]\n```\n\n</td></tr><tr><td>\n\nresult\n\n</td><td id=\"omni-response-result-row\">\n\nResult of the request.Data type: Object\n\n```\n\"result\": {\n  \"status\": \"String\",\n  \"response\": {Object},\n  \"errors\": [Array],\n  \"messages\": [Array]\n}\n```\n\n</td></tr><tr><td>\n\nresult.response\n\n</td><td id=\"omni-response-result.response-entry\">\n\nObject containing callback and interaction IDs of the callback request.Data type: Object\n\n```\n\"response\": {\n  \"callback_created\": Boolean\n  \"callback_id\": \"String\",\n  \"interaction_id\": \"String\"\n}\n```\n\n</td></tr><tr><td>\n\nresult.response.callback\\_created\n\n</td><td id=\"omni-response-result.response.callback_created-entry\">\n\nFlag indicating whether the new callback request was created or not.\n\n Possible values:\n\n-   true: Callback was created successfully.\n-   false: Callback was not created. For example, the callback already exists with the given callback\\_id.\n\n Data type: Boolean\n\n</td></tr><tr><td>\n\nresult.response.callback\\_id\n\n</td><td id=\"omni-response-result.response.callback_id-entry\">\n\nSys\\_id of the new callback, if applicable.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.response.interaction\\_id\n\n</td><td id=\"omni-response-result.response.interaction_id-entry\">\n\nSys\\_id of the newly created interaction.Table: Interaction \\[interaction\\]\n\nData type: String\n\n</td></tr><tr><td>\n\nresult.status\n\n</td><td id=\"omni-response-result.status-entry\">\n\nSuccess or failure status of the request.Valid values:\n\n-   success\n-   failure\n\nData type: String\n\n</td></tr></tbody>\n</table>### cURL request\n\nThe following example updates some callback details in the associated callback request.\n\n```\ncurl -X POST 'https://instance.servicenow.com/api/sn_omni_callback/callback/update' \\ \n  -H 'Accept: application/json' \\ \n  -H 'Content-Type: application/json' \\ \n  -u 'username':'password' \\ \n  -d ' {\n  \"callbackDetails\": {\n    \"appointment\": \"68cc0a5a9314521060320dd548373cbd\",\n    \"description\": \"Customer reported issue with order #12345\",\n    \"short_description\": \"Order issue\",\n    \"reason_type\": \"product_issue\",\n    \"expire_time\": \"2025-09-01 17:00\",\n    \"messaging_channel\": \"web_channel_sys_id\",\n    \"channel_to_callback\": \"genesys_channel_sys_id\",\n    \"scheduled_start_time\": \"2025-09-01 1:00\",\n    \"end_time\": \"2025-09-01 17:00\",\n    \"user_document\": \"abel.tuter\",\n    \"user_table\": \"sys_user\"\n},\n  \"callbackContext\": {\n    \"queue\": \"5 value changed via api\",\n    \"ivr_path\": \"5 some-ivr-path changed via api\"\n  },\n  \"inboundId\": \"AmazonConnect\",\n  \"phoneNumber\": \"+14089178877\",\n  \"callbackId\": \"a16ead53fff0621088c6ffffffffffce\"\n}\n```\n\nResponse of a successful update to the valid, existing callback ID.\n\n```\n{\n  \"result\": {\n    \"status\": \"success\",\n    \"response\": {\n      \"callback_id\": \"952f763b53786210011eddeeff7b1297\"\n    },\n    \"messages\": [\n      \"Successfully updated the callback 952f763b53786210011eddeeff7b1297\"\n    ]\n  }\n}\n```\n\nResponse when an invalid callback ID is provided in the request:\n\n```\n\n  \"result\": {\n    \"status\": \"failure\",\n    \"response\": {\n      \"callbackId\": null\n    },\n    \"errors\": [\n      \"Callback not found for callback ID: 952f763b53786210011eddeef7b1297\"\n    ]\n  }\n}\n```\n\nResponse when a callback ID is missing in the request:\n\n```\n\n  \"result\": {\n    \"status\": \"failure\",\n    \"response\": {\n      \"callbackId\": null\n    },\n    \"errors\": [\n      \"Parameter 'callbackId' is required in request\"\n    ]\n  }\n}\n```\n\n## Omnichannel Callback - PATCH /api/sn\\_omni\\_callback/callback/close/\\{callback\\_number\\}\n\nCancels a given callback request.\n\n### URL format\n\nVersioned URL: `/api/{api_version}/sn_omni_callback/callback/close/{callback_number}`\n\nDefault URL: `/api/sn_omni_callback/callback/close/{callback_number}`\n\n### Supported request parameters\n\n<table class=\"rest_api_path_parameters\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\napi\\_version\n\n</td><td id=\"version-entry-RESTAPI\">\n\nOptional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String\n\n</td></tr><tr><td>\n\ncallback\\_number\n\n</td><td>\n\nSys\\_id or external\\_id of the callback to cancel.Table: Callback \\[sys\\_cs\\_callback\\]\n\nData type: String\n\n</td></tr></tbody>\n</table>|Name|Description|\n|----|-----------|\n|None| |\n\n<table class=\"rest_api_request_body\"><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nreason\n\n</td><td>\n\nOptional. Specifies to cancel the given callback. Value is always `Cancelled`. If **reason** isn't passed, the request is closed rather than cancelled.Data type: String\n\n</td></tr></tbody>\n</table>### Headers\n\nThe following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see [Supported REST API headers](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n<table class=\"rest_api_request_headers\"><thead><tr><th>\n\nHeader\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nAccept\n\n</td><td id=\"accept-entry-RESTAPI\">\n\nData format of the response body. Supported types: **application/json** or **application/xml**. Default: **application/json**\n\n</td></tr></tbody>\n</table>|Header|Description|\n|------|-----------|\n|None| |\n\n### Status codes\n\nThe following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see [REST API HTTP response codes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-api-explorer/c_RESTAPI.md).\n\n|Status code|Description|\n|-----------|-----------|\n|200|Successful. The request was successfully processed.|\n\n### Response body parameters\n\n<table><thead><tr><th>\n\nName\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nreason\n\n</td><td>\n\nReason for updating the callback request. Value is always `Cancelled` or `Closed`.Table: Callback \\[sys\\_cs\\_callback\\], Field: Reason\n\nData type: String\n\n```\n{\n\"reason\": \"Cancelled\"\n}\n```\n\n</td></tr></tbody>\n</table>### cURL request\n\nThe following request cancels the callback request with callback ID CAL0001234.\n\n```\ncurl -X POST \"https://instance.servicenow.com/api/sn_omni_callback/callback/close/CAL0001234\" \\\n  -H \"Accept: application/json\" \\\n  -H \"Content-Type: application/json\" \\\n  -u \"username:password\" \\\n  -d '{\n    \"reason\": \"Cancelled\"\n  }'\n\n```\n\nThe response body confirms the cancellation.\n\n```\n{\n\"reason\":\"Cancelled\"\n}\n```\n\n"}}