Vivoldi URL Shortener Developer API

The Vivoldi Developer API lets you integrate URL shortening, link management, and click tracking features directly into your websites, mobile apps, and internal systems using REST APIs and JSON responses.

All APIs return structured JSON data and are designed to work seamlessly with JavaScript, Python, Java, PHP, Android, iOS, and virtually any development environment that supports HTTP requests.

API Authentication

All API requests require an API key in the Authorization header.
You can generate your API key from the Developer API page in the dashboard.

Authorization: APIKey {Your API Key}

What Is the Vivoldi Developer API?

The Vivoldi Developer API is a REST API that allows you to integrate URL shortening and link management features directly into websites, mobile apps, and internal business systems.

Beyond simple short link creation, you can automate a wide range of Vivoldi features through the API, including click analytics, link group management, QR code generation, coupon campaigns, and digital stamp features.

Popular Use Cases

  • Automatically generate short URLs for marketing campaigns
  • Optimize product link sharing on eCommerce platforms
  • Collect click analytics and automate reporting in internal systems
  • Combine deep links with short URLs to drive mobile app installs
  • Automate link management for social media, SMS, and email campaigns

Before You Start Using the API

To use the Vivoldi API, you’ll need to create an account and generate an API key.
Once issued, the API key can be included in the Authorization header to access the HTTPS-based REST API endpoints.

Step 1 — Create a Vivoldi Account

You can start using the API even with the free Vivoldi plan after signing up.
Paid plans provide higher API rate limits and additional advanced features.

Step 2 — Generate an API Key

After logging in, you can generate an API key from the Developer API section in the dashboard.
For security, we recommend storing API keys securely in server environment variables or backend systems rather than exposing them publicly.

Step 3 — Test Your First API Request

Include your issued API key in the Authorization header and send a POST request to the endpoint below to create a short URL.

Once setup is complete, you can integrate Vivoldi into various services using the API guides and sample code below.

How to call the API

The Vivoldi API is built on an HTTPS-based REST API architecture.
All requests must include authentication credentials using an API Key in the HTTP headers, and the Content-Type should be set to application/json.

All responses are returned in JSON format using a consistent structure that includes code, message, and result fields.
A 0 code indicates a successful request, while error codes and messages can be used to implement proper exception and error handling.

Request
Host: https://vivoldi.com/api/{uri}
Authorization: APIKey {Your API Key}
Content-type: application/json
User-Agent: {Your User-Agent}
Accept-Language: en
Response
{
	"code": 0,
	"message": "",
	"result": Object
}
Fields Description Type
code Response code. A value of 0 indicates success; any non-zero value indicates failure.
This code is independent of the HTTP status and is returned only when the HTTP status is in the 2xx or 3xx range.
int
message Included only when code is not 0. Provides an error message describing the failure.
May be empty or omitted when the response is successful.
string
result The actual response data returned by the API. Depending on the API type, the format may be a String or a JSON Object. object

Examples:

Vivoldi provides REST API sample code for multiple development environments, including JavaScript, PHP, and Java.
The examples below are based on the short URL creation API (/api/v2/create), so you can start testing right away by simply replacing the API Key and domain values.

Built around a JSON-based request and response structure, the API can be easily integrated into websites, admin dashboards, internal systems, marketing automation platforms, and a wide range of other services.

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"/>
	<script src="https://code.jquery.com/jquery-4.0.0.min.js" crossorigin="anonymous"></script>
</head>

<body>

<form id="exampleForm">
	<button id="btnCreateLink" type="button">Create Link</button>
</form>

<script type="text/javascript">
$(function(){
	$("#btnCreateLink").on('click', function(evt){
		evt.preventDefault();

		$.ajax({
			type: 'POST',
			url: 'https://vivoldi.com/api/link/v2/create',
			data: JSON.stringify({'url':'https://google.com','domain':'https://vvd.bz'}),
			headers: {'Authorization':'APIKey oc3w9m4ytso9mv5e8yse9XXXXXXXXXX'},
			contentType: 'application/json; charset=utf-8',
			dataType: 'json',
			timeout: 5000
		}).done(function(res){
			if (res.code === 0) {
				alert('short url: ' + res.result);
			} else {
				alert('code: ' + res.code + ', message: ' + res.message);
			}
		}).fail(function(xhr, textStatus, e){
			alert('error: ' + e);
		});
	});
});
</script>

</body>
</html>
<?php
$url = "https://vivoldi.com/api/link/v2/create";
$params = array (
	"url" => "https://www.facebook.com/vivoldi365",
	"domain" => "https://vvd.bz",
);
$body = json_encode($params);

$headers = array(
	"Authorization: APIKey oc3w9m4ytso9mv5e8yse9XXXXXXXXXX",
	"Content-Type: application/json"
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);

$result = curl_exec($ch);

if ($result === FALSE) {
     echo "Error sending: " . curl_error($ch);
} else {
     print_r($result);
}
curl_close($ch);
?>
package com.example;

import org.json.JSONObject;
import org.springframework.http.HttpStatus;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class CreateLink {
    public static void main(String[] args) {
        try (HttpClient client = HttpClient.newBuilder().build()) {
            JSONObject params = new JSONObject();
            params.put("url", "https://www.facebook.com/vivoldi365");
            params.put("domain", "https://vvd.bz");

            HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://vivoldi.com/api/link/v2/create"))
                .header("Content-Type", "application/json")
                .header("Authorization", "APIKey oc3w9m4ytso9mv5e8yse9XXXXXXXXXX")
                .POST(HttpRequest.BodyPublishers.ofString(params.toString()))
                .build();

            HttpResponse<String> response;
            try {
                response = client.send(request, HttpResponse.BodyHandlers.ofString());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }

            if (response != null) {
                if (response.statusCode() == HttpStatus.OK.value()) {
                    String jsonString = response.body();
                    if (jsonString != null && !jsonString.isEmpty()) {
                        JSONObject json = new JSONObject(jsonString);
                        if (json.getInt("code") == 0) {
                            System.out.println("Short URL: " + json.getString("result"));
                        } else {
                            System.out.println("Failed: " + String.format("[%d] %s", json.getInt("code"), json.getString("message")));
                        }
                    }
                }
            }
        }
    }
}
Please contact Vivoldi if you need REST API improvements or modifications.