> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Short Link

> Provide a URL to the /links endpoint and get a shortened link back, with optional UTM parameters such as utmSource and click analytics on browser type.

Provide a URL and a shortened link will be returned. Analytics can then be gathered on the clicks, browser type, etc.

Submitting the same URL for shortening will always result in the same shortened link. To generate a unique shortened link for the same URL, you can add extra query parameters to it. For example, appending a unique identifier like [https://ayrshare.com?uniqueId=123](https://ayrshare.com?uniqueId=123) will create a distinct shortened link.

You may also include UTM parameters, which will be embedded in the shortened URL link.

## Header Parameters

**Authorization** `string` *required*

[API Key](https://www.ayrshare.com/docs/apis/overview.md#authorization) of the Primary Profile.

Format: `Authorization: Bearer API_KEY`

## Body Parameters

**url** `string` *required*

URL to be shortened. Must be a valid URL starting with https\://

**utmId** `string`

Used to identify which Google Analytics ads campaign this referral references.

**utmSource** `string`

Used to identify a search engine, newsletter name, or other source.

**utmMedium** `string`

Used to identify a medium such as email or cost-per-click.

**utmCampaign** `string`

Used for keyword analysis. Used to identify a specific product promotion or strategic campaign.

**utmTerm** `string`

Used for paid search. Used to note the keywords for this ad.

**utmContent** `string`

Used for A/B testing and content-targeted ads. Used to differentiate ads or links that point to the same URL.

```bash cURL theme={"system"}
curl \
-H "Authorization: Bearer API_KEY" \
-H 'Content-Type: application/json' \
-d '{"url": "https://www.ayrshare.com", "utmSource": "google_ads"}' \
-X POST https://api.ayrshare.com/api/links
```

```javascript JavaScript theme={"system"}
const API_KEY = "API_KEY";

fetch("https://api.ayrshare.com/api/links", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${API_KEY}`
      },
      body: JSON.stringify({
        url: "https://www.ayrshare.com", // required
        utmSource: "google_ads", // optional
      }),
    })
      .then((res) => res.json())
      .then((json) => console.log(json))
      .catch(console.error);
```

```python Python theme={"system"}
import requests

payload = {'url': 'https://www.ayrshare.com',
        'utmSource': 'google_ads"}
headers = {'Content-Type': 'application/json',
        'Authorization': 'Bearer API_KEY'}

r = requests.post('https://api.ayrshare.com/api/links',
    json=payload,
    headers=headers)

print(r.json())
```

```php PHP theme={"system"}
require 'vendor/autoload.php';// Composer auto-loader using Guzzle. See .../guzzlephp.org/en/stable/overview.html

$client = new GuzzleHttp\Client();
$res = $client->request(
    'POST',
    'https://api.ayrshare.com/api/links',
    [
        'headers' => [
            'Content-Type'  => 'application/json',
            'Authorization' => 'Bearer API_KEY'
        ],
        'json' => [
            'url' => 'https://www.ayrshare.com',
            'utmSource' => 'google_ads', // optional
        ]
    ]
);

echo json_encode(json_decode($res->getBody()), JSON_PRETTY_PRINT);
```

```go Go theme={"system"}
package main

import (
	"bytes"
	"encoding/json"
	"log"
	"net/http"
)

func main() {
	message := map[string]interface{}{
		"url":      "https://www.ayrshare.com",
		"utmSource": "google_ads",
	}

	bytesRepresentation, err := json.Marshal(message)
	if err != nil {
		log.Fatalln(err)
	}

	req, _ := http.NewRequest("POST", "https://api.ayrshare.com/api/links",
		bytes.NewBuffer(bytesRepresentation))

	req.Header.Add("Content-Type", "application/json; charset=UTF-8")
	req.Header.Add("Authorization", "Bearer API_KEY")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal("Error:", err)
	}

	res.Body.Close()
}
```

```csharp C# theme={"system"}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace CreateShortLinkPOSTRequest_csharp
{
class CreateShortLink
{
    private static readonly HttpClient client = new HttpClient();

    static async Task Main(string[] args)
    {
        string API_KEY = "API_KEY";
        string url = "https://api.ayrshare.com/api/analytics/links";

        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + API_KEY);

        string json = "{\"url\" : \"https://www.ayrshare.com\"," +
            "\"utmSource\" :\"google_ads\"";

        try
        {
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync(url, content);
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine($"Error: {e.Message}");
        }
    }
}
}
```

```json 200: Success theme={"system"}
{
    "created": "2023-07-17T15:20:51.118Z",
    "id": "yC0fTl",
    "originalUrl": "https://www.ayrshare.com/?utm_source=looking",
    "shortUrl": "https://ayrs.io/yC0fTl",
    "status": "success",
    "utmSource": "looking"
}
```

```json 400: Error Shortening Link theme={"system"}
{
  "action": "request",
  "status": "error",
  "code": 126,
  "message": "Shorten URL failed. Please verify the URL is properly formatted and the correct UTM parameters are used."
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.