Server-to-Server - SESSION エンドポイント API リファレンス

SESSION エンドポイント API リファレンス

Singular の REST API を使用し、SDK 実装の代替となる server-to-server インテグレーションによって、ユーザーセッションを追跡し、アプリインストール、リエンゲージメント、リテンション指標のアトリビューションを可能にします。


概要

Server-to-Server のユースケース

SESSION エンドポイントは、ユーザーがアプリを開いたときに Singular に通知し、インストールおよびリエンゲージメントのアトリビューションとリテンション指標を支えます。Server-to-Server が初めての場合は、コアとなる概念と共通のセットアップについては、 S2S 基礎ガイド を参照してください。

サポートされる機能:

  • インストールアトリビューション: マーケティングキャンペーンへのファーストタッチアトリビューション
  • リエンゲージメントアトリビューション: 復帰ユーザーに対するマルチタッチアトリビューション
  • リテンション指標: セッションベースのエンゲージメント追跡

セッション管理

SESSION エンドポイントは、アトリビューションと追跡のためにユーザーセッションを初期化するアプリのオープンイベントを Singular に通知します。

セッションを送信するタイミング

セッションのトリガー

以下のアプリライフサイクルイベントで SESSION リクエストを送信します:

  • 新規インストール: インストール後の初回アプリ起動
  • 終了状態からの起動: 完全に閉じた状態からアプリを開く
  • バックグラウンドからフォアグラウンドへ: タイムアウト期間(推奨: 60 秒)経過後にアプリがフォアグラウンドに復帰する

セッションタイムアウトのロジック

アプリの短時間のバックグラウンド化中に過剰な SESSION リクエストが発生しないよう、セッションタイムアウトを実装します。

推奨される実装:

  • タイムアウト時間: 60 秒(1 分)
  • フォアグラウンド復帰 < タイムアウト: タイムアウト期間内にアプリがフォアグラウンドに復帰した場合は SESSION を送信しない
  • フォアグラウンド復帰 > タイムアウト: タイムアウト期間を超えてアプリがバックグラウンドのままだった場合は SESSION を送信する
  • アプリライフサイクルの追跡: アプリのライフサイクルイベントとタイマーを使用してセッション状態を管理する

ディープリンクのサポート: ディープリンク、Universal Links、または App Links 経由でアプリが開かれた場合は、タイムアウトの状態にかかわらず、 openuri パラメータを設定して必ず SESSION を送信してください。


アトリビューション処理

セッションベースのアトリビューション

Singular は SESSION リクエストを処理してアトリビューションの種類を判定し、適切なワークフローをトリガーします。

セッションの種類 Singular の処理 アトリビューション結果
初回セッション(新規インストール) インストールアトリビューション処理がトリガーされる インストールをマーケティングキャンペーンにアトリビュートする
リエンゲージメントの条件を満たす リエンゲージメントアトリビューション処理がトリガーされる ユーザーの復帰をキャンペーンまたはディープリンクにアトリビュートする
標準セッション リテンション追跡のためにセッションが記録される ユーザーアクティビティとエンゲージメント指標に計上される

詳細: リエンゲージメントアトリビューション FAQ


イベント順序の要件

セッションとイベントのタイミングは、アトリビューションの精度とデータ品質に直接影響します。

重要な順序ルール:

  1. イベントの前にセッション: そのセッションのイベントよりも前に、単一の SESSION を受信する必要があります
  2. イベントのリアルタイム送信: アプリ内イベントは、それぞれのセッションの後にリアルタイムで送信する必要があります
  3. 順次処理: セッションの順序が不正な場合、データの不整合とアトリビューションエラーが発生します

API エンドポイント仕様

SESSION エンドポイントは、パラメータを application/x-www-form-urlencoded として送信する POST リクエストを受け付けます。

エンドポイント

ベース URL とメソッド

POST https://s2s.singular.net/api/v1/launch

必須ヘッダー:

Content-Type: application/x-www-form-urlencoded

リクエスト形式:

POST /api/v1/launch HTTP/1.1
Host: s2s.singular.net
Content-Type: application/x-www-form-urlencoded

param1=value1&param2=value2

必須パラメータ

すべての SESSION リクエストには、これらの必須パラメータを適切な値と形式で含める必要があります。

API 認証

SDK キー

パラメータ 詳細
a

型: String
API 認証用の Singular SDK キー。
取得元: Singular UI → メインメニュー → Developer Tools

重要: Reporting API キーは使用しないでください。リクエストが拒否されます。

例: sdkKey_afdadsf7asf56


デバイス識別子

プラットフォーム固有の識別子

