Cross-Provider Workflow

Claude Classify Inbound Message to Zendesk Ticket

Version 1.0.0

Classify an inbound message with Claude, then open a Zendesk ticket.

1 workflow 2 source APIs 2 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

claude zendesk

Workflows

classify-and-route
Classify a message with Claude and create a Zendesk ticket.
Calls Claude to classify the inbound message, captures the classification label, and creates a Zendesk ticket using the original message and label.
2 steps inputs: message, model, subject outputs: label, ticketId
1
classify-message
$sourceDescriptions.claudeApi.createMessage
Ask Claude to classify the inbound message.
2
create-ticket
$sourceDescriptions.zendeskApi.CreateTicket
Open a Zendesk ticket carrying the classification label.

Source API Descriptions

Arazzo Workflow Specification

ai-claude-classify-to-zendesk-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Claude Classify Inbound Message to Zendesk Ticket
  summary: Classify an inbound message with Claude, then open a Zendesk ticket.
  description: >-
    A cross-provider AI enrichment chain that asks Claude to classify an inbound
    customer message into a priority category and then opens a Zendesk support
    ticket carrying that classification. Demonstrates AI-driven triage routing
    into a support system in one Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: claudeApi
    url: https://raw.githubusercontent.com/api-evangelist/claude/refs/heads/main/openapi/claude-messages-api.yml
    type: openapi
  - name: zendeskApi
    url: https://raw.githubusercontent.com/api-evangelist/zendesk/refs/heads/main/openapi/tickets-openapi-original.yml
    type: openapi
workflows:
  - workflowId: classify-and-route
    summary: Classify a message with Claude and create a Zendesk ticket.
    description: >-
      Calls Claude to classify the inbound message, captures the classification
      label, and creates a Zendesk ticket using the original message and label.
    inputs:
      type: object
      properties:
        message:
          type: string
        model:
          type: string
        subject:
          type: string
    steps:
      - stepId: classify-message
        description: Ask Claude to classify the inbound message.
        operationId: $sourceDescriptions.claudeApi.createMessage
        requestBody:
          contentType: application/json
          payload:
            model: $inputs.model
            max_tokens: 64
            messages:
              - role: user
                content: "Classify this support message as one of: billing, technical, account. Reply with only the label. Message: $inputs.message"
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          label: $response.body#/content/0/text
      - stepId: create-ticket
        description: Open a Zendesk ticket carrying the classification label.
        operationId: $sourceDescriptions.zendeskApi.CreateTicket
        requestBody:
          contentType: application/json
          payload:
            ticket:
              subject: $inputs.subject
              comment:
                body: $inputs.message
              tags:
                - $steps.classify-message.outputs.label
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          ticketId: $response.body#/ticket/id
    outputs:
      label: $steps.classify-message.outputs.label
      ticketId: $steps.create-ticket.outputs.ticketId