HTTP
Make HTTP requests to external APIs and services
This node signs in with a credential: Basic Auth, Bearer Token, API Key, OAuth2, AWS Signature V4, Digest Auth, NTLM Auth, WSSE Auth. See Connect a credential.
Actions
Steps this node can perform. Add one from Add a step, then pick the action.
GET
Send a GET request
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true | |
| Pagination | Yes / No | Enable automatic pagination Default: false | |
| Pagination Type | Choice | The pagination strategy to use Options: Page Number, Page Offset, CursorDefault: page_number | |
| Page Parameter Name | Text | Query parameter name for page number Default: page | |
| Page Size Parameter Name | Text | Query parameter name for page size Default: limit | |
| Page Size | Number | Number of items per page Default: 10 | |
| Start Page | Number | First page number Default: 1 | |
| Start Offset | Number | Starting offset for offset-based pagination Default: 0 | |
| Cursor Parameter Name | Text | Query parameter name for the cursor Default: cursor | |
| Cursor Path | Text | Path to the cursor value in the response | |
| Max Pages | Number | Maximum number of pages to fetch Default: 5 | |
| Has More Path | Text | Path to the has-more flag in the response | |
| Total Path | Text | Path to the total count in the response | |
| Data Path | Text | Path to the data array in the response Default: data |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |
POST
Send a POST request
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Body | Text | Request body content | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |
PUT
Send a PUT request
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Body | Text | Request body content | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |
PATCH
Send a PATCH request
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Body | Text | Request body content | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |
DELETE
Send a DELETE request
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |
OPTIONS
Send an OPTIONS request
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |
Custom Request
Send a custom HTTP request with a configurable method
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| URL | Text | Yes | The URL to send the request to |
| Method | Choice | The HTTP method to use for the request Options: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEADDefault: GET | |
| Headers | Key–value pairs | Request headers | |
| Query Parameters | Key–value pairs | URL query parameters | |
| Body | Text | Request body content | |
| Follow Redirects | Yes / No | Whether to follow HTTP redirects Default: true | |
| Timeout | Number | Request timeout in milliseconds Default: 10000 |
Output
Later steps use this data by picking this step in the $ picker. For example, statusCode is $.<step ID>.output.statusCode.
{
"statusCode": 0,
"headers": {},
"body": null,
"rawBody": "string",
"url": "string",
"duration": 0,
"pages": [
"string"
],
"allData": [
"string"
],
"retries": {
"attemptCount": 0,
"attempts": [
{
"attempt": 0,
"durationMs": 0,
"error": "string",
"nextDelayMs": 0,
"retryable": false,
"statusCode": 0
}
],
"succeeded": false
},
"data": {
"body": null,
"file": {
"fileId": "string",
"fileName": "string",
"filePath": "string",
"success": false
},
"files": []
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
statusCode | Number | HTTP response status code |
headers | Object | Response headers |
body | Any | Parsed response body |
rawBody | Text | Raw response body as a string |
url | Text | Final request URL after redirects |
duration | Number | Total request duration in milliseconds |
pages[] | List | All pages of paginated data. Elements are free-form: one response body per page |
allData[] | List | All paginated results combined. Elements are free-form: whatever the API returned |
retries | Object | Retry attempt information |
retries.attemptCount | Number | Total number of attempts made |
retries.attempts[] | List | List of individual retry attempts |
retries.attempts[].attempt | Number | Attempt number |
retries.attempts[].durationMs | Number | Duration of this attempt in milliseconds |
retries.attempts[].error | Text | Error message if the attempt failed |
retries.attempts[].nextDelayMs | Number | Delay before the next retry in milliseconds |
retries.attempts[].retryable | Yes / No | Whether the error was retryable |
retries.attempts[].statusCode | Number | HTTP status code for this attempt |
retries.succeeded | Yes / No | Whether a retry eventually succeeded |
data | Object | Present when responseFormat is "file" AND Put Output in Field names a key. Left blank — the default — its contents are placed at the top level of the output instead. Multipart mode never uses this wrapper. |
data.body | Any | The response's non-file content. For a multipart response this is the parts marked Autodetect: one such part is the value itself, several become an array in body order. Absent for a plain binary download, which has no non-file content. |
data.file | Object | The saved file's details |
data.file.fileId | Text | Internal cleanup handle for this run. Not a File Storage ID and cannot be used with the File Storage node. |
data.file.fileName | Text | The saved file's name |
data.file.filePath | Text | The saved file's path on the Studio file system |
data.file.success | Yes / No | Whether the file was saved successfully |
data.files[] | List | Saved files that were not given an output field of their own. In multipart mode every file whose row leaves Put Output in Field blank lands here, as does any part matching no row. Without the multipart toggle it appears only when a response yielded more than one file part, since a single file is already in "file". |