パラメータ 詳細
idfa

プラットフォーム: iOS
型: UUIDv4
広告主用識別子(IDFA) は、広告トラッキングとキャンペーンアトリビューションを可能にします。
ATT の要件: iOS 14.5 以降では、App Tracking Transparency フレームワークを介したユーザーのオプトインが必要です。
例: DFC5A647-9043-4699-B2A5-76F03A97064B

  • IDFA が利用できない場合(ユーザーが ATT プロンプトを拒否した場合)はパラメータを省略します。
  • NULL や空文字列を渡さないでください。
  • IDFA を取得する
idfv

プラットフォーム: iOS
型: UUIDv4
ベンダー用識別子(IDFV) は、同じベンダーのすべてのアプリで一貫して同じ値になります。
常に必須: ATT の状態や IDFA の利用可否にかかわらず、必ず含める必要があります。
例: 21DB6612-09B3-4ECC-84AC-B353B0AF1334

aifa

プラットフォーム: Android
型: UUIDv4
(Google Play)
Google Advertising ID (GAID) は、Android 上でユーザーがリセット可能な広告トラッキングを可能にします。
例: 8ecd7512-2864-440c-93f3-a3cabe62525b

  • Google Play デバイスでは必須です。
  • Google Play 以外のデバイスでは省略します。
  • 利用できない場合は省略します。NULL や空文字列は絶対に渡さないでください。
  • AIFA を取得する
asid

プラットフォーム: Android
型: UUIDv4
(Google Play)
Android App Set ID は、同一デベロッパー向けにプライバシーに配慮したアプリ横断のトラッキングを提供します。
常に必須: GAID の利用可否にかかわらず、Google Play デバイスでは必ず含める必要があります。
例: edee92a2-7b2f-45f4-a509-840f170fc6d9

amid

プラットフォーム: Android
型: UUIDv4
(Amazon)
Amazon Advertising ID は、Google Play 開発者サービスがない Amazon デバイス向けです。
例: df07c7dc-cea7-4a89-b328-810ff5acb15d

  • Amazon Fire デバイスでは必須です。
  • 利用できない場合は省略します。
  • AMID を取得する
oaid

プラットフォーム: Android
型: UUIDv4
(Chinese OEMs)
Open Advertising Identifier(OAID)は、Google Play 開発者サービスがない中国製デバイス(Huawei、Xiaomi、OPPO など)向けです。
例: 01234567-89abc-defe-dcba-987654321012

  • Google Play がない中国 OEM デバイスでは必須です。
  • 利用できない場合は省略します。
  • OAID を取得する
andi

プラットフォーム: Android
型: String
(Non-Google Play)
Android ID は、デバイスが生成する 64 ビットの識別子です。

制限付きの使用: Google Play デバイスでは禁止されています。代わりに AIFA と ASID を使用してください。他に利用できる識別子がなく、かつアプリが Google Play 経由で配信されていない場合にのみ送信してください。

例: fc8d449516de0dfb

sdid

プラットフォーム: iOS, Android, PC, Xbox, PlayStation, Nintendo, MetaQuest, CTV
型: UUIDv4
Singular Device ID は、一意のアプリインストールを表す、クライアント側で生成された匿名の UUIDv4 です。
主要な識別子: PC およびコンソールアプリケーションで唯一関連するデバイス識別子です。
例: 40009df0-d618-4d81-9da1-cbb3337b8dec


デバイスパラメータ

デバイス情報

パラメータ 詳細
p

型: String
アプリケーションのプラットフォーム。
許可される値(大文字小文字を区別):
例: Android

  • Android
  • iOS
  • PC
  • Xbox
  • Playstation
  • Nintendo
  • MetaQuest
  • CTV
ip

型: String
例: 172.58.29.235

デバイスのパブリック IPv4 アドレス。IPv6 もサポートされますが、広告ネットワークとのアトリビューション互換性のため IPv4 を推奨します。
ve

型: String
例: 9.2

セッション時点のデバイスの OS バージョン。
ma

プラットフォーム: iOS, Android
型: String
デバイスのメーカー(製造元名)。 mo (モデル)と併せて使用する必要があります。
デバイスメーカーを取得する
例: Samsung , LG , Apple

mo

プラットフォーム: iOS, Android
型: String
デバイスのモデル。 ma (メーカー)と併せて使用する必要があります。
デバイスモデルを取得する
例: iPhone 4S , Galaxy SIII

lc

プラットフォーム: iOS, Android
型: String
IETF ロケールタグ。2 文字の言語コードと国コードをアンダースコアで区切ったものです。
デバイスロケールを取得する
例: en_US

