サーバー間通信 - SESSION エンドポイント API リファレンス

ドキュメント

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

ユーザーセッションを追跡し、アプリインストール、再エンゲージメント、 およびリテンション指標の帰属を有効化します。SingularのREST APIをサーバー間連携で利用し、 SDK実装の代替手段として提供します。


概要

サーバー間連携のユースケース

Singular REST APIは、アプリがデバイス固有データをバックエンドに転送し、 バックエンドがSingularサーバーに送信してアトリビューション処理と分析レポートを実行する 直接的なサーバー間連携を可能にします。

サポート機能:

  • インストールアトリビューション:マーケティングキャンペーンへのファーストタッチアトリビューション
  • 再エンゲージメントアトリビューション:リピーターユーザー向けマルチタッチアトリビューション
  • リテンション指標:セッションベースのエンゲージメント追跡
  • イベントトラッキング:カスタムアプリ内イベント計測

データフローアーキテクチャ

サーバー間連携は4段階のデータ伝送プロセスに従います。

  1. クライアント収集:アプリが必須のデバイス およびアプリケーションデータを収集
  2. サーバー送信:アプリが収集したデータを バックエンドサーバーに転送
  3. Singular API呼び出し:サーバーがSingular REST APIエンドポイントへデータを送信
  4. レスポンス処理:サーバーがSingularの応答を受信・処理

Session Data Flow Diagram


主な考慮事項

必須要件:

  • リアルタイム処理:リクエストは個別に処理され、 バッチ処理はサポートされません
  • 時系列順:イベントは時系列順に送信する必要がある
  • 重複排除なし:Singularはデータの重複排除を行わない— サーバー側で重複排除を実装
  • データの永続性:デバイスレベルのデータは取り込み後に 削除不可—送信前に検証
  • セッション優先:イベント追跡前にセッション確立必須

統合メリット:

  • 柔軟性:データ収集と送信タイミングを完全に制御可能
  • 機能互換性:適切なデータ提供時、 全SDK機能をサポート
  • カスタム実装:特定のバックエンドアーキテクチャに 統合を適応

セッション管理

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

セッション送信のタイミング

セッショントリガー

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

  • 新規インストール:インストール後の初回起動
  • 終了状態からの起動:アプリが完全に終了した状態から起動
  • バックグラウンドからフォアグラウンド:タイムアウト期間後(推奨: 60秒)にアプリがフォアグラウンドに戻る時

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

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

推奨実装:

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

ディープリンクサポート:ディープリンク、ユニバーサルリンク、またはopenuri パラメータが設定されたアプリリンク経由でアプリが起動した場合、タイムアウト状態に関わらず常にSESSIONを送信する。


アトリビューション処理

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

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

セッションタイプ Singular処理 アトリビューション結果
初回セッション(新規インストール) インストールアトリビューションプロセスがトリガーされる インストールをマーケティングキャンペーンに帰属
再エンゲージメント適格 再エンゲージメントアトリビューションプロセスがトリガーされました ユーザーがキャンペーンまたはディープリンクに復帰したことを帰属
標準セッション リテンション追跡用にセッションを記録 ユーザー活動およびエンゲージメント指標に計上

詳細はこちら: 再エンゲージメントアトリビューションに関するよくある質問


イベント順序要件

セッションとイベントのタイミングは、アトリビューションの精度とデータ品質に直接影響します。 重要な順序付けルール:

重要な順序ルール:

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

高度なオプション

拡張機能

Singular S2S統合は、追加のセッションパラメータを必要とする高度な機能をサポートします。

高度な機能:ディープリンク、SKAdNetwork、クロスデバイス追跡の要件については 高度なS2Sオプション を参照してください。


APIエンドポイント仕様

SESSIONエンドポイントは、デバイス、アプリケーション、アトリビューションデータを含むクエリパラメータを伴うGETリクエストを受け付けます。

エンドポイントURL

ベースURLとメソッド

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

リクエスト形式:

GET /api/v1/launch?param1=value1&param2=value2

リクエスト本文:リクエスト本文は提供しないでください。すべてのパラメータは GETメソッドを使用してURLクエリパラメータとして送信する必要があります。


必須パラメータ

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

API認証

SDKキー

パラメータ タイプ 説明
a string

API認証用のSingular SDKキー。

