Zendesk Ticket-to-Interaction Mapping: 400 Bad Request on Digital Channel Webhook Payload

Migrating digital channels from Zendesk to Genesys Cloud feels like upgrading from simple ticket comments to live interaction overlays, but the webhook integration is hitting a wall. In Zendesk, we relied on static JSON payloads for ticket updates, but Genesys Cloud’s interaction API seems much stricter about schema validation.

When attempting to push a Zendesk ticket update to GC via the POST /api/v2/interactions/events:put endpoint, the system returns a 400 Bad Request with error code API_REQUEST_INVALID. The error message states: Field 'type' is required but missing in nested object 'routing'.

The Zendesk payload maps the ticket status to a GC interaction state, but the routing object structure appears different than expected. In Zendesk, an ‘Open’ ticket with a pending reply is clear. In GC, how does the WebRTC softphone handoff handle this metadata? Specifically, is the routing object expecting a specific skill group ID format that differs from Zendesk’s tag system?

Environment details:

  • Genesys Cloud Version: 2023-10 (Release 10)
  • Zendesk API Version: v2
  • Integration: Custom Node.js middleware handling the webhook

Has anyone seen this specific API_REQUEST_INVALID error when mapping Zendesk tags to GC routing skills? Any example payloads for the routing object would be incredibly helpful to bridge this gap.