bd

プラットフォーム: iOS, Android
型: String
デバイスのビルド識別子(URL エンコード済み)。
デバイスビルドを取得する
例: Build%2F13D15


アプリケーションパラメータ

アプリ情報

パラメータ 詳細
i

型: String
アプリ識別子(大文字小文字を区別)。
例: com.singular.app

  • Android: パッケージ名(例: com.singular.app
  • iOS: バンドル ID(例: com.singular.app
  • PC/コンソール: 指定した識別子
app_v

型: String
例: 1.2.3

アプリケーションのバージョン。
att_authorization_status

プラットフォーム: iOS
型: Integer
App Tracking Transparency(ATT)ステータスコード(iOS 14.5 以降)。
ステータス値:

  • 0 - 未決定(プロンプト未表示)
  • 1 - 制限あり(デバイスレベルのトラッキングが無効)
  • 2 - 拒否(ユーザーが許可を拒否)
  • 3 - 許可(ユーザーが許可を付与)

常に必須: ATT を実装していない場合でも、 0 (未決定)を渡してください。

例: 3

パラメータ 詳細
install

型: Boolean
セッションがインストールまたは再インストール後の初回セッションを表すかどうかを示します。
必須となる用途: 再インストールの追跡機能
例: true

  • true - 新規インストール/再インストール後の初回セッション
  • false - 2 回目以降のセッション(アプリはインストール済み)
install_time

プラットフォーム: iOS, Android
型: Integer
OS が報告する、アプリがデバイスに実際にインストールされた時刻の Unix タイムスタンプ(秒)。
例: 1510040127

これはデバイスのインストール時刻であり、Singular のアトリビューションインストール時刻ではありません。アトリビューションでは、セッションタイムスタンプ( utime )が使用されます。これは初回セッション( install=true )のものです。

詳しくは デバイスデータ取得ガイド を参照して、iOS と Android でこの値を取得する方法をご確認ください。

update_time

プラットフォーム: iOS, Android
型: Integer
OS が報告する、アプリがデバイス上で最後に更新された時刻の Unix タイムスタンプ(秒)。
例: 1510040127

詳しくは デバイスデータ取得ガイド を参照して、iOS と Android でこの値を取得する方法をご確認ください。


不正防止パラメータ

インストールソースの検証

パラメータ 詳細
install_source

プラットフォーム: Android, PC
型: String
インストールソースのパッケージ名またはストア識別子。
Android: インストールソースのパッケージ名
Android の例: com.android.vending (Google Play ストア)
PC でサポートされるストア:

  • steam
  • epic
  • microsoftstore
  • humblestore
  • gog
  • selfdistributed
install_receipt

プラットフォーム: iOS
型: String
不正検証用の Base64 エンコードされた iOS インストールレシート。
例(一部省略): MIJF9wYJKoZIhvcNAQcCoIJF6DCCReQCAQExCzAJBgUrDgMCGgUAMII1m...


ディープリンクパラメータ

ディープリンクのサポート

パラメータ 詳細
openuri

プラットフォーム: iOS, Android
型: String
アプリを開いた、URL エンコードされたディープリンク、Universal Link、または App Link。
元の URL: myapp://home/page?queryparam1=value1&queryparam2=value2
エンコードされた例: myapp%3A%2F%2Fhome%2Fpage%3Fqueryparam1%3Dvalue1%26queryparam2%3Dvalue2

ddl_enabled

プラットフォーム: iOS, Android
型: Boolean
アプリがレスポンスで deferred deep link の URL を期待するかどうかを示します。
レスポンス例:

  • true - レスポンスで deferred deep link を期待する
  • false - deferred deep link を期待しない
{
  "deferred_deeplink": "myapp://deferred-deeplink",
  "status": "ok",
  "deferred_passthrough": "passthroughvalue"
}
singular_link_resolve_required

プラットフォーム: iOS, Android
型: Boolean
Singular のショートリンクをロングリンクに解決するようリクエストします。Singular のショートリンクを含む openuri と併せて使用する必要があります。
レスポンス例:

  • true - 展開されたロングリンクを返す
  • false - リンクを解決しない
{
  "status":"ok",
  "resolved_singular_link":"https://myapp.sng.link/A59c0/nha7?_dl=myapp%3A%2F%2Fdeeplink&_ddl=myapp%3A%2F%2Fdeferred-deeplink&_p=passthroughvalue"
}

高度なアトリビューションパラメータ

プラットフォームアトリビューションの強化

パラメータ 詳細
install_ref ネイティブ PC(Google Play Games)

プラットフォーム: Android (Google Play)
型: JSON
JSON を URL エンコードした Google Install Referrer 情報。Android および Google Play Games の PC インストールに対して最も正確なアトリビューションを提供します。
Android の JSON 構造:
ネイティブ PC の JSON 構造:
必須となる用途:
詳細情報:

URL エンコードされた例: %7B%22installBeginTimestampSeconds%22%3A%221568939453%22...

{
   "installBeginTimestampSeconds":"1568939453",
   "referrer":"utm_source=google-play&utm_medium=organic",
   "clickTimestampSeconds":"0",
   "referrer_source":"service",
   "current_device_time":"1568944524"
}
{
   "install_time_epoch_seconds":"1568939453",
   "install_referrer":"utm_source=google-play&utm_medium=organic"
}
  • Facebook のユーザーレベルエクスポート
  • Data Destination の共有
  • ポストバックの精度
meta_ref

プラットフォーム: Android (Google Play)
型: JSON

2025 年 6 月 18 日時点: Meta Advanced Mobile Measurement (AMM) により、Meta Install Referrer の実装が不要になります。AMM が有効な場合は推奨されません。

詳細なユーザーレベルのアトリビューションデータのための、JSON を URL エンコードした Meta Install Referrer。
JSON 構造:
詳細: Meta Referrer FAQ

{
  "install_referrer": {
    "utm_source":"apps.facebook.com",
    "utm_campaign": "fb4a",
    "utm_content": {
      "source":{
        "data":"c7e6b890bf18a059c2185650bdb1af3dced7...",
        "nonce":"24859720343e2381daee9f39ae61"
        },
      "app":533744218636280,
      "t":1731181327
      },
    "is_ct":1,
    "actual_timestamp":1731181444
  }
}
attribution_token

プラットフォーム: iOS
型: String
AdServices フレームワークから取得する Apple Search Ads のアトリビューショントークン(iOS 14.3 以降)。
取得方法: attributionToken() を、インストール/再インストール後の初回アプリ起動時に使用します。
例(一部省略): KztLg%2FIkNsWDMuBMOU%2BySnkPU5myJb4OFmeaMUE%2BTqQJP...


オプションパラメータ

オプションパラメータは、追跡機能を強化し、高度な機能をサポートします。

タイムスタンプパラメータ

パラメータ 詳細
utime

型: Integer
セッションの 10 桁の Unix タイムスタンプ。
例: 1483228800

umilisec

型: Integer
ミリ秒を含む 13 桁の Unix タイムスタンプ。
例: 1483228800000


ネットワークおよび位置情報パラメータ

パラメータ 詳細
use_ip

型: Boolean
IP アドレスを ip パラメータではなく HTTP リクエストから抽出するよう Singular に指示します。

制限事項:

  • Singular による IP ベースの位置情報特定ができなくなります。
  • 2 文字の国コードを country パラメータで指定してください。
  • この設定は ip パラメータと排他的です。両方を同時に使用しないでください。
  • データの拒否を避けるため、 ip または use_ip のいずれかを必ず指定してください。

例: true

country

型: String
ISO 3166-1 alpha-2 の 2 文字の国コード。
必須となる条件: IP アドレスが利用できない場合、または use_ip=true
例: US

ua

型: String
URL エンコードされた User Agent 文字列。
生の値: Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15...
例: Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2014_0...

c

プラットフォーム: iOS, Android
型: String
ネットワーク接続の種類。
許可される値: wifi , carrier
例: wifi

cn

プラットフォーム: iOS, Android
型: String
例: Comcast

インターネットプロバイダーのキャリア名。

カスタムプロパティ

パラメータ 詳細
global_properties

型: JSON
カスタムのキーと値のペアを持つ、URL エンコードされた JSON オブジェクト。
制限:
JSON: {"key1":"value1","key2":"value2"}
URL エンコード: %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D

  • 最大 5 個のキーと値のペア
  • キーと値ごとに最大 200 文字

アンインストール追跡のサポート

パラメータ 詳細
apns_token

プラットフォーム: iOS
型: String
16 進数エンコードされた Apple Push Notification Service(APNs)のデバイストークン。
例: b0adf7c9730763f88e1a048e28c68a9f806ed032fb522debff5bfba010a9b052

fcm

プラットフォーム: Android
型: String
Firebase Cloud Messaging のデバイストークン。
例: bk3RNwTe3H0CI2k_HHwgIpoDKCIZvvD...MExUdFQ3P1


データプライバシーパラメータ

パラメータ 詳細
data_sharing_options

型: JSON
データ共有に関するエンドユーザーの同意を JSON で URL エンコードしたもの。永続化し、以降のすべての SESSION および EVENT リクエストで渡す必要があります。
ユーザーが同意した場合(オプトイン):
ユーザーが拒否した場合(オプトアウト):
例: %7B%22limit_data_sharing%22%3Atrue%7D

{"limit_data_sharing":false}
{"limit_data_sharing":true}
dnt

プラットフォーム: iOS, Android
型: Integer
Do Not Track の状態。
例: 0

  • 1 - Do Not Track 有効
  • 0 - Do Not Track 無効
dntoff

プラットフォーム: iOS, Android
型: Integer
Do Not Track が OFF かどうかを示します。
例: 1

  • 0 - Do Not Track 有効(OFF=false)
  • 1 - Do Not Track 無効(OFF=true)

クロスデバイスのサポート

パラメータ 詳細
custom_user_id

型: String
クロスデバイス追跡のための、社内のユーザー ID。

PII 禁止: 個人を特定できる情報を渡さないでください。生のメールアドレス、電話番号、氏名ではなく、ハッシュ化またはその他の方法で匿名化した内部識別子を使用してください。

例: 123456789abcd


SKAdNetwork のサポート

パラメータ 詳細
skan_conversion_value

プラットフォーム: iOS
型: Integer
セッション時点での最新の SKAdNetwork コンバージョン値。
詳細: SKAdNetwork の実装
例: 7

skan_first_call_timestamp

プラットフォーム: iOS
型: Integer
SKAdNetwork API への最初の呼び出しの Unix タイムスタンプ。
例: 1483228800

skan_last_call_timestamp

プラットフォーム: iOS
型: Integer
セッション時点での SKAdNetwork API への最新の呼び出しの Unix タイムスタンプ。
例: 1483228800


Google Ads ICM のサポート(ベータ版)

パラメータ 詳細
odm_info

プラットフォーム: iOS
型: String
Google Ads Integrated Conversion Measurement(ベータ版)に必須です。
Google Ads ICM ドキュメント

odm_error

プラットフォーム: iOS
型: String
Google Ads Integrated Conversion Measurement(ベータ版)に必須です。
Google Ads ICM ドキュメント


リクエスト例

サンプルコードは、複数のプログラミング言語にわたる SESSION エンドポイントのインテグレーションを示します。

例に関する免責事項: コードサンプルには、すべての必須パラメータが含まれていない場合があります。本番実装の前に、完全なパラメータリストを検証してください。開発/テストには一意の i (アプリ識別子)を使用してください。

PYTHON CURL HTTP JAVA

Python の例

import requests

url = 'https://s2s.singular.net/api/v1/launch'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {
    '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.post(url, data=data, headers=headers)
print(response.json())

レスポンスコードとエラー

SESSION エンドポイントは、リクエストの成功または失敗を示す HTTP ステータスコードと JSON レスポンスを返します。

エラーに関する完全なドキュメント: S2S レスポンスコードとエラー処理


テストと検証

本番デプロイの前に、リアルタイムのデータ検証のために Singular SDK Console を使用して S2S インテグレーションを確認します。

テスト手順

エンドツーエンドの検証

  1. テストデバイスの登録: デバイスの広告 ID を取得し、次の場所に追加します: Singular SDK Console
  2. コンソールロギングの有効化: SDK Console にデバイス識別子を追加してテストデータをキャプチャします
  3. 開発用アプリ ID の使用: アプリ識別子を開発版(例: com.singular.app.dev )で上書きし、テストデータを本番データと分離します
  4. アプリの起動: 終了状態からアプリを開いてセッションをトリガーします
  5. クライアントデータの検証: アプリが必要なすべての Singular データポイントをサーバーに送信していることを確認します
  6. サーバーリクエストの確認: サーバーが SESSION リクエストを https://s2s.singular.net/api/v1/launch に、必要なすべてのパラメータを含めて送信していることを確認します
  7. SDK Console の確認: 数秒以内に、SDK Console に SESSION イベントが表示されるはずです
  8. テストの繰り返し: アプリへの入場やフォアグラウンド操作のたびに SESSION がトリガーされることを検証します

SDK Console のセッションイベント

重要な確認事項: EVENT リクエストの前に、アプリのオープン/フォアグラウンド時に SESSION イベントが発生することを確認してください。順序が不正な場合、アトリビューションエラーが発生します。

成功の指標: SDK Console に SESSION が表示されれば、エンドツーエンドのインテグレーションテストは成功です。


その他のリソース

テストドキュメント

包括的なテストガイド: S2S インテグレーションテストガイド