取得元:Singular UI → メインメニュー → 開発者ツール

例: sdkKey_afdadsf7asf56

重要:レポーティング APIキーは使用しないでください—リクエストは拒否されます。


デバイス識別子

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

デバイス識別子はプラットフォームおよび可用性によって異なります。該当するすべての識別子を含めてください。 プラットフォームに適用される識別子。

パラメータ プラットフォーム 説明
idfa iOS

広告主向け識別子 (IDFA) 広告トラッキングとキャンペーンアトリビューションを可能にします。

ATT要件:iOS 14.5以降では App Tracking Transparencyフレームワークによるユーザーのオプトインが必要

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

例:DFC5A647-9043-4699-B2A5-76F03A97064B

idfv iOS

ベンダー識別子(IDFV) 同一ベンダーの全アプリで一貫して使用されます。

常に必須:ATTステータスやIDFAの有無にかかわらず含める必要がある

例:21DB6612-09B3-4ECC-84AC-B353B0AF1334

aifa Android
(Google Play)

Google Advertising ID (GAID) Android 端末でユーザーがリセット可能な広告トラッキングを可能にします。

  • Google Playデバイスでは必須
  • Google Play以外の端末では省略
  • 利用不可の場合は省略—NULLや空文字列を絶対に渡さない
  • AIFAを取得

例:8ecd7512-2864-440c-93f3-a3cabe62525b

asid Android
(Google Play)

AndroidアプリセットID 同一開発者によるアプリ間追跡をプライバシー保護の観点から提供 。

常に必須:GAIDの有無にかかわらず、 Google Playデバイスでは必ず含める必要があります

例:edee92a2-7b2f-45f4-a509-840f170fc6d9

amid Android
(Amazon)

Amazon広告ID Google Playサービス非搭載のAmazonデバイス向け。

  • Amazon Fireデバイスに必須
  • 利用不可の場合は省略
  • AMIDを取得

例:df07c7dc-cea7-4a89-b328-810ff5acb15d

oaid Android
(中国OEMメーカー)

Google Play サービス非搭載の中国製デバイス向けオープン広告識別子 (OAID) (Huawei、Xiaomi、OPPO など)。

  • Google Play Services非搭載の中国OEMデバイスに必須
  • 利用不可の場合は省略
  • OAIDを取得

例:01234567-89abc-defe-dcba-987654321012

andi Android
(Google Play非対応)

Android IDはデバイス生成の64ビット識別子です。

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

例: fc8d449516de0dfb

sdid PC、Xbox、PlayStation、Nintendo、MetaQuest、CTV

Singular Device IDはクライアント生成のUUIDv4であり、 アプリインストールを一意に識別します。

主要識別子:PCおよびコンソールアプリケーションで 使用される唯一のデバイス識別子

例:40009df0-d618-4d81-9da1-cbb3337b8dec

sing エンタープライズ専用

標準識別子が利用できない特殊なユースケース向けに クライアントが定義する識別子。

制限付き:エンタープライズ顧客専用 アプリごとにSingularソリューションエンジニアによる有効化が必要 詳細についてはCSMにお問い合わせください。

例:da534a95-1b1b-47d4-94b6-07955ec85177


デバイスパラメータ

デバイス情報

パラメータ 説明
p

アプリケーションのプラットフォーム。

許可値(大文字小文字を区別):

  • Android
  • iOS
  • PC
  • Xbox
  • プレイステーション
  • Nintendo
  • MetaQuest
  • CTV

例: Android

ip

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

例: 172.58.29.235

ve

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

例: 9.2

ma
iOS、Android

デバイスのメーカー名。mo (モデル) と組み合わせて使用する必要があります。

デバイスのメーカーを取得

例: Samsung,LG, Apple

mo
iOS、Android

デバイスのモデル。ma (メーカー)と組み合わせて使用する必要があります。

デバイスのモデルを取得

例: iPhone 4S, Galaxy SIII

lc
iOS、Android

IETFロケールタグ—2文字の言語コードと国コードを アンダースコアで区切ったもの。

デバイスのロケールを取得

例: en_US

bd
iOS、Android

デバイスのビルド識別子、URLエンコード済み。

デバイスのビルドを取得

例: Build%2F13D15


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

アプリ情報

パラメータ 説明
i

アプリ識別子(大文字小文字を区別)。

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

