Send API requests to Customer Management Service

This section shows how to send requests by using cURL

cURL is a command-line tool that you can use to interact with REST
interfaces. cURL lets you transmit and receive HTTP requests and
responses from the command line or a shell script, which enables you to
work with the API directly. cURL is available for Linux distributions,
Mac OS® X, and Microsoft Windows®. For information about cURL, see

To run the cURL request examples shown in this guide on Mac OS® X or
another Linux-based operating system, you should be able to copy each
example directly to the command line or a script.


The cURL examples in this guide are provided for reference only. Because
the use of cURL has environmental dependencies, copying and pasting the
examples might not work in your environment.

The following example shows a cURL command for sending an authentication
request to the Identity service.

Example: cURL command for sending a JSON request

$ curl  \
-d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"yourUserName",
"apiKey":"$apiKey"}}}' \
-H "Content-type: application/json" | python -m json.tool

In this example, $apiKey is an environment variable that stores your
API key value. Environment variables make it easier to reference account
information in API requests, to reuse the same cURL commands with
different credentials, and to keep sensitive information like your API
key from being exposed when you send requests to Rackspace Cloud API


The cURL request examples use a backslash (\) as a line-continuation
symbol, which allows the command to continue across multiple lines.

The cURL examples in this guide use the following command-line options.

-dSends the specified data in a POST request to the HTTP server. Use this option to send a JSON request body to the server.


Specifies an extra HTTP header in the request. You can specify any number of extra headers. Precede each header with the -H option.

Common headers in Rackspace API requests are as follows:

  • Content-Type: Required for operations with a request body.

    Specifies the format of the request body. Following is the syntax for the header where format is json:

    Content-Type: application/json
  • X-Auth-Token: Required. Specifies the authentication token.

  • X-Auth-Project-Id: Optional. Specifies the project ID, which can be your account number or another value.

  • Accept: Optional. Specifies the format of the response body.

    Following is the syntax for the header where the format is json, which is the default:

    Accept: application/json
-iIncludes the HTTP header in the output.


Specifies silent or quiet mode, which makes cURL mute. No progress or error messages are shown.

If your cURL command is not generating any output, try replacing the -s option with -i.

-TTransfers the specified local file to the remote URL.
-XSpecifies the request method to use when communicating with the HTTP server. The specified method is used instead of the default method, which is GET.

For commands that return a response, you can use json.tool to
pretty-print the output. Append the following command to the cURL call:

| python -m json.tool

To use json.tool, import the JSON module. For information about
json.tool, see JSON encoder and decoder.

If you run a Python version earlier than 2.6, import the simplejson
module and use simplejson.tool. For information about simplejson.tool,
see simplejson encoder and decoder.

If you do not want to pretty-print JSON output, omit this code.


If your request includes the -i option to show header output, do not
try to pretty-print the output. Header information is not in JSON
format, and the API service returns an error if you specify json.tool.

Convert cURL examples to run on Windows

The CURL examples in the Rackspace API documentation use syntax
supported on Mac OS® X, Linux, and UNIX systems. Microsoft Windows does
not support the same format. However, you can run the examples on
Windows after making the following changes:

  • Replace all the line-continuation backslash characters (\) with a
    caret (^), and remove any trailing spaces after the ^.
  • If an example includes JSON data, export the data to a text file.
    When you run the cURL command, use the @filename syntax to import
    the JSON data. Save the JSON data files in a directory, and run cURL
    commands from that directory.

The following example shows the cURL format for Linux and UNIX systems:

$ curl  \
      -X POST \
      -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"yourUserName","apiKey":"$apiKey"}}}' \
      -H "Content-type: application/json"

The following example shows the same request with the changes made for
Windows systems:

$ curl  ^
       -X POST ^
       -d @credentials.txt  ^
       -H "Content-type: application/json"