SESSION エンドポイント API リファレンス
ユーザーセッションを追跡し、アプリインストール、再エンゲージメント、 およびリテンション指標の帰属を有効化します。SingularのREST APIをサーバー間連携で利用し、 SDK実装の代替手段として提供します。
概要
サーバー間連携のユースケース
Singular REST APIは、アプリがデバイス固有データをバックエンドに転送し、 バックエンドがSingularサーバーに送信してアトリビューション処理と分析レポートを実行する 直接的なサーバー間連携を可能にします。
サポート機能:
- インストールアトリビューション:マーケティングキャンペーンへのファーストタッチアトリビューション
- 再エンゲージメントアトリビューション:リピーターユーザー向けマルチタッチアトリビューション
- リテンション指標:セッションベースのエンゲージメント追跡
- イベントトラッキング:カスタムアプリ内イベント計測
データフローアーキテクチャ
サーバー間連携は4段階のデータ伝送プロセスに従います。
- クライアント収集:アプリが必須のデバイス およびアプリケーションデータを収集
- サーバー送信:アプリが収集したデータを バックエンドサーバーに転送
- Singular API呼び出し:サーバーがSingular REST APIエンドポイントへデータを送信
- レスポンス処理:サーバーがSingularの応答を受信・処理
主な考慮事項
必須要件:
- リアルタイム処理:リクエストは個別に処理され、 バッチ処理はサポートされません
- 時系列順:イベントは時系列順に送信する必要がある
- 重複排除なし:Singularはデータの重複排除を行わない— サーバー側で重複排除を実装
- データの永続性:デバイスレベルのデータは取り込み後に 削除不可—送信前に検証
- セッション優先:イベント追跡前にセッション確立必須
統合メリット:
- 柔軟性:データ収集と送信タイミングを完全に制御可能
- 機能互換性:適切なデータ提供時、 全SDK機能をサポート
- カスタム実装:特定のバックエンドアーキテクチャに 統合を適応
セッション管理
SESSIONエンドポイントは、アトリビューションとトラッキングのためのユーザーセッションを初期化するため、アプリの起動イベントをSingularに通知します。
セッション送信のタイミング
セッショントリガー
以下のアプリライフサイクルイベントでSESSIONリクエストを送信:
- 新規インストール:インストール後の初回起動
- 終了状態からの起動:アプリが完全に終了した状態から起動
- バックグラウンドからフォアグラウンド:タイムアウト期間後(推奨: 60秒)にアプリがフォアグラウンドに戻る時
セッションタイムアウトロジック
アプリの短時間のバックグラウンド化中に過剰なSESSIONリクエストが発生しないよう、 セッションタイムアウトを実装してください。
推奨実装:
- タイムアウト期間:60秒(1分)
- フォアグラウンド < タイムアウト:タイムアウト期間内にアプリがフォアグラウンドに戻った場合、SESSION を送信しない
- フォアグラウンド > タイムアウト:アプリがタイムアウト期間を超えてバックグラウンド状態の場合、SESSION を送信
- アプリライフサイクル追跡:アプリライフサイクルイベントとタイマーを使用してセッション状態を管理
ディープリンクサポート:ディープリンク、ユニバーサルリンク、またはopenuri パラメータが設定されたアプリリンク経由でアプリが起動した場合、タイムアウト状態に関わらず常にSESSIONを送信する。
アトリビューション処理
セッションベースのアトリビューション
SingularはSESSIONリクエストを処理し、アトリビューションタイプを判定して 適切なワークフローをトリガーします。
| セッションタイプ | Singular処理 | アトリビューション結果 |
|---|---|---|
| 初回セッション(新規インストール) | インストールアトリビューションプロセスがトリガーされる | インストールをマーケティングキャンペーンに帰属 |
| 再エンゲージメント適格 | 再エンゲージメントアトリビューションプロセスがトリガーされました | ユーザーがキャンペーンまたはディープリンクに復帰したことを帰属 |
| 標準セッション | リテンション追跡用にセッションを記録 | ユーザー活動およびエンゲージメント指標に計上 |
詳細はこちら: 再エンゲージメントアトリビューションに関するよくある質問
イベント順序要件
セッションとイベントのタイミングは、アトリビューションの精度とデータ品質に直接影響します。 重要な順序付けルール:
重要な順序ルール:
- セッション優先ルール: 単一セッションのイベントは、 そのセッション内のいかなるイベントよりも先に受信される必要があります
- リアルタイムイベント送信:アプリ内イベントは 対応するセッション後にリアルタイムで送信される必要があります
- 順次処理:セッション順序が不正な場合、 データ不整合やアトリビューションエラーが発生します
高度なオプション
拡張機能
Singular S2S統合は、追加のセッションパラメータを必要とする高度な機能をサポートします。
高度な機能:ディープリンク、SKAdNetwork、クロスデバイス追跡の要件については 高度なS2Sオプション を参照してください。
APIエンドポイント仕様
SESSIONエンドポイントは、デバイス、アプリケーション、アトリビューションデータを含むクエリパラメータを伴うGETリクエストを受け付けます。
エンドポイントURL
ベースURLとメソッド
GET https://s2s.singular.net/api/v1/launch
リクエスト形式:
GET /api/v1/launch?param1=value1¶m2=value2
リクエスト本文:リクエスト本文は提供しないでください。すべてのパラメータは GETメソッドを使用してURLクエリパラメータとして送信する必要があります。
必須パラメータ
すべてのSESSIONリクエストには、適切な値と形式で以下の必須パラメータを含める必要があります。
API認証
SDKキー
| パラメータ | タイプ | 説明 |
|---|---|---|
a
|
string
|
API認証用のSingular SDKキー。 取得元:Singular UI → メインメニュー → 開発者ツール
例: 重要:レポーティング APIキーは使用しないでください—リクエストは拒否されます。 |
デバイス識別子
プラットフォーム固有識別子
デバイス識別子はプラットフォームおよび可用性によって異なります。該当するすべての識別子を含めてください。 プラットフォームに適用される識別子。
| パラメータ | プラットフォーム | 説明 |
|---|---|---|
idfa
|
iOS |
広告主向け識別子 (IDFA) 広告トラッキングとキャンペーンアトリビューションを可能にします。 ATT要件:iOS 14.5以降では App Tracking Transparencyフレームワークによるユーザーのオプトインが必要
例: |
idfv
|
iOS |
ベンダー識別子(IDFV) 同一ベンダーの全アプリで一貫して使用されます。 常に必須:ATTステータスやIDFAの有無にかかわらず含める必要がある
例: |
aifa
|
Android (Google Play) |
Google Advertising ID (GAID) Android 端末でユーザーがリセット可能な広告トラッキングを可能にします。
例: |
asid
|
Android (Google Play) |
AndroidアプリセットID 同一開発者によるアプリ間追跡をプライバシー保護の観点から提供 。 常に必須:GAIDの有無にかかわらず、 Google Playデバイスでは必ず含める必要があります
例: |
amid
|
Android (Amazon) |
Amazon広告ID Google Playサービス非搭載のAmazonデバイス向け。
例: |
oaid
|
Android (中国OEMメーカー) |
Google Play サービス非搭載の中国製デバイス向けオープン広告識別子 (OAID) (Huawei、Xiaomi、OPPO など)。
例: |
andi
|
Android (Google Play非対応) |
Android IDはデバイス生成の64ビット識別子です。 制限付き使用:Google Playデバイスでは禁止—代わりにAIFAとASIDを使用。他の識別子が利用不可で、アプリがGoogle Play経由で配布されていない場合にのみ送信。
例: |
sdid
|
PC、Xbox、PlayStation、Nintendo、MetaQuest、CTV |
Singular Device IDはクライアント生成のUUIDv4であり、 アプリインストールを一意に識別します。 主要識別子:PCおよびコンソールアプリケーションで 使用される唯一のデバイス識別子
例: |
sing
|
エンタープライズ専用 |
標準識別子が利用できない特殊なユースケース向けに クライアントが定義する識別子。 制限付き:エンタープライズ顧客専用 アプリごとにSingularソリューションエンジニアによる有効化が必要 詳細についてはCSMにお問い合わせください。
例: |
デバイスパラメータ
デバイス情報
| パラメータ | 説明 |
|---|---|
p
|
アプリケーションのプラットフォーム。 許可値(大文字小文字を区別):
例: |
ip
|
デバイスのパブリックIPv4アドレス。IPv6もサポートされていますが、 広告ネットワークとのアトリビューション互換性のため、 IPv4の使用を推奨します。
例: |
ve
|
セッション時点でのデバイスのOSバージョン。
例: |
maiOS、Android |
デバイスのメーカー名。
例: |
moiOS、Android |
デバイスのモデル。
例: |
lciOS、Android |
IETFロケールタグ—2文字の言語コードと国コードを アンダースコアで区切ったもの。
例: |
bdiOS、Android |
デバイスのビルド識別子、URLエンコード済み。
例: |
アプリケーションパラメータ
アプリ情報
| パラメータ | 説明 |
|---|---|
i
|
アプリ識別子(大文字小文字を区別)。
例: |
app_v
|
アプリケーションのバージョン。
例: |
install
|
インストール後または再インストール後の最初のセッションであるかどうかを示します。 - インストール後または再インストール後の最初のセッション
必要条件:再インストール追跡機能
例: |
install_timeiOS、Android |
初回アプリインストール時のUnixタイムスタンプ。
例: |
update_timeiOS、Android |
アプリ最終更新のUnixタイムスタンプ。
例: |
att_authorization_statusiOS |
アプリ追跡透明性(ATT)ステータスコード(iOS 14.5以降)。 ステータス値:
常に必須:ATTが実装されていなくても、
例: |
不正防止パラメータ
インストールソース検証
| パラメータ | 説明 |
|---|---|
install_sourceAndroid、PC |
インストール元パッケージ名またはストア識別子。 Android:インストール元パッケージ名
Android 例: PC対応ストア:
|
install_receiptiOS |
不正検証用のBase64エンコードされたiOSインストールレシート。
例(一部省略): |
ディープリンクパラメータ
ディープリンクのサポート
| パラメータ | 説明 |
|---|---|
openuriiOS、Android |
アプリを開いたURLエンコードされたディープリンク、ユニバーサルリンク、またはアプリリンク。
元のURL:
エンコード例: |
ddl_enablediOS、Android |
アプリが応答で遅延ディープリンクURLを期待するかどうかを示します。
応答例:
|
singular_link_resolve_requirediOS、Android |
Singularショートリンクからロングリンクへの変換を要求します。
応答例:
|
高度なアトリビューションパラメータ
プラットフォームアトリビューション強化
| パラメータ | 説明 |
|---|---|
install_refAndroid (Google Play) ネイティブPC (Google Play Games) |
JSON URLエンコードされたGoogleインストールリファラー情報。 AndroidおよびGoogle Play Games PCインストールに対する最も正確なアトリビューションを提供します。 Android JSON構造:
ネイティブPC JSON構造:
必須対象:
詳細情報:
URLエンコード例: |
meta_refAndroid (Google Play) |
2025年6月18日現在:Meta Advanced Mobile Measurement (AMM) により、Meta Install Referrerの実装が不要になります。 AMMが有効な場合、推奨されません。 JSON URLエンコードされたMeta Install Referrer(詳細なユーザーレベルアトリビューションデータ用) JSON構造: JSON構造:
詳細情報: MetaリファラーFAQ |
attribution_tokeniOS |
AdServicesフレームワークからのApple Search Adsアトリビューショントークン (iOS 14.3以上)。 取得方法: インストール/再インストール後の初回起動時に attributionToken() を呼び出す。
例(一部省略): |
オプションパラメータ
オプションのパラメータは追跡機能を強化し、高度な機能をサポートします。
タイムスタンプパラメータ
| パラメータ | 説明 |
|---|---|
utime
|
セッションの10桁のUnixタイムスタンプ。
例: |
umilisec
|
ミリ秒を含む13桁のUnixタイムスタンプ。
例: |
ネットワークと位置情報パラメータ
| パラメータ | 説明 |
|---|---|
use_ip
|
Singularに、 制限事項:
例: |
country
|
ISO 3166-1alpha-2 2文字の国コード。
必須となる場合:IPアドレスが利用不可の場合
または
例: |
ua
|
URLエンコードされたユーザーエージェント文字列。
未加工:
エンコード後:
|
ciOS、Android |
ネットワーク接続タイプ。
許可値:
例: |
cniOS、Android |
インターネットプロバイダーのキャリア名。
例: |
カスタムプロパティ
| パラメータ | 説明 |
|---|---|
global_properties
|
カスタムキーと値のペアを持つURLエンコードされたJSONオブジェクト。 制限:
JSON:
URLエンコード:
|
アンインストール追跡サポート
| パラメータ | 説明 |
|---|---|
apns_tokeniOS |
Apple Push Notification Service (APNs) デバイストークンの16進エンコード値 。
例:
|
fcmAndroid |
Firebase Cloud Messaging デバイストークン
例:
|
データプライバシーパラメータ
| パラメータ | 説明 |
|---|---|
data_sharing_options
|
データ共有に関するエンドユーザーの同意をURLエンコードしたJSON。 以降のすべてのSESSIONおよびEVENTリクエストで 永続化および引き継ぐ必要があります。 ユーザー同意済み(オプトイン):
ユーザー拒否(オプトアウト):
URLエンコード例:
|
dntiOS、Android |
Do Not Track ステータス。
例: |
dntoffiOS、Android |
Do Not TrackがOFFの場合を示します。
例: |
クロスデバイスサポート
| パラメータ | 説明 |
|---|---|
custom_user_id
|
クロスデバイス追跡用の内部ユーザーID。
例: |
SKAdNetworkサポート
| パラメータ | 説明 |
|---|---|
skan_conversion_valueiOS |
セッション時点での最新のSKAdNetworkコンバージョン値。 詳細はこちら: SKAdNetwork の実装
例: |
skan_first_call_timestampiOS |
SKAdNetwork API の最初の呼び出しの Unix タイムスタンプ。
例: |
skan_last_call_timestampiOS |
セッション時間におけるSKAdNetwork APIへの最新呼び出しのUnixタイムスタンプ。 例: xml-ph-0000@deepl.internal
例: |
Google Ads ICM サポート(ベータ版)
| パラメータ | 説明 |
|---|---|
odm_infoiOS |
Google Ads統合コンバージョン測定 (ベータ版)に必要なもの。 |
odm_erroriOS |
Google Ads 統合コンバージョン測定 (ベータ版) に必要です。 |
リクエスト例
サンプルコードは、複数のプログラミング言語における SESSIONエンドポイントの統合を実演します。
免責事項:コードサンプルには
必要なパラメータがすべて含まれていない場合があります。本番環境での実装前に
完全なパラメータリストを検証してください。開発/テストには一意のi (アプリ識別子)を
使用してください。
Python 例
import requests
params = {
'a': 'sdk_key_here',
'p': 'Android',
'i': 'com.singular.app',
'ip': '10.1.2.3',
've': '9.2',
'ma': 'samsung',
'mo': 'SM-G935F',
'lc': 'en_US',
'aifa': '8ecd7512-2864-440c-93f3-a3cabe62525b',
'asid': 'edee92a2-7b2f-45f4-a509-840f170fc6d9',
'install': 'true',
'n': 'MyCoolAppName',
'bd': 'Build/13D15',
'app_v': '1.2.3',
'openuri': 'myapp://home/page?queryparam1=value1',
'ddl_enabled': 'true',
'install_source': 'com.android.vending',
'install_time': 1510040127,
'update_time': 1510090877
}
response = requests.get('https://s2s.singular.net/api/v1/launch', params=params)
print(response.json())
cURL 例
curl -G "https://s2s.singular.net/api/v1/launch" \
--data-urlencode "a=sdk_key_here" \
--data-urlencode "p=Android" \
--data-urlencode "i=com.singular.app" \
--data-urlencode "ip=10.1.2.3" \
--data-urlencode "ve=9.2" \
--data-urlencode "ma=samsung" \
--data-urlencode "mo=SM-G935F" \
--data-urlencode "lc=en_US" \
--data-urlencode "aifa=8ecd7512-2864-440c-93f3-a3cabe62525b" \
--data-urlencode "asid=edee92a2-7b2f-45f4-a509-840f170fc6d9" \
--data-urlencode "install=true" \
--data-urlencode "n=MyCoolAppName" \
--data-urlencode "bd=Build/13D15" \
--data-urlencode "app_v=1.2.3" \
--data-urlencode "openuri=myapp://home/page?queryparam1=value1" \
--data-urlencode "ddl_enabled=true" \
--data-urlencode "install_source=com.android.vending" \
--data-urlencode "install_time=1510040127" \
--data-urlencode "update_time=1510090877"
HTTP例
GET /api/v1/launch
?a=sdk_key_here
&p=Android
&i=com.singular.app
&ip=10.1.2.3
&ve=9.2
&ma=samsung
&mo=SM-G935F
&lc=en_US
&aifa=8ecd7512-2864-440c-93f3-a3cabe62525b
&asid=edee92a2-7b2f-45f4-a509-840f170fc6d9
&install=true
&n=MyCoolAppName
&bd=Build%2F13D15
&app_v=1.2.3
&openuri=myapp%3A%2F%2Fhome%2Fpage%3Fqueryparam1%3Dvalue1
&ddl_enabled=true
&install_source=com.android.vending
&install_time=1510040127
&update_time=1510090877 HTTP/1.1
Host: s2s.singular.net
Accept: application/json
Javaの例
// Base URL
String baseUrl = "https://s2s.singular.net/api/v1/launch";
// Parameters
Map<String, String> params = new HashMap<>();
params.put("a", "sdk_key_here");
params.put("p", "Android");
params.put("i", "com.singular.app");
params.put("ip", "10.1.2.3");
params.put("ve", "9.2");
params.put("ma", "samsung");
params.put("mo", "SM-G935F");
params.put("lc", "en_US");
params.put("aifa", "8ecd7512-2864-440c-93f3-a3cabe62525b");
params.put("asid", "edee92a2-7b2f-45f4-a509-840f170fc6d9");
params.put("install", "true");
params.put("n", "MyCoolAppName");
params.put("bd", "Build/13D15");
params.put("app_v", "1.2.3");
params.put("openuri", "myapp://home/page?queryparam1=value1");
params.put("ddl_enabled", "true");
params.put("install_source", "com.android.vending");
params.put("install_time", "1510040127");
params.put("update_time", "1510090877");
// Build URL with encoded parameters
StringBuilder urlBuilder = new StringBuilder(baseUrl);
urlBuilder.append('?');
for (Map.Entry<String, String> entry : params.entrySet()) {
if (urlBuilder.length() baseUrl.length() + 1) {
urlBuilder.append('&');
}
urlBuilder.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8))
.append('=')
.append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8));
}
// Create connection
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
// Get response
int responseCode = conn.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream())
);
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// Check status
System.out.println("HTTP Status Code: " + responseCode);
System.out.println("Response: " + response.toString());
// Disconnect
conn.disconnect();
レスポンスコードとエラー
SESSIONエンドポイントは、リクエストの成功または失敗を示すHTTPステータスコードとJSONレスポンスを返します。
完全なエラードキュメント: S2Sレスポンスコードとエラー処理
テストと検証
Singular SDKコンソールを使用したリアルタイムデータ検証により、本番環境デプロイ前にS2S統合を検証してください。
テスト手順
エンドツーエンド検証
- テストデバイスの登録:デバイスの広告IDを取得し、 Singular SDKコンソールに追加
- コンソールログを有効化: SDKコンソールでデバイス識別子を追加しテストデータを取得
-
開発用アプリIDを使用:アプリ識別子を
開発バージョン(例:
com.singular.app.dev)で上書きし、 テストデータを本番環境データから分離 - アプリ起動:終了状態からアプリを開きセッションをトリガー
- クライアントデータの検証:アプリがすべての必須 Singularデータポイントをサーバーに送信していることを確認
-
サーバーリクエストの確認:サーバーが必須パラメータ全てを伴い
https://s2s.singular.net/api/v1/launch宛てに SESSIONリクエストを送信していることを確認 - SDKコンソールの確認:数秒以内にSESSIONイベントが SDKコンソールに表示される
- テストの繰り返し:アプリ起動時およびフォアグラウンド操作の たびにSESSIONがトリガーされることを検証
重要確認事項:アプリ起動/フォアグラウンド時に いかなるEVENTリクエストよりも前にSESSIONイベントが発生することを確認。順序が間違っていると アトリビューションエラーが発生します。
成功の指標:SDKコンソールにSESSIONが表示された場合、 エンドツーエンドの統合テストが正常に完了したことを示します!
追加リソース
テストドキュメント
包括的なテストガイド: S2S統合テストガイド