例: com.singular.app

app_v

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

例: 1.2.3

install

インストール後または再インストール後の最初のセッションであるかどうかを示します。 - インストール後または再インストール後の最初のセッション

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

必要条件:再インストール追跡機能

例: true

install_time
iOS、Android

初回アプリインストール時のUnixタイムスタンプ。

例: 1510040127

update_time
iOS、Android

アプリ最終更新のUnixタイムスタンプ。

例: 1510040127

att_authorization_status
iOS

アプリ追跡透明性(ATT)ステータスコード(iOS 14.5以降)。

ステータス値:

  • 0 - 未確定(プロンプト非表示)
  • 1 - 制限あり(デバイスレベルの追跡が無効化) - 許可(ユーザーが追跡を許可)
  • 2 - 拒否済み(ユーザーが許可を拒否)
  • 3 - 許可済み(ユーザーが許可を付与)

常に必須:ATTが実装されていなくても、0 (未確定)を送信すること。

例: 3


不正防止パラメータ

インストールソース検証

パラメータ 説明
install_source
Android、PC

インストール元パッケージ名またはストア識別子。

Android:インストール元パッケージ名

Android 例: com.android.vending (Google Play ストア)

PC対応ストア:

  • steam
  • epic
  • microsoftstore
  • humblestore
  • GOG
  • 自主流通
install_receipt
iOS

不正検証用のBase64エンコードされたiOSインストールレシート。

例(一部省略):MIJF9wYJKoZIhvcNAQcCoIJF6DCCReQCAQExCzAJBgUrDgMCGgUAMII1m...


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

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

パラメータ 説明
openuri
iOS、Android

アプリを開いたURLエンコードされたディープリンク、ユニバーサルリンク、またはアプリリンク。

元のURL:myapp://home/page?queryparam1=value1&queryparam2=value2

エンコード例:myapp%3A%2F%2Fhome%2Fpage%3Fqueryparam1%3Dvalue1%26queryparam2%3Dvalue2

ddl_enabled
iOS、Android

アプリが応答で遅延ディープリンクURLを期待するかどうかを示します。

  • true - 応答に遅延ディープリンクを期待
  • false - 遅延ディープリンクを 期待しない

応答例:

{
  "deferred_deeplink": "myapp://deferred-deeplink",
  "status": "ok",
  "deferred_passthrough": "passthroughvalue"
}
singular_link_resolve_required
iOS、Android

Singularショートリンクからロングリンクへの変換を要求します。openuri にSingularショートリンクを含めて使用する必要があります。

  • 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
Android (Google Play)
ネイティブPC (Google Play Games)

JSON URLエンコードされたGoogleインストールリファラー情報。 AndroidおよびGoogle Play Games PCインストールに対する最も正確なアトリビューションを提供します。

Android JSON構造:

{
   "installBeginTimestampSeconds":"1568939453",
   "referrer":"utm_source=google-play&utm_medium=organic",
   "clickTimestampSeconds":"0",
   "referrer_source":"service",
   "current_device_time":"1568944524"
}

ネイティブPC JSON構造:

{
   "install_time_epoch_seconds":"1568939453",
   "install_referrer":"utm_source=google-play&utm_medium=organic"
}

必須対象:

  • Facebookユーザーレベルエクスポート
  • データ送信先の共有
  • ポストバック精度

詳細情報:

 

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

meta_ref
Android (Google Play)

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

JSON URLエンコードされたMeta Install Referrer(詳細なユーザーレベルアトリビューションデータ用) JSON構造:

JSON構造:

{
  "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
  }
}

詳細情報: MetaリファラーFAQ

attribution_token
iOS

AdServicesフレームワークからのApple Search Adsアトリビューショントークン (iOS 14.3以上)。

取得方法: インストール/再インストール後の初回起動時に attributionToken() を呼び出す

例(一部省略):KztLg%2FIkNsWDMuBMOU%2BySnkPU5myJb4OFmeaMUE%2BTqQJP...


オプションパラメータ

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

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

パラメータ 説明
utime

セッションの10桁のUnixタイムスタンプ。

例: 1483228800

umilisec

ミリ秒を含む13桁のUnixタイムスタンプ。

例: 1483228800000


ネットワークと位置情報パラメータ

パラメータ 説明
use_ip

