Skip to main content
POST
/
links
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
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);
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())
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);
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()
}
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}");
        }
    }
}
}
{
    "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"
}
{
  "action": "request",
  "status": "error",
  "code": 126,
  "message": "Shorten URL failed. Please verify the URL is properly formatted and the correct UTM parameters are used."
}
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 will create a distinct shortened link. You may also include UTM parameters, which will be embedded in the shortened URL link.

Header Parameters

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.
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
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);
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())
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);
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()
}
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}");
        }
    }
}
}
{
    "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"
}
{
  "action": "request",
  "status": "error",
  "code": 126,
  "message": "Shorten URL failed. Please verify the URL is properly formatted and the correct UTM parameters are used."
}