> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer-test.atomicwork.com/llms.txt.
> For full documentation content, see https://developer-test.atomicwork.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-test.atomicwork.com/_mcp/server.

# Create service request for item

POST https://{tenant}.atomicwork.com/api/v1/requests/items/{item_id}
Content-Type: application/json

Reference: https://developer-test.atomicwork.com/atomicwork-public-api/requests/postapi-v-1-requests-items-item-id

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: collection
  version: 1.0.0
paths:
  /api/v1/requests/items/{item_id}:
    post:
      operationId: postapi-v-1-requests-items-item-id
      summary: Create service request for item
      tags:
        - subpackage_requests
      parameters:
        - name: item_id
          in: path
          description: The item ID
          required: true
          schema:
            type: integer
            format: int64
        - name: X-Api-Key
          in: header
          required: true
          schema:
            type: string
        - name: X-Workspace-Id
          in: header
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Requests_postapi_v1_requests_items__item_id_Response_200
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                request_type:
                  type: string
                request_source:
                  $ref: >-
                    #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestSource
                description:
                  type: string
                email_content:
                  type: string
                plain_text_description_override:
                  type: string
                  description: >
                    Internal-only override for the persisted plain-text
                    rendering of the description. When non-empty,
                    AbstractRequestService persists it as
                    RequestDetail.description instead of running
                    HTMLSanitizerUtil.getPlainText() on the HTML description.

                    Set ONLY by the email ingestion path
                    (EmailIntentBasedRequestCreationService), which derives it
                    from reqDescription via
                    normalizeHtmlToPlainText(getPlainTextForRichHtml(...)) so
                    system-generated HTML emails (BlackLine offboarding, etc.)
                    avoid mashed table cells and blank-line storms.

                    Annotated @JsonIgnore so external HTTP clients cannot set it
                    via the request body — without that annotation, any caller
                    of POST /requests, /service-requests, /incidents could write
                    arbitrary unsanitized text into RequestDetail.description,
                    bypassing the getPlainText() pipeline. The Lombok
                    @SuperBuilder still exposes a setter for in-process Java
                    callers (the email path), since builder access does not go
                    through Jackson.
                status:
                  type: string
                priority:
                  type: string
                parent_request_id:
                  type: integer
                  format: int64
                agent_group:
                  type: integer
                  format: int64
                assignee:
                  type: integer
                  format: int64
                subject:
                  type: string
                notes:
                  type: array
                  items:
                    $ref: >-
                      #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItems
                workspace_id:
                  type: integer
                  format: int64
                conversation_info:
                  $ref: >-
                    #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaConversationInfo
                tags:
                  type: array
                  items:
                    type: integer
                    format: int64
                cc_emails:
                  type: array
                  items:
                    type: string
                bcc_emails:
                  type: array
                  items:
                    type: string
                attachments:
                  type: array
                  items:
                    type: integer
                    format: int64
                requester:
                  type: integer
                  format: int64
                to_email:
                  type: string
                request_created_from:
                  $ref: >-
                    #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestCreatedFrom
                custom_fields:
                  $ref: >-
                    #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaCustomFields
                created_at:
                  type: string
                  format: date-time
                updated_at:
                  type: string
                  format: date-time
                external_id:
                  type: string
                external_source:
                  $ref: >-
                    #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaExternalSource
                resolution_time:
                  type: string
                  format: date-time
                  description: >
                    When the ticket was resolved in the source system. Only
                    accepted during migration (requires external_id or
                    external_source).
                first_response_time:
                  type: string
                  format: date-time
                  description: >
                    When the first agent response occurred in the source system.
                    Only accepted during migration (requires external_id or
                    external_source).
                first_response_due_time:
                  type: string
                  format: date-time
                  description: >
                    SLA due time for first response from the source system. Only
                    accepted during migration (requires external_id or
                    external_source).
                resolution_due_time:
                  type: string
                  format: date-time
                  description: >
                    SLA due time for resolution from the source system. Only
                    accepted during migration (requires external_id or
                    external_source).
                closed_status_at:
                  type: string
                  format: date-time
                  description: >
                    When the ticket was moved to closed status in the source
                    system. Only accepted during migration (requires external_id
                    or external_source). When provided with a closed status,
                    also sets resolution_time if not explicitly provided.
                item_id:
                  type: integer
                  format: int64
                item_fields:
                  $ref: >-
                    #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaItemFields
