## Table of Contents

- [headersPRO](#headerspro)
  - [CLI Microlink API example](#cli-microlink-api-example)
  - [cURL Microlink API example](#curl-microlink-api-example)
  - [JavaScript Microlink API example](#javascript-microlink-api-example)
  - [Python Microlink API example](#python-microlink-api-example)
  - [Ruby Microlink API example](#ruby-microlink-api-example)
  - [PHP Microlink API example](#php-microlink-api-example)
  - [Golang Microlink API example](#golang-microlink-api-example)

---

[](https://microlink.io/docs/api/getting-started/overview)

[API](https://microlink.io/docs/api/getting-started/overview)

[](https://microlink.io/docs/guides)

GUIDES

[](https://microlink.io/docs/mql/getting-started/overview)

MQL

[](https://microlink.io/docs/sdk/getting-started/overview)

SDK

[](https://microlink.io/docs/cards/getting-started/overview)

CARDS

## headersPRO

It sets any HTTP header that will be passed along over the [url](https://microlink.io/docs/api/parameters/url).

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://news.ycombinator.com' URL with 'headers' API parameter:

### CLI Microlink API example

``` bash
microlink https://news.ycombinator.com&headers.user-agent=googlebot&headers.accept-language=en-US
```

### cURL Microlink API example

``` bash
curl -G "https://api.microlink.io" \
  -d "url=https://news.ycombinator.com" \
  -d "headers.user-agent=googlebot" \
  -d "headers.accept-language=en-US"
```

### JavaScript Microlink API example

``` javascript
import mql from '@microlink/mql'

const { data } = await mql('https://news.ycombinator.com', {
  headers: {
    "user-agent": "googlebot",
    "accept-language": "en-US"
  }
})
```

### Python Microlink API example

``` python
import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://news.ycombinator.com",
    "headers.user-agent": "googlebot",
    "headers.accept-language": "en-US"
}

response = requests.get(url, params=querystring)

print(response.json())
```

### Ruby Microlink API example

``` ruby
require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://news.ycombinator.com",
  headers.user-agent: "googlebot",
  headers.accept-language: "en-US"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body
```

### PHP Microlink API example

``` php
<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://news.ycombinator.com",
    "headers.user-agent" => "googlebot",
    "headers.accept-language" => "en-US"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}
```

### Golang Microlink API example

``` bash
package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://news.ycombinator.com")
    q.Set("headers.user-agent", "googlebot")
    q.Set("headers.accept-language", "en-US")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}
```

``` javascript
import mql from '@microlink/mql'

const { data } = await mql('https://news.ycombinator.com', {

  headers: {

    "user-agent": "googlebot",

    "accept-language": "en-US"

  }

})
```

Passing headers must the way to authenticate a non-public target URL, providing the necessary headers to make it reachable for Microlink API.

One consideration to keep in mind is that values provided will be passed as query parameters, meaning anyone can see them since they are public.

In case you are treating with sensible headers (e.g., [](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)

[authorization](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)

or [](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie)

cookie

) you can pass them as part of the request headers rather than query parameters.

``` bash
curl -G https://api.microlink.io \

  -d url=https://test-http-login.vercel.app \

  -d screenshot=true \

  -d embed=screenshot.url \

  -H 'x-api-header-authorization: Basic YWRtaW46YWRtaW4='
```

In that way, they will be not publicly exposed.