Service Desk Partner API

Creating Requests

Open a Service Desk ticket for a customer through the API, dated to when they actually wrote, with safe retries.

POST /service-desk/requests opens a ticket on behalf of a customer. It goes through exactly the same intake as an email to your support address: the requester is found or created (and confirmed, since your API key vouches for them), the ticket is created with channel api, SLA clocks start, and automations and webhooks fire. DevStride sends the customer no acknowledgement email for an API request.

Needs: Create Items and Workstreams, and edit access to the parent workstream or item.

Request

FieldRequiredMeaning
titleYesThe ticket title.
requesterEmailYesThe customer. Matched case-insensitively to an existing requester, or created.
requesterNameNoDisplay name for a new requester.
parentNumberYesWhere the ticket is filed, for example F42 (a workstream) or I7.
workTypeIdYesThe ticket's work type.
body.htmlNoThe customer's message, shown on the ticket as its customer-visible description.
priorityId, dueDate, customFieldsNoAs on any work item.
externalIdNoYour id for this message; makes retries safe.
sentAtNoWhen the customer actually wrote, ISO 8601 with an offset. See below.
curl -X POST "https://api.devstride.com/v1/organizations/$ORG_ID/service-desk/requests" \
  -u "$DEVSTRIDE_API_KEY:$DEVSTRIDE_API_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Cannot reset my password",
    "requesterEmail": "jane@acme.com",
    "requesterName": "Jane Doe",
    "parentNumber": "F42",
    "workTypeId": "1a2b3c4d-5678-90ab-cdef-1234567890ab",
    "body": { "html": "<p>The reset link 404s for me.</p>" },
    "externalId": "inbound-5521",
    "sentAt": "2026-10-23T14:02:00Z"
  }'

The response is the created ticket (data.number, data.requesterId, data.channel: "api", and the rest of the work item).

Dating a request to when the customer wrote: sentAt

If your tool received the message a while before it reached DevStride, send sentAt. The ticket is dated to it, and its first-response and resolution deadlines, and their at-risk warnings, count from it rather than from when DevStride received the call. A customer who wrote 20 minutes before your processor forwarded the message is measured from when they wrote.

  • A time up to five minutes ahead of DevStride's clock (your clock is slightly fast) is treated as now.
  • A time further in the future, or before the year 2000, is refused with 400.
  • A sentAt older than the whole SLA window breaches on arrival, because the promise was already missed.
  • It is a live message, not an import: notifications and automations run as for any new ticket.

Retries

Resend with the same externalId and the response is the ticket created the first time; nothing new is created. A key already used for a customer or staff reply is refused with 400.