Skip to content
Release: Australia · Updated: 2026-03-12 · Official documentation · View source

AWA Manual Assignment API

The AWA Manual Assignment API provides an endpoint to manually assign available work items to available Advanced Work Assignment (AWA) agents.

A work item is a single piece of work handled by an AWA agent from start to finish. For example, one chat or one case is an object that can be routed and assigned to agents. For more information, refer to Advanced Work Assignment.

This API requires the Advanced Work Assignment (com.glide.awa) plugin. To call this API, you must have either the awa_manager or awa_integration_user role.

Parent Topic:REST API reference

AWA Manual Assignment – POST /now/awa/workitems/{work_item_sys_id}/assignments

Assigns an available work item to an available Advanced Work Assignment (AWA) agent.

The primary use case for this endpoint is to enable external routing systems to route work items. If Advanced Work Assignment is configured to use external routing, work items in the queue are assigned using external routing and not AWA. You can assign the work item task by calling this endpoint. For more information, refer to Use external routing.

URL format

Versioned URL: /now/{api_version}/awa/workitems/{sys_id}/assignments

Default URL: /now/awa/workitems/{sys_id}/assignments

Note: Available versions are specified in the REST API Explorer. For scripted REST APIs there is additional version information on the Scripted REST Service form.

Supported request parameters

NameDescription
api\_versionOptional. 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
work\_item\_sys\_id

Sys_id of the work item to assign to an available agent. The work item must be unassigned and in the Pending Accept or Queued state. For more information, refer to Check unassigned task work items.

Data type: String

Table: Work Items [awa_work_item]

NameDescription
None 
NameDescription
after\_timeout\_presence

Sys_id of the presence state that the agent switches to if the timeout parameter expires.If the timeout parameter isn't passed, this parameter is ignored.

For additional information on presence states, see Configure agent presence states.

Data type: String

Default: "" (Empty string)

Table: AWA Presence State [awa_presence_state]

agent\_sys\_idRequired. Sys\_id of the available agent to receive the work item. Agents are users with the awa\_agent role.For information on how to determine if an agent is available, refer to Agent Inbox controls. Data type: String Table: User \[sys\_user\]
allowed\_to\_decline

Flag that indicates whether agents are allowed to reject work items. If this parameter is true, the inbox card displays both the Accept and Reject buttons on the inbox card.Valid values:

  • true/yes/1: Agent can reject work items.
  • false/no/0: Agent can't reject work items.

Data type: Boolean

Default: true

display\_option

Display option for the card and tab when a work item is automatically assigned. This parameter is only valid if the enable_auto_assign is passed as true.

Valid values:

  • card_and_tab: Display both the card and tab.
  • card_only: Display only the card.

Data type: String

Default: card_only

enable\_auto\_assignFlag that indicates whether the work item should be automatically accepted or should allow the agent to manually accept or reject the work item.Valid values: - true/yes/1: Automatically accept. - false/no/0: Allow agent to manually accept or reject. Data type: Boolean Default: false
offered\_on

Work item offer time. The offer time is used to calculate the remaining time the agent has left to accept the work item in the inbox. It helps account for the discrepancy between the time when the API request gets processed, and when the third-party routing system invokes the API request. This parameter allows external systems calling this endpoint to configure the offer time of the work item so that it stays in synchronization with the external system’s internal tracking of the work item.For example, if the work item was offered on 11:30:30, the timeout is 30 seconds, and the current time is 11:30:45, the countdown timer displays 00:15 (as in 15 seconds remaining).

This value is stored in the offered_on field on the work item.

This parameter is ignored if the timeout parameter isn't passed.

Data type: String

Format: UTC timestamp (yyyy-MM-dd'T'HH:mm:ss.SSS)

timeoutAmount of time that the work item stays in the agent’s inbox waiting for the agent to accept the work assignment.Data type: Number Unit: Seconds

Headers

The 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.

HeaderDescription
AcceptData format of the response body. Supported types: application/json or application/xml. Default: application/json
Content-TypeData format of the request body. Supported types: application/json or application/xml. Default: application/json
HeaderDescription
None 

Status codes

The 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.

Status codeDescription
200Successful. The request was successfully processed.
401Unauthorized. The user credentials are incorrect or have not been passed.
404Not found. The requested item wasn't found.
409Conflict. The request couldn't pass due to an error with the provided work item or agent sys_id.
500Internal server error. An unexpected error occurred while processing the request. The response contains additional information about the error.

Response body parameters (JSON or XML)

NameDescription
successFlag that indicates whether the manual work item assignment is successful.Possible values: - true: Work item assignment successful. - false: Work item assignment unsuccessful. Data type: Boolean
message

Response message acknowledging successful assignment or an exception.Success: "Manual assignment successfully requested."

Exceptions:

  • "<work_item_sys_id> is not a valid work item" – Provided work item sys_id does not exist.
  • "Caller <API_caller_sys_id> does not have the awa_manager or awa_integration_user role" – The authenticated user making the API request must have either the awa_manager or awa_integration_user role.
  • "Work item <work_item_sys_id> cannot be assigned" – Work item provided cannot be assigned because it is in Accepted or Canceled state. Refer to Check work items and AWA events.
  • "<agent_sys_id> is not a valid agent" – Agent does not have the awa_agent role.
  • "Work Item is already assigned to <agent_sys_id>" – Provided work item is assigned to another agent.
  • "Agent is not available" – Agent is not in the Available state in AWA. Refer to Agent Inbox controls.
  • "Timeout value cannot be negative" – Provided timeout value cannot be a negative value.
  • "<presence_state_sys_id> is not a valid presence state” – Provided presence state sys_id doesn't exist in the AWA Presence State [awa_presence_state] table.
  • "Offered time (<offered_on_timestamp>) must be in the following format: yyyy-MM-dd'T'HH:mm:ss.SSS" – Provided offered_on timestamp must be in the specified format.
  • "Offered time (<offered_on_timestamp >) must be before the current time, otherwise agent will have more time to accept the work item" – Provided offered_on timestamp can't be before the time the request is made.
  • "Timestamp after timeout (<offered_on_timestamp >) must be after the current time, otherwise agent has no time to accept the work item" – The timestamp after adding the timeout value to the provided offered_on timestamp must be after the time the request was made.
  • "<display_option> is not a valid display option" – Provided display_option must be either of the following values: "card_only” or “card_and_tab"
  • "%s is not a valid boolean value" – Provided Boolean-type value must be in one of the following Boolean formats: "yes"/"no", "true"/"false", "1"/"0"

Data type: String

cURL request

The following example shows how to assign a work item to an available AWA agent using only the required parameters.

curl "https://instance.servicenow.com/api/now/awa/workitems/<work_item_sys_id>/assignments" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{\"agent_sys_id\":\"<agent_sys_id>\"}" \
--user 'username':'password'

The result shows that the task has been successfully assigned to the agent. You can verify results in the Assigned to field of the Work Items [awa_work_item] table.

{
  "result": {
    "success": true,
    "message": "Manual assignment successfully requested."
  }
}

cURL request

The following example shows how to assign a work item to an available AWA agent including the optional parameters.

curl "https://instance.servicenow.com/api/now/awa/workitems/<work_item_sys_id>/assignments" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data '{
    "agent_sys_id": "46d44a23a9fe19810012d100cca80666",
    "timeout":"10",
    "offered_on":"2024-04-03T23:09:31.000"
  }'
--user 'username':'password'

The result shows that the task has been successfully assigned to the agent. You can verify results in the Assigned to field of the Work Items [awa_work_item] table.

{
  "result": {
    "success": true,
    "message": "Manual assignment successfully requested."
  }
}