Request Body
The body is the data you send along with a request — for example the JSON payload
of a POST, a set of form fields, or an uploaded file. HTTPBot supports several
body types, and you choose between them in the Body section of the request
editor using the Type picker.
The Body section appears for every HTTP request. For methods that don't normally carry a payload (GET, HEAD, DELETE) it starts on None; picking a non-None body type for one of those methods flips the method to POST automatically.
Why GET has no body. Although the HTTP spec technically permits a body on a GET request, iOS's networking stack won't send one — so a body attached to a GET would simply be dropped. To avoid that surprise, HTTPBot offers no body for GET, HEAD, and DELETE, and switches the method to POST when you choose a body type.



Body types at a glance
| Type | Content-Type | Best for |
|---|---|---|
| None | — | Requests with no payload |
| URL Encoded | application/x-www-form-urlencoded |
Simple key/value form submissions |
| Form Data | multipart/form-data |
Forms that include files |
| Raw | Anything you set | JSON, XML, or plain text |
| GraphQL | application/json |
GraphQL queries and mutations |
None
Choose None when the request doesn't send a body — for instance a plain GET, or a DELETE that's fully described by its URL. HTTPBot sends no payload.
URL Encoded
URL Encoded sends your data as application/x-www-form-urlencoded, the
classic HTML form format. It's a key/value editor: add a row for each field, and
HTTPBot encodes them into a single string like name=Ada&role=admin.
Use this for simple form posts where every value is a short string. Each value
supports {{variable}} substitution.
Form Data
Form Data sends your data as multipart/form-data. Like URL Encoded it's a
key/value editor, but it can also carry files — so it's the right choice when
you need to upload an image, document, or other attachment alongside regular text
fields.
- Add a row per field; choose whether the value is text or a file.
- Mix text fields and file fields freely in the same request.
- Text values support
{{variable}}substitution.
Raw
Raw gives you a free-form text editor for the body, so you can send exactly the bytes you want. This is the most common choice for JSON APIs, but it also works for XML, plain text, or any other format.
Tap Update Body to open the code editor and type or paste your content.
Remember to set a matching Content-Type header (for example
application/json) in the Headers section so the
server interprets it correctly.
A JSON example:
{
"name": "Ada Lovelace",
"role": "admin",
"tags": ["math", "engineering"],
"active": true
}
You can use {{variable}} placeholders inside the raw body too, so values can be
pulled from your environment — for example {"token": "{{authToken}}"}.
GraphQL
GraphQL turns the body into a dedicated GraphQL editor with a query and variables editor, schema-aware autocomplete, and a built-in schema browser. It's a body type like the others, but with enough to it to warrant its own page — see GraphQL for the full workflow.
Variable substitution in the body
All body types that accept text — URL Encoded values, Form Data text fields, the
Raw editor, and GraphQL — support {{variable}} placeholders. HTTPBot resolves
them against your active environment and global variables before sending, which
lets you reuse a request across different environments without editing the body
by hand. See Environments & Variables for how variables are
defined and resolved.
Related
- GraphQL — the dedicated GraphQL editor, schema browser, and saved queries
- Building a Request — headers, params, and the rest of the editor
- Environments & Variables —
{{variable}}substitution