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

# Create problem request

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

Reference: https://support.atomicwork.com/api-reference/atomicwork-public-api/problems/postapi-v-1-problems

## Authentication

- `X-Api-Key` header (required) — API Key authentication via header

## Request

### Headers

- `X-Workspace-Id` (string, optional)

### Body (application/json)

This endpoint expects an object.

- `request_type` (string, optional)
- `request_source` (enum, optional)
  - Allowed values: `EMAIL`, `SLACK`, `TEAMS`, `PORTAL`, `WORKFLOW`, `JOURNEY`, `API`, `UNIVERSAL_AGENT`
- `category` (string, optional)
- `subcategory` (string, optional)
- `cti_item` (string, optional)
- `description` (string, optional)
- `email_content` (string, optional)
- `status` (string, optional)
- `priority` (string, optional)
- `parent_request_id` (long, optional)
- `agent_group` (long, optional) — ID of the agent group to associate with the request. Members of this group are included in follower notifications when the group is also a request follower.
- `assignee` (long, optional) — ID of the user assigned to the request.
- `subject` (string, optional)
- `notes` (list of ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaNotesItems, optional)
- `workspace_id` (long, optional)
- `conversation_info` (ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaConversationInfo, optional)
- `tags` (list of long, optional)
- `cc_emails` (list of string, optional)
- `bcc_emails` (list of string, optional)
- `attachments` (list of long, optional)
- `requester` (long, optional)
- `to_email` (string, optional)
- `request_created_from` (ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaRequestCreatedFrom, optional)
- `custom_fields` (ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaCustomFields, optional)
- `created_at` (datetime, optional)
- `updated_at` (datetime, optional)
- `external_id` (string, optional)
- `external_source` (enum, optional)
  - Allowed values: `SAAS_GENIE`, `SNOW`, `JSM_BRIDGE`
- `resolution_time` (datetime, optional) — When the ticket was resolved in the source system. Only accepted during migration (requires external_id or external_source).
- `first_response_time` (datetime, optional) — When the first agent response occurred in the source system. Only accepted during migration (requires external_id or external_source).
- `first_response_due_time` (datetime, optional) — SLA due time for first response from the source system. Only accepted during migration (requires external_id or external_source).
- `resolution_due_time` (datetime, optional) — SLA due time for resolution from the source system. Only accepted during migration (requires external_id or external_source).
- `closed_status_at` (datetime, optional) — 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` (long, optional)
- `item_fields` (ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaItemFields, optional)
- `impact` (string, optional)
- `urgency` (string, optional)
- `assets` (list of long, optional)

## Response

### 200

Successful response

## Types

### ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaNotesItems

Payload to create a request note. Mentions (`mentions`) and agent-group mentions (`agent_group_mentions`) can be supplied. Public notes notify the requester, assignee and all followers (direct users plus members of any agent groups following the request, de-duplicated). Agent groups listed in `agent_group_mentions` are added as request followers.

- `user_id` (long, optional)
- `conversation_id` (long, optional) — When set, the reply is mirrored into this conversation's thread (UAG).
- `description` (string, optional)
- `mentions` (list of long, optional) — User IDs mentioned in the note. Mentioned users are notified and added as direct followers.
- `agent_group_mentions` (list of long, optional) — Agent group IDs mentioned in the note. Members of these groups are notified and the groups are added as request followers.
- `is_private` (boolean, optional, default: false)
- `source` (enum, optional)
  - Allowed values: `EMAIL`, `SLACK`, `TEAMS`, `PORTAL`, `WORKFLOW`, `JOURNEY`, `API`, `UNIVERSAL_AGENT`
- `type` (enum, optional)
  - Allowed values: `ESD_NOTE`, `SLACK_NOTE`, `EMAIL_NOTE`, `RATING`, `TEMPLATE`, `WORKFLOW_NOTE`
- `attachments` (list of long, optional)
- `cc_emails` (list of string, optional)
- `bcc_emails` (list of string, optional)
- `is_broadcast` (boolean, optional, default: false)
- `external_id` (string, optional)
- `external_source_type` (enum, optional)
  - Allowed values: `SAAS_GENIE`, `SNOW`, `JSM_BRIDGE`
- `email_content` (string, optional)
- `event_created_at` (datetime, optional) — 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.
- `transition` (ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaNotesItemsTransition, optional) — Applied in the same transaction as the note: both commit, or neither does. Takes the same body PATCH /requests/\{requestId} accepts

### ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaConversationInfo

- `start_timestamp` (string, required)
- `channel_name` (string, optional)
- `channel_id` (string, optional)

### ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaRequestCreatedFrom

- `id` (string, optional)
- `type` (enum, optional)
  - Allowed values: `REQUEST_SETTINGS`

### ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaCustomFields

### ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaItemFields

### ApiV1ProblemsPostRequestBodyContentApplicationJsonSchemaNotesItemsTransition

Applied in the same transaction as the note: both commit, or neither does. Takes the same body PATCH /requests/\{requestId} accepts

## Examples

**Request**

```json
{}
```

**Response**

```json
{}
```

**SDK Code**

```python Problems_postapi_v1_problems_example
import requests

url = "https://{tenant}.atomicwork.com/api/v1/problems"

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 Problems_postapi_v1_problems_example
const url = 'https://{tenant}.atomicwork.com/api/v1/problems';
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 Problems_postapi_v1_problems_example
package main

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

func main() {

	url := "https://{tenant}.atomicwork.com/api/v1/problems"

	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 Problems_postapi_v1_problems_example
require 'uri'
require 'net/http'

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

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 Problems_postapi_v1_problems_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

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

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

$client = new \GuzzleHttp\Client();

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

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

```csharp Problems_postapi_v1_problems_example
using RestSharp;

var client = new RestClient("https://{tenant}.atomicwork.com/api/v1/problems");
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 Problems_postapi_v1_problems_example
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/problems")! 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()
```