# Create Request — Jira Service Desk

> Creates a customer request (ticket) in a Jira Service Management service desk. This is the single tool for creating any kind of ticket (incident, service request, access request, hardware request, and so on). The kind of ticket is decided…

- Key: `jira_service_desk-create-request`
- Type: Action (Write)
- Version: 1.1.1
- App: Jira Service Desk (`jira_service_desk`) — https://pipedream.com/apps/jira-service-desk.md
- This page (HTML): https://pipedream.com/apps/jira-service-desk/actions/create-request
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/jira_service_desk/actions/create-request/create-request.mjs

## Description

Creates a customer request (ticket) in a Jira Service Management service desk. This is the single tool for creating any kind of ticket (incident, service request, access request, hardware request, and so on). The kind of ticket is decided by `requestTypeId`, not by the wording of the summary, so always pick the request type deliberately. Use **List Sites** to get `cloudId`, **List Service Desks** to get `serviceDeskId`, and **List Request Types** to choose the `requestTypeId` whose name and description match the user's intent. Call **List Request Type Fields** to see which fields that request type requires; pass anything beyond summary and description in `additionalFieldValues`, keyed by Jira field ID. Worked example: on service desk `1`, request type `4` ("Onboard new employees") requires `summary` and also accepts a `duedate`, so call with Summary `Joseph Wilson starts on September 1`, Description `Needs a laptop and an email account`, and Additional Field Values `{ "duedate": "2026-09-01" }`. Optionally attach one or more files at creation time via `attachments`; to add, replace, or delete attachments on a request that already exists, use **Manage Request Attachment** instead. Returns the created request including its `issueKey` and `issueId`. If `attachments` is set, the response also includes either an `attachments` array (on success) or an `attachmentError` string (if the request was created but the attachment step failed) — the request itself is never rolled back because of an attachment failure. [See the documentation](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-request/#api-rest-servicedeskapi-request-post)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `cloudId` | `string` | Yes | The Atlassian site (cloud) ID, e.g. 822faf0d-5427-420e-9016-999d3dc76918. Run List Sites to get the id of every site you can access. |
| `serviceDeskId` | `string` | Yes | The service desk to raise the request in. Use List Service Desks to find valid IDs (e.g. 1). |
| `requestTypeId` | `string` | Yes | The request type that determines what kind of ticket this is. Use List Request Types to see the types this service desk offers and pick the one matching the user's intent (e.g. 8 for "Report a system problem"). |
| `summary` | `string` | Yes | One-line title of the request, e.g. Laptop won't boot after the latest update. Required by virtually every request type. |
| `description` | `string` | No | Body of the request, as plain text. |
| `additionalFieldValues` | `object` | No | Any other fields the chosen request type requires or accepts, as a JSON object of Jira field ID to value, e.g. { "duedate": "2026-09-01", "customfield_10052": "Laptop" }. Run List Request Type Fields for the exact fieldIds, which are required, and their schemas. Values that parse as JSON are converted (["a","b"] becomes a list, 5 becomes a number); to keep a numeric-looking value a string, wrap it in quotes ("\"123\""). Keys summary and description given here override the props above. |
| `requestParticipants` | `string[]` | No | Atlassian account IDs to add as participants, e.g. ["5b10a2844c20165700ede21g"]. Run Find Users to turn each name or email address into an accountId; participants are often approvers or managers who are not customers of this desk, which is why this uses the site-wide search rather than Find Service Desk Customers. Not available to users who only have the Service Desk Customer permission, or if the feature is turned off for customers. |
| `raiseOnBehalfOf` | `string` | No | Atlassian account ID of the customer to raise this request for, e.g. 5b10a2844c20165700ede21g. Run Find Service Desk Customers with this same Service Desk ID to turn a name or email address into an accountId, which also confirms the person is a customer of this desk; fall back to Find Users if they are not found there. A desk that restricts who may be one of its customers can reject a reporter who is not, so if creation then fails on the reporter field, retry without this field and name the requester in the description instead. Never guess an ID, and never pass a name or email address here. Not available to users who only have the Service Desk Customer permission. |
| `form` | `object` | No | Answers to the form attached to the request type, as { "answers": { "<questionId>": { "text": "..." } } }. Omit any Jira field from additionalFieldValues when it is linked to a form answer here. For answers in ADF, also set isAdfRequest to true. |
| `isAdfRequest` | `boolean` | No | Set to true to send rich-text fields (such as description) as Atlassian Document Format objects rather than plain text. Leave unset to send plain strings. When true, do not use the Description prop, which only sends plain text: pass the ADF object as a JSON string under the description key of additionalFieldValues instead. Marked experimental by Atlassian. |
| `channel` | `string` | No | Extra information about the channel the request came in on. Marked experimental by Atlassian. |
| `attachments` | `string[]` | No | File(s) to attach to the request as it's created. Provide file URLs or paths to files in the /tmp directory (e.g. /tmp/myFile.pdf). |
| `attachmentsPublic` | `boolean` | No | Whether the attached file(s) are visible to the customer who raised the request. Defaults to true; set to false to attach internal-only files. |
| `syncDir` | `dir` | No | SyncDir |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "jira_service_desk",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "jira_service_desk-create-request",
  arguments: {
    cloudId: "Cloud ID",
    serviceDeskId: "Service Desk ID",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "jira_service_desk-create-request",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    jira_service_desk: { authProvisionId: "apn_xxxxxxx" },
    cloudId: "Cloud ID",
    serviceDeskId: "Service Desk ID",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "jira_service_desk-create-request",
    "configured_props": {
      "jira_service_desk": { "authProvisionId": "apn_xxxxxxx" },
      "cloudId": "Cloud ID",
      "serviceDeskId": "Service Desk ID"
    }
  }'
```

---

- App: https://pipedream.com/apps/jira-service-desk.md · All apps: https://pipedream.com/apps