Singularに、ip パラメータの代わりにHTTPリクエストからIPアドレスを抽出するよう指示します。

制限事項:

  • SingularによるIPベースの地理位置情報の取得を無効化します
  • country パラメータで2文字の国コードを指定 パラメータと排他的—両方を使用しない
  • ip パラメータと排他的—両方の使用は不可
  • データ拒否を回避するため、ip またはuse_ipのいずれかを必ず指定すること

例: true

country

ISO 3166-1alpha-2 2文字の国コード。

必須となる場合:IPアドレスが利用不可の場合 またはuse_ip=trueが指定されていない場合

例: US

ua

URLエンコードされたユーザーエージェント文字列。

未加工: 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

ネットワーク接続タイプ。

許可値: wifi, carrier

例: wifi

cn
iOS、Android

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

例: Comcast


カスタムプロパティ

パラメータ 説明
global_properties

カスタムキーと値のペアを持つURLエンコードされたJSONオブジェクト。

制限:

  • 最大5組のキーと値のペア
  • キーと値それぞれ最大200文字

JSON: {"key1":"value1","key2":"value2"}

URLエンコード: %7B%22key1%22%3A%22value1%22%2C%22key2%22%3A%22value2%22%7D


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

パラメータ 説明
apns_token
iOS

Apple Push Notification Service (APNs) デバイストークンの16進エンコード値 。

例: b0adf7c9730763f88e1a048e28c68a9f806ed032fb522debff5bfba010a9b052

fcm
Android

Firebase Cloud Messaging デバイストークン

例: bk3RNwTe3H0CI2k_HHwgIpoDKCIZvvD...MExUdFQ3P1


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

パラメータ 説明
data_sharing_options

データ共有に関するエンドユーザーの同意をURLエンコードしたJSON。 以降のすべてのSESSIONおよびEVENTリクエストで 永続化および引き継ぐ必要があります。

ユーザー同意済み(オプトイン):

{"limit_data_sharing":false}

ユーザー拒否(オプトアウト):

{"limit_data_sharing":true}

URLエンコード例: %7B%22limit_data_sharing%22%3Atrue%7D

dnt
iOS、Android

Do Not Track ステータス。

  • 1 - Do Not Track 有効
  • 0 - 追跡拒否が無効

例: 0

dntoff
iOS、Android

Do Not TrackがOFFの場合を示します。

  • 0 - Do Not Track 有効 (OFF=false)
  • 1 - 追跡拒否が無効(OFF=true)

例: 1


クロスデバイスサポート

パラメータ 説明
custom_user_id

クロスデバイス追跡用の内部ユーザーID。

例: 123456789abcd


SKAdNetworkサポート

パラメータ 説明
skan_conversion_value
iOS

セッション時点での最新のSKAdNetworkコンバージョン値。

詳細はこちら: SKAdNetwork の実装

例: 7

skan_first_call_timestamp
iOS

SKAdNetwork API の最初の呼び出しの Unix タイムスタンプ。

例: 1483228800

skan_last_call_timestamp
iOS

セッション時間におけるSKAdNetwork APIへの最新呼び出しのUnixタイムスタンプ。 例: xml-ph-0000@deepl.internal

例: 1483228800


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

パラメータ 説明
odm_info
iOS

Google Ads統合コンバージョン測定 (ベータ版)に必要なもの。

Google Ads ICM ドキュメント

odm_error
iOS

Google Ads 統合コンバージョン測定 (ベータ版) に必要です。

Google Ads ICM ドキュメント


リクエスト例

サンプルコードは、複数のプログラミング言語における SESSIONエンドポイントの統合を実演します。

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

PYTHONCURLHTTPJAVA

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())

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

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

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


テストと検証

Singular SDKコンソールを使用したリアルタイムデータ検証により、本番環境デプロイ前にS2S統合を検証してください。

テスト手順

エンドツーエンド検証

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

SDK Console Session Event

重要確認事項:アプリ起動/フォアグラウンド時に いかなるEVENTリクエストよりも前にSESSIONイベントが発生することを確認。順序が間違っていると アトリビューションエラーが発生します。

成功の指標:SDKコンソールにSESSIONが表示された場合、 エンドツーエンドの統合テストが正常に完了したことを示します!


追加リソース

テストドキュメント

包括的なテストガイド: S2S統合テストガイド