# api request rest

Make an authenticated HTTP request using the Salesforce REST API.

## Description for api request rest

When sending the HTTP request with the "--body" flag, you can specify the request directly at the command line or with a file that contains the request.

For a full list of supported REST endpoints and resources, see <https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_list.htm>.

## Flags

| Flag Name (Long)   | Flag Name (Short) | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------ | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--body`           | `-b`              | **Type:** Value<br><br>File or content for the body of the HTTP request. Specify "-" to read from standard input or "" for an empty body. If passing a file, prefix the filename with '@'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `--file`           | `-f`              | **Type:** Value<br><br>JSON file that contains values for the request header, body, method, and URL.<br><br>Use this flag instead of specifying the request details with individual flags, such as --body or --method. This schema defines how to create the JSON file:<br><br>{<br><br>url: { raw: string } \| string;<br><br>method: 'GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE';<br><br>description?: string;<br><br>header: string \| Array<Record<string, string>>;<br><br>body: { mode: 'raw' \| 'formdata'; raw: string; formdata: FormData };<br><br>}<br><br>Salesforce CLI defined this schema to be mimic Postman schemas; both share similar properties. The CLI's schema also supports Postman Collections to reuse and share requests. As a result, you can build an API call using Postman, export and save it to a file, and then use the file as a value to this flag. For information about Postman, see <https://learning.postman.com/.><br><br>Here's a simple example of a JSON file that contains values for the request URL, method, and body:<br><br>{<br><br>"url": "sobjects/Account/<Account ID>",<br><br>"method": "PATCH",<br><br>"body" : {<br><br>"mode": "raw",<br><br>"raw": {<br><br>"BillingCity": "Boise"<br><br>}<br><br>}<br><br>}<br><br>See more examples in the plugin-api test directory, including JSON files that use "formdata" to define collections: <https://github.com/salesforcecli/plugin-api/tree/main/test/test-files/data-project>. |
| `--flags-dir`      | N/A               | **Type:** Value<br><br>Import flag values from a directory.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `--header`         | `-H`              | **Type:** Value<br><br>HTTP header in "key:value" format.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `--include`        | `-i`              | **Type:** Boolean<br><br>Include the HTTP response status and headers in the output.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `--json`           | N/A               | **Type:** Boolean<br><br>Format output as json.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `--method`         | `-X`              | **Type:** Value<br>**Valid Values:** `GET`, `POST`, `PUT`, `PATCH`, `HEAD`, `DELETE`, `OPTIONS`, `TRACE`<br><br>HTTP method for the request.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `--stream-to-file` | `-S`              | **Type:** Value<br><br>Stream responses to a file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `--target-org`     | `-o`              | **Type:** Value<br>**Required**<br><br>Username or alias of the target org. Not required if the `target-org` configuration variable is already set.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

## Examples for api request rest

List information about limits in the org with alias "my-org":

```shell
sf api request rest 'services/data/v56.0/limits' --target-org my-org
```

List all endpoints in your default org; write the output to a file called "output.txt" and include the HTTP response status and headers:

```shell
sf api request rest '/services/data/v56.0/' --stream-to-file output.txt --include
```

Get the response in XML format by specifying the "Accept" HTTP header:

```shell
sf api request rest '/services/data/v56.0/limits' --header 'Accept: application/xml'
```

Create an account record using the POST method; specify the request details directly in the "--body" flag:

```shell
sf api request rest /services/data/v56.0/sobjects/account --body "{\"Name\" : \"Account from REST API\",\"ShippingCity\" : \"Boise\"}" --method POST
```

Create an account record using the information in a file called "info.json" (note the @ prefixing the file name):

```shell
sf api request rest '/services/data/v56.0/sobjects/account' --body @info.json --method POST
```

Update an account record using the PATCH method:

```shell
sf api request rest '/services/data/v56.0/sobjects/account/<Account ID>' --body "{\"BillingCity\": \"San Francisco\"}" --method PATCH
```

Store the values for the request header, body, and so on, in a file, which you then specify with the --file flag; see the description of --file for more information:

```shell
sf api request rest --file myFile.json
```