servers:
  - url: https://{tenant}.atomicwork.com
components:
  schemas:
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestSource:
      type: string
      enum:
        - EMAIL
        - SLACK
        - TEAMS
        - PORTAL
        - WORKFLOW
        - JOURNEY
        - API
        - UNIVERSAL_AGENT
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestSource
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsSource:
      type: string
      enum:
        - EMAIL
        - SLACK
        - TEAMS
        - PORTAL
        - WORKFLOW
        - JOURNEY
        - API
        - UNIVERSAL_AGENT
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsSource
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsType:
      type: string
      enum:
        - ESD_NOTE
        - SLACK_NOTE
        - EMAIL_NOTE
        - RATING
        - TEMPLATE
        - WORKFLOW_NOTE
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsType
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsExternalSourceType:
      type: string
      enum:
        - SAAS_GENIE
        - SNOW
        - JSM_BRIDGE
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsExternalSourceType
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItems:
      type: object
      properties:
        user_id:
          type: integer
          format: int64
        description:
          type: string
        mentions:
          type: array
          items:
            type: integer
            format: int64
        is_private:
          type: boolean
          default: false
        source:
          $ref: >-
            #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsSource
        type:
          $ref: >-
            #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsType
        attachments:
          type: array
          items:
            type: integer
            format: int64
        cc_emails:
          type: array
          items:
            type: string
        bcc_emails:
          type: array
          items:
            type: string
        is_broadcast:
          type: boolean
          default: false
        external_id:
          type: string
        external_source_type:
          $ref: >-
            #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItemsExternalSourceType
        email_content:
          type: string
        event_created_at:
          type: string
          format: date-time
          description: >-
            Event creation timestamp. When provided via public API, also
            backdates the note's created time, SLA metrics, and activity
            timestamps. Must not be in the future or before the request's
            creation time.
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaNotesItems
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaConversationInfo:
      type: object
      properties:
        channel_name:
          type: string
        channel_id:
          type: string
        start_timestamp:
          type: string
          format: unix-timestamp
      required:
        - start_timestamp
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaConversationInfo
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestCreatedFromType:
      type: string
      enum:
        - REQUEST_SETTINGS
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestCreatedFromType
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestCreatedFrom:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: >-
            #/components/schemas/ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestCreatedFromType
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaRequestCreatedFrom
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaCustomFields:
      type: object
      properties: {}
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaCustomFields
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaExternalSource:
      type: string
      enum:
        - SAAS_GENIE
        - SNOW
        - JSM_BRIDGE
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaExternalSource
    ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaItemFields:
      type: object
      properties: {}
      title: >-
        ApiV1RequestsItemsItemIdPostRequestBodyContentApplicationJsonSchemaItemFields
    Requests_postapi_v1_requests_items__item_id_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: Requests_postapi_v1_requests_items__item_id_Response_200
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key

```

## SDK Code Examples

```python
import requests

url = "https://{tenant}.atomicwork.com/api/v1/requests/items/12345"

payload = {}
headers = {
    "X-Workspace-Id": "{{workspace_id}}",
    "X-Api-Key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant}.atomicwork.com/api/v1/requests/items/12345';
const options = {
  method: 'POST',
  headers: {
    'X-Workspace-Id': '{{workspace_id}}',
    'X-Api-Key': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://{tenant}.atomicwork.com/api/v1/requests/items/12345"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-Workspace-Id", "{{workspace_id}}")
	req.Header.Add("X-Api-Key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://{tenant}.atomicwork.com/api/v1/requests/items/12345")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-Workspace-Id"] = '{{workspace_id}}'
request["X-Api-Key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://{tenant}.atomicwork.com/api/v1/requests/items/12345")
  .header("X-Workspace-Id", "{{workspace_id}}")
  .header("X-Api-Key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://{tenant}.atomicwork.com/api/v1/requests/items/12345', [
  'body' => '{}',
  'headers' => [
    'Content-Type' => 'application/json',
    'X-Api-Key' => '<apiKey>',
    'X-Workspace-Id' => '{{workspace_id}}',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://{tenant}.atomicwork.com/api/v1/requests/items/12345");
var request = new RestRequest(Method.POST);
request.AddHeader("X-Workspace-Id", "{{workspace_id}}");
request.AddHeader("X-Api-Key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "X-Workspace-Id": "{{workspace_id}}",
  "X-Api-Key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{tenant}.atomicwork.com/api/v1/requests/items/12345")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```