# Make

> Call any tool from the HTTP “Make a request” module and iterate over the results.

The built-in HTTP app calls any tool. Parse response turns the answer into fields you can map.

<Callout title="Before you start">
  You need an API key (it starts with `af_live_`). [Sign up](/login) with your email and you get
  2,000 free credits.
</Callout>

## 1. Add the request [#1-add-the-request]

Add the HTTP app → Make a request. Set Method to POST and URL to:

```text title="URL"
https://pullwire.dev/api/v1/tools/youtube-transcripts/runs
```

## 2. Add your key [#2-add-your-key]

Under Headers add one item: Name `x-api-key`, Value your API key.

## 3. Send the input [#3-send-the-input]

Set Body content type to application/JSON and Body input method to JSON string, then paste the input. Map values from earlier modules into it.

```json title="Request content"
{
  "videos": [
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "maxResults": 3
}
```

## 4. Read the results [#4-read-the-results]

Set Parse response to Yes and run the module once so Make learns the fields. Then add Flow Control → Iterator on `results` to handle one result per bundle.

```json title="Answer (SAMPLE)"
{
  "run": {
    "id": "…",
    "status": "succeeded",
    "resultsCount": 1,
    "creditsUsed": 1,
    "error": null
  },
  "results": [
    {
      "…": "one object per result, fields depend on the tool"
    }
  ]
}
```

The values above are a SAMPLE: real answers carry real IDs and all fields of the tool.

## 5. Bigger jobs [#5-bigger-jobs]

Add `?async=1` to the URL, then Tools → Sleep, then a second Make a request (GET) to `/api/v1/runs/{run.id}/results` with the same header.

## Good to know [#good-to-know]

- The call waits up to 25 seconds for the results. For bigger jobs add `?async=1` to the URL: you get a run id back right away and fetch the results a bit later.
- Errors come back with a code, e.g. `INSUFFICIENT_CREDITS` (402) or `INVALID_INPUT` (400).
