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.

The Body section's Type picker showing None, URL Encoded, Form Data, Raw, and GraphQL.The Body section's Type picker showing None, URL Encoded, Form Data, Raw, and GraphQL.The Body section's Type picker showing None, URL Encoded, Form Data, Raw, and GraphQL.

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.

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