Vivoldi 短縮URL 開発者API
Vivoldi 開発者APIを利用することで、短縮URLの生成、リンク管理、クリック解析機能を、REST API と JSON レスポンスを通じて Webサービスやアプリ、社内システムへ簡単に組み込めます。
すべてのAPIはJSON形式のレスポンスを提供しており、JavaScript、Python、Java、PHP、Android、iOSなど、HTTPリクエストに対応したさまざまな開発環境でスムーズに利用できます。
API認証
すべてのAPIリクエストには、AuthorizationヘッダーにAPIキーが必要です。
APIキーは、ダッシュボード内の開発者APIページから発行できます。
Authorization: APIKey {Your API Key}
注意事項 (HTTP 403)
原因: 一部の識別できないUser-Agentは、セキュリティポリシー上ブロックされる場合があります。
解決策: User-Agentには会社名またはブランド名を用いて、固有の値を明確に指定してください。
User-Agent: MyBrand
すべてのAPIリクエストには、失敗時に自動再試行するロジックを含めることを推奨します。
Vivoldi 開発者APIとは?
Vivoldi 開発者APIは、短縮URL生成やリンク管理機能を Webサイト、モバイルアプリ、社内システムなどへ簡単に統合できる REST API です。
単なる短縮リンク作成だけでなく、クリック分析、リンクグループ管理、QRコード生成、クーポン機能、スタンプ機能など、さまざまな Vivoldi の機能をAPI経由で自動化できます。
主な活用シーン
- マーケティング施策ごとの短縮URLを自動生成
- ECサイトの商品リンク共有を最適化
- 社内システムでクリック分析とレポート作成を自動化
- ディープリンクと短縮URLを組み合わせてアプリインストールを促進
- SNS・SMS・メール配信用リンク管理を自動化
API利用前の準備
Vivoldi API を利用するには、アカウント作成とAPIキーの発行が必要です。
発行されたAPIキーを Authorization ヘッダーに含めることで、HTTPSベースのREST APIを利用できます。
ステップ1 — Vivoldi アカウントを作成
Vivoldi に登録すると、無料プランでもAPI機能を利用できます。
有料プランでは、より高い API利用上限 や追加の高度な機能が提供されます。
ステップ2 — APIキーを発行
ログイン後、ダッシュボード内の 開発者API ページからAPIキーを発行できます。
APIキーは外部に公開せず、サーバー環境変数やバックエンド側で安全に管理することを推奨します。
ステップ3 — 最初のAPIリクエストを試す
発行したAPIキーをAuthorizationヘッダーに設定し、以下のエンドポイントへPOSTリクエストを送信すると短縮URLを生成できます。
準備が完了したら、以下のAPIガイドやサンプルコードを参考に、さまざまなサービスへ組み込めます。
API呼び出し方法
Vivoldi API は HTTPS ベースの REST API アーキテクチャを採用しています。
すべてのリクエストには HTTP Header に API Key 認証情報を含める必要があり、Content-Type には application/json を使用します。
レスポンスは常に JSON 形式で返され、code・message・result を含む統一された構造を提供します。
0 は正常処理を示し、エラー時にはステータスコードとメッセージを利用して例外処理やエラーハンドリングを実装できます。
Host: https://vivoldi.com/api/{uri}
Authorization: APIKey {Your API Key}
Content-type: application/json
User-Agent: {Your User-Agent}
Accept-Language: en
{
"code": 0,
"message": "",
"result": Object
}
| フィールド | 説明 | タイプ |
|---|---|---|
| code | レスポンスコードです。値が 0 の場合は 成功、それ以外は 失敗 を示します。このコードは HTTPステータスとは別であり、HTTPステータスが 2xx または 3xx の場合のみ 応答本文が返されます。 |
int |
| message | code が 0 でない場合に含まれ、失敗の理由を説明するエラーメッセージが提供されます。成功時はこのフィールドが省略されるか、空になることがあります。 |
string |
| result | APIから返される実際のデータです。APIの種類により、形式は 文字列 または JSONオブジェクト になります。 |
object |
Examples:
Vivoldi では、JavaScript、PHP、Java など、さまざまな開発環境向けに REST API のサンプルコードを提供しています。
以下のサンプルは短縮URL生成API(/api/v2/create)をベースにしており、API Key とドメイン情報を変更するだけですぐに動作確認を行えます。
JSONベースのリクエスト・レスポンス構造を採用しているため、Webサイト、管理画面、社内システム、マーケティング自動化プラットフォームなど、さまざまなサービスへスムーズに統合できます。
<!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")));
}
}
}
}
}
}
}