Submit ticket from PHP

We encourage customers to make use of our API in those cases where Zendesk's user portal isn't flexible enough or you want to embed a simple form on your own site.

Here is a very simple script that submits a ticket from PHP.


$url = " http://SUBDOMAIN.zendesk.com/tickets.xml "; $request = "<ticket><subject>I need help!</subject><description>PHP Test</description><requester\_email> requester-email@domain.com </requester\_email></ticket>"; $headers = array('Content-type: application/xml','Content-Length: ' . strlen($request));

$ch = curl_init(); curl_setopt($ch, CURLOPT_USERPWD, 'USERNAME:PASSWORD'); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_HEADER, true);

$http_result = curl_exec($ch); $error = curl_error($ch); $http_code = curl_getinfo($ch ,CURLINFO_HTTP_CODE);


if ($error) { print "<br /><br />$error"; } else { if (preg_match("/Location: .*\/tickets\/(\d*).xml/", $http_result, $matches)) { $ticket_id = $matches[1]; print "Ticket submitted: $ticket_id\n"; } print "<br /><br />Location header not found"; }


You must replace three strings in the script before running it:

  • SUBDOMAIN is the subdomain of your helpdesk, e.g. myhelpdesk.zendesk.com
  • LOGIN must be the email address of an agent registered in your Zendesk account
  • PASSWORD must be the password of the agent

You can also pass custom fields in by adding a something like this:

<fields><51>Custom field value</51></fields>

inside the <ticket></ticket> tags. The ID of the custom field is shown in the sidebar when you edit the field under Manage|Ticket fields.


Please sign in to leave a comment.
Help them find what they're looking for
Create an online destination for 24/7 support with Zendesk