Skip to main content
blog title image

3 minute read - API Testing API Challenges

Challenge 24 - How To - POST todos JSON accept XML

Jul 18, 2021

This post and video shows how to complete the challenge POST /todos JSON to XML to send a POST request to create a todo item using JSON but receive XML response.

What are the API Challenges?

Our API Challenges Application has a fully functional cloud hosted API, and a set of challenges to work through.

POST /todos XML to JSON

Issue a POST request on the /todos end point to create a todo using Content-Type application/json but Accept application/xml

  • POST request means we will send information in the body of the message
    • e.g. POST /todos sends to the todos endpoint
  • create a todo means that the payload will be valid data to create a todo item
  • using Content-Type application/json means that we will set content-type header to application/json and the payload will be in JSON format
  • Accept application/xml means add an accept header of application/xml to receive the response in JSON format
  • add the X-CHALLENGER header to track progress

Basic Instructions

We can mix different accept and content-types so we can send payloads in one format, and receive responses in another format. This challenge is about sending payload in JSON but having the response in XML.

  • Issue a POST request to end point “/todos”
    • if running locally that endpoint would be
      • http://localhost:4567/todos
    • if running in the cloud that endpoint would be
  • The request should have an Content-Type header of application/json
  • add a valid payload in JSON format to create a todo item e.g.
        "title": "create todo process payroll",
        "doneStatus": true,
        "description": ""
  • add an accept header of application/xml to receive the response in XML format
  • The request should have an X-CHALLENGER header to track challenge completion
  • The response status code should be 201 when all the details are valid.
  • Check the body of the response has XML formatted todo item with full details of the created item
  • Check the location header for the REST API call to retrieve details of the created item


  • try GET the location header URL to return the created todo item


> POST /todos HTTP/1.1
> Host:
> User-Agent: insomnia/2021.2.2
> X-CHALLENGER: x-challenger-guid
> Content-Type: application/json
> accept: application/xml
> Content-Length: 106

|    {
|       "title": "create todo process payroll",
|       "doneStatus": true,
|       "description": ""
|     }

< HTTP/1.1 201 Created
< Connection: close
< Date: Sun, 18 Jul 2021 09:03:58 GMT
< Content-Type: application/xml
< Location: todos/320
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: *
< X-Challenger: x-challenger-guid
< Server: Jetty(9.4.z-SNAPSHOT)
< Via: 1.1 vegur

Example Response body:

   <title>create todo process payroll</title>

Overview Video

Patreon ad free version

Learn More and Start Testing