It's easy to send REST requests from Airplane. With REST tasks, you can build/use existing APIs and have Airplane act as an interface to them.

Getting started

Visit the New Task page to get started.

Define your task

You'll be asked to give your task a name and (optional) description.


Like other tasks, REST tasks support parameters. Parameters have slugs (a human-readable ID) and can be interpolated into queries by entering {{params.slug}}.
Parameters can be used in most fields, but they cannot be used in URL parameter keys or header keys. If you try to use parameters in these fields, you will receive a warning.
Parameters show the slug underneath. For example, this parameter "User Email" has a slug "user_email":

Build your task

Select the REST API resource you'd like to query. If you don't have any configured, you'll see a link that takes you to create a new resource.
Specify the method, path, and other details of your REST request:
Here, you'll be able to interpolate the parameters you specified earlier. By specifying {{params.slug}}, the parameter value will get inserted into the request.
For example, this would interpolate the entered email into the path:
A user who runs this task with as the user_email would make an HTTP request to /users/
You can interpolate in path, URL parameters, headers, and the body.
For example, this interpolates user_name into a JSON request body:

Configure settings

In this last step, you can optionally configure permissions, timeouts, and run constraints. These settings are optional.
That's it! Finish the task creation wizard and you have a shrinkwrapped task for safely making REST requests.

Interpolation limitations

When constructing a JSON body with parameters, you should quote the parameter if it needs quoting (e.g. string-type). For number types and booleans where the value should not be quoted, the parameter should also not be quoted.
// Example JSON body.
// location is a string and should have quotes.
// count is a number and should NOT have quotes.
"location": "{{params.location}}",
"count": {{params.count}}