# Make a GET Request
Source: https://docs.chain.link/any-api/get-request/introduction

> For the complete documentation index, see [llms.txt](/llms.txt).

> **DANGER: Use Chainlink Functions**
>
> The Any API docs remain as a public historical reference for node operators. Please use Chainlink Functions instead.
>
> Chainlink Functions provides your smart contracts access to trust-minimized compute infrastructure, allowing you to fetch data from APIs and perform custom computation. Read the [Chainlink Functions
> documentation](/chainlink-functions) to learn more.

This series of guides explains how to make HTTP GET requests to external APIs from smart contracts, using Chainlink's [Request & Receive Data](/any-api/introduction) cycle.

### Response Types

Make sure to choose an oracle job that supports the data type that your contract needs to consume. Multiple data types are available such as:

- **`uint256`** - Unsigned integers
- **`int256`** - Signed integers
- **`bool`** - True or False values
- **`string`** - String
- **`bytes32`** - Strings and byte values. If you need to return a string, use `bytes32`. Here's [one method](https://gist.github.com/alexroan/a8caf258218f4065894ecd8926de39e7) of converting `bytes32` to `string`. Currently, any return value must fit within 32 bytes. If the value is bigger than that, make multiple requests.
- **`bytes`** - Arbitrary-length raw byte data

## Setting the LINK token address, Oracle, and JobId

The [`setChainlinkToken`](/any-api/api-reference/#setchainlinktoken) function sets the LINK token address for the [network](/resources/link-token-contracts) you are deploying to. The [`setChainlinkOracle`](/any-api/api-reference/#setchainlinkoracle) function sets a specific Chainlink oracle that a contract makes an API call from. The `jobId` refers to a specific job for that node to run.

Each job is unique and returns different types of data. For example, a job that returns a `bytes32` variable from an API would have a different `jobId` than a job that retrieved the same data, but in the form of a `uint256` variable.

Check the [Find Existing Jobs page](/any-api/find-oracle) to learn how to find a job suitable to your use case.

## Examples

### Single Word Response

This [guide](/any-api/get-request/examples/single-word-response) explains how to make an HTTP GET request and parse the *json* response to retrieve the value of one single attribute.

### Multi-Variable Responses

This [guide](/any-api/get-request/examples/multi-variable-responses) explains how to make an HTTP GET request and parse the *json* response to retrieve the values of multiple attributes.

### Fetch data from an Array

This [guide](/any-api/get-request/examples/array-response) explains how to make an HTTP GET request that returns a *json* array and parse it to retrieve the target element's value.

### Large Responses

This [guide](/any-api/get-request/examples/large-responses) explains how to make an HTTP Get request that returns a *json* containing an arbitrary-length raw byte data and parse it to return the data as *bytes* data type.

### Make an Existing Job Request

This [guide](/any-api/get-request/examples/existing-job-request) explains how to call a job that leverages [External adapters](/chainlink-nodes/external-adapters/external-adapters) and returns the relevant data to the smart contract. This allows building succinct smart contracts that do not need to comprehend the URL or the response format of the target API.