{"id":15509,"date":"2026-02-20T07:06:13","date_gmt":"2026-02-20T07:06:13","guid":{"rendered":"http:\/\/mariusz.bijok"},"modified":"2026-04-16T07:39:50","modified_gmt":"2026-04-16T07:39:50","password":"","slug":"server-to-server-s2s-setup","status":"publish","type":"docs","link":"https:\/\/tenjin.com\/ja\/docs\/server-to-server-s2s-setup\/","title":{"rendered":"\u30b5\u30fc\u30d0\u9593(S2S)\u9023\u643a"},"content":{"rendered":"\n<h2 class=\"wp-block-heading has-text-align-center\">Event API<\/h2>\n\n\n\n<p class=\"has-text-align-center\">(to be used to send First App Open and App Open events)<\/p>\n\n\n\n<p><strong>Authentication:<\/strong><\/p>\n\n\n\n<p>We authenticate every request sent to the Tenjin server using the Tenjin SDK Key<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>as a parameter api_key in the request URL, or<\/li>\n\n\n\n<li>as the username and leaving the password as empty in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Basic_access_authentication\">basic access authentication<\/a><\/li>\n<\/ul>\n\n\n\n<p><strong>POST or GET URL:<\/strong><\/p>\n\n\n\n<p><code>https:\/\/track.tenjin.com\/v0\/event<\/code><\/p>\n\n\n\n<p><em>A response of {&#8220;code&#8221;:200} indicates a successful request.<\/em><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<p>*: required<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Type<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Example<\/strong><\/td><\/tr><tr><td><code>api_key<\/code>*<\/td><td>String<\/td><td>SDK key Tenjin generated for each app. Please find it on the app page. If you use basic authentication instead, this parameter is not needed.<\/td><td>ENECCCVB8UQVLPSQ58S8EZXTJHA7FHDW<\/td><\/tr><tr><td><code>analytics_installation_id<\/code>*<\/td><td>UUID<\/td><td>Tenjin generated Application install-specific identifier.Available by <a href=\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-callbacks\/\">S2S callbacks<\/a> or SDK(<a href=\"https:\/\/tenjin.com\/docs\/mmp-sdk-android\/#analytics-installation-id\">Android SDK<\/a>,<a href=\"https:\/\/tenjin.com\/docs\/mmp-sdk-ios\/#analytics-installation-id\">iOS SDK<\/a>,<a href=\"https:\/\/tenjin.com\/docs\/mmp-unity-sdk\/#analytics-installation-id\">Unity SDK<\/a>)<\/td><td>29eeb1610fe74997b6d53f02e9711f8c<\/td><\/tr><tr><td><code>advertising_id<\/code>*<\/td><td>String<\/td><td>The raw advertising ID of the device. For opt-out users, it can be empty or all zeros.<\/td><td>f024e65f3dd94f16983726bcef192d68<\/td><\/tr><tr><td><code>developer_device_id<\/code> (*required for iOS)<\/td><td>String<\/td><td>The identifier for vendor<\/td><td>b6bc48fe0ce949e4b229ce6c55663fca<\/td><\/tr><tr><td><code>bundle_id<\/code>*<\/td><td>String<\/td><td>Bundle ID of the app.<\/td><td>com.tenjin.wordfinder<\/td><\/tr><tr><td><code>platform<\/code>*<\/td><td>String<\/td><td><code>ios<\/code>, <code>android<\/code>, <code>amazon<\/code>, <code>android_other<\/code><\/td><td>ios&nbsp;<\/td><\/tr><tr><td><code>limit_ad_tracking<\/code><\/td><td>String<\/td><td>1 for yes, 0 for no.<\/td><td>1<\/td><\/tr><tr><td><code>os_version<\/code>*<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String os_version = String.valueOf(Build.VERSION.SDK_INT)<br><strong>For iOS:<\/strong><br>[[UIDevice currentDevice] systemVersion]<\/td><td>8.0<\/td><\/tr><tr><td><code>app_version<\/code><\/td><td>Float, Decimal<\/td><td>The version of your app<br><strong>For Android:<\/strong><br>String app_version = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName + &#8220;.&#8221; + context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode)<br><strong>For iOS:<\/strong><br>[[[NSBundle mainBundle] infoDictionary] objectForKey:@&#8221;CFBundleShortVersionString&#8221;]<\/td><td>1.0.3<\/td><\/tr><tr><td><code>sdk_version<\/code>*<\/td><td>String<\/td><td><code>server<\/code><\/td><td><code>server<\/code><\/td><\/tr><tr><td><code>country<\/code><\/td><td>String<\/td><td>The ISO locale country codes standard (see <a href=\"https:\/\/developer.apple.com\/library\/mac\/documentation\/Cocoa\/Reference\/Foundation\/Classes\/NSLocale_Class\/index.html\">Apple documentation<\/a> for example).<\/td><td>US<\/td><\/tr><tr><td><code>ip_address<\/code><\/td><td>String<\/td><td>The User&#8217;s IP Address.&nbsp; This is used to lookup country. If this parameter is missing, we will use IP in http header.<\/td><td>71.165.85.114<\/td><\/tr><tr><td><code>ad_user_data<\/code>&nbsp;<\/td><td>Boolean<\/td><td>Google User Consent Signal Parameter: consent of 3P transmission of user level data for ads1 for consent granted0 for consent deniedRemove the parameter entirely from the request (do not set blank) when there is no user consent data<\/td><td>1<\/td><\/tr><tr><td><code>ad_personalization<\/code>&nbsp;<\/td><td>Boolean&nbsp;<\/td><td>Google User Consent Signal Parameter: consent of personalized ads1 for consent granted0 for consent deniedRemove the parameter entirely from the request (do not set blank) when there is no user consent data<\/td><td>1<\/td><\/tr><tr><td><code>referrer<\/code><\/td><td>String<\/td><td>Collected for Android installs tracked<\/td><td>campaign_id%3D<insert tenjin=\"\" campaign_id=\"\">%26clicked_at%3D<timestamp in=\"\" unix=\"\" format=\"\"><\/timestamp><\/insert><\/td><\/tr><tr><td><code>os_version_release<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String os_version_release = String.valueOf(Build.VERSION.RELEASE)<br><strong>For iOS:<\/strong><br>[[UIDevice currentDevice] systemVersion]<\/td><td>8.0.1<\/td><\/tr><tr><td><code>build_id<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String build = String.valueOf(Build.ID)<br><strong>For iOS:&nbsp;<\/strong><br>@import Darwin.sys.sysctl;<br>NSString *build(void) {&nbsp;&nbsp;size_t bufferSize = 64;&nbsp;&nbsp;NSMutableData *buffer =&nbsp;&nbsp;&nbsp;&nbsp;[[NSMutableData alloc]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithLength:bufferSize];&nbsp;&nbsp;int status =&nbsp;&nbsp;&nbsp;&nbsp;sysctlbyname(&#8220;kern.osversion&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.mutableBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;bufferSize, NULL, 0);&nbsp;&nbsp;if (status != 0) {&nbsp;&nbsp;&nbsp;&nbsp;return nil;&nbsp;&nbsp;}&nbsp;&nbsp;return [[NSString alloc]&nbsp;&nbsp;&nbsp;&nbsp;initWithCString:buffer.mutableBytes&nbsp;&nbsp;&nbsp;&nbsp;encoding:NSUTF8StringEncoding];}<\/td><td>UP1B.231005.007<\/td><\/tr><tr><td><code>locale<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:<\/strong><br>String locale = Locale.getDefault().toString()<br><strong>For iOS:<\/strong><br>[[NSLocale currentLocale] localeIdentifier]<\/td><td>es_AR<\/td><\/tr><tr><td><code>device_model<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:<\/strong><br>String device = Build.MODEL;<br><strong>For iOS:<\/strong><br>@import Darwin.sys.sysctl;<br>NSString *device(void) {&nbsp;&nbsp;size_t bufferSize = 64;&nbsp;&nbsp;NSMutableData *buffer =&nbsp;&nbsp;&nbsp;&nbsp;[[NSMutableData alloc]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithLength:bufferSize];&nbsp;&nbsp;int status =&nbsp;&nbsp;&nbsp;&nbsp;sysctlbyname(&#8220;hw.machine&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.mutableBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;bufferSize, NULL, 0);&nbsp;&nbsp;if (status != 0) {&nbsp;&nbsp;&nbsp;&nbsp;return nil;&nbsp;&nbsp;}&nbsp;&nbsp;return [[NSString alloc]&nbsp;&nbsp;&nbsp;&nbsp;initWithCString:buffer.mutableBytes&nbsp;&nbsp;&nbsp;&nbsp;encoding:NSUTF8StringEncoding];}<\/td><td>SM-F731A<\/td><\/tr><tr><td><code>odm_info<\/code><\/td><td>String<\/td><td>This is the string required for running probabilistic attribution via Google Ads for iOS. You will need to fetch this from the ODM SDK first.&nbsp;<\/td><td>AB7Dr_EJBWQ_lT_l1V0z5xqDB9MnLGbINV5r2w1jhVTITlm0IK7QE16Bf2sIjI_twjeMoQl3SedWsZiPtijTZ2DkUYI_H9RI6lkStqbwmBVsnu_QH4hfkuJeMwhFEzBEJCz3a8cdD2U1MRd1jwn2b_hbaHsbVO3NlE0xsExo5HtcuWmsaMdddKn9vFRPtyPQvSLjSl4AlsdyAaYg9Hw-FyYfm9eAbqrxy3NXkZtjJeXRThMG6MTNJA<\/td><\/tr><tr><td><code>customer_user_id<\/code><\/td><td>String<\/td><td>custom User ID for the event<\/td><td>jdabGcerT32_d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Purchase API<\/h2>\n\n\n\n<p class=\"has-text-align-center\">(to be used to send Purchase events)<\/p>\n\n\n\n<p><strong>Authentication:<\/strong><\/p>\n\n\n\n<p>We authenticate every request sent to the Tenjin server using the Tenjin SDK Key<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>as a parameter api_key in the request URL, or<\/li>\n\n\n\n<li>as the username and leaving the password as empty in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Basic_access_authentication\">basic access authentication<\/a>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong>POST or GET URL:<\/strong><\/p>\n\n\n\n<p><code>https:\/\/track.tenjin.com\/v0\/purchase<\/code><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<p>*: required<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Type<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Example<\/strong><\/td><\/tr><tr><td><code>api_key<\/code>*<\/td><td>String<\/td><td>SDK key Tenjin generated for each app. Please find it on the app page. If you use basic authentication instead, this parameter is not needed.<\/td><td>ENECCCVB8UQVLPSQ58S8EZXTJHA7FHDW<\/td><\/tr><tr><td><code>analytics_installation_id<\/code>*<\/td><td>UUID<\/td><td>Tenjin generated Application install-specific identifier.Available by <a href=\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-callbacks\/\">S2S Callbacks<\/a> or SDK.<a href=\"https:\/\/tenjin.com\/docs\/mmp-sdk-android\/#analytics-installation-id\">Android SDK<\/a>,<a href=\"https:\/\/tenjin.com\/docs\/mmp-sdk-ios\/#analytics-installation-id\">iOS SDK<\/a>,<a href=\"https:\/\/tenjin.com\/docs\/mmp-unity-sdk\/#analytics-installation-id\">Unity SDK<\/a><\/td><td>29eeb1610fe74997b6d53f02e9711f8c<\/td><\/tr><tr><td><code>advertising_id<\/code>*<\/td><td>String<\/td><td>The raw advertising ID of the device. For opt-out users, it can be empty or all zeros.<\/td><td>f024e65f3dd94f16983726bcef192d68<\/td><\/tr><tr><td><code>developer_device_id<\/code> (*required for iOS)<\/td><td>String<\/td><td>The identifier for vendor<\/td><td>b6bc48fe0ce949e4b229ce6c55663fca<\/td><\/tr><tr><td><code>bundle_id<\/code>*<\/td><td>String<\/td><td>Bundle ID of the app.<\/td><td>com.tenjin.wordfinder<\/td><\/tr><tr><td><code>platform<\/code>*<\/td><td>String<\/td><td><code>ios<\/code>, <code>android<\/code>, <code>amazon<\/code>, <code>android_other<\/code><\/td><td>ios<\/td><\/tr><tr><td><code>limit_ad_tracking<\/code><\/td><td>String<\/td><td>1 for yes, 0 for no.<\/td><td>1<\/td><\/tr><tr><td><code>os_version<\/code>*<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String.valueOf(Build.VERSION.SDK_INT)<br><strong>For iOS:<\/strong><strong>&nbsp;<\/strong>[[UIDevice currentDevice] systemVersion]<\/td><td>8.0<\/td><\/tr><tr><td><code>app_version<\/code> (*required to track Google Ads)<\/td><td>Float, Decimal<\/td><td>The version of your app<br><strong>For Android:<\/strong><br>String app_version = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName + &#8220;.&#8221; + context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode)<br><strong>For iOS:<\/strong><br>[[[NSBundle mainBundle] infoDictionary] objectForKey:@&#8221;CFBundleShortVersionString&#8221;]<\/td><td>1.0.3<\/td><\/tr><tr><td><code>sdk_version<\/code>*<\/td><td>String<\/td><td><code>server<\/code><\/td><td><code>server<\/code><\/td><\/tr><tr><td><code>ip_address<\/code><\/td><td>String<\/td><td>The User&#8217;s IP Address.&nbsp; This is used to look up countries for Google DMA user consent parameters. If this parameter is missing, we will use IP in http header.<\/td><td>71.165.85.114<\/td><\/tr><tr><td><code>ad_user_data<\/code>&nbsp;<\/td><td>Boolean<\/td><td>Google User Consent Signal Parameter: consent of 3P transmission of user level data for ads1 for consent granted0 for consent deniedRemove the parameter entirely from the request (do not set blank) when there is no user consent data<\/td><td>1<\/td><\/tr><tr><td><code>ad_personalization<\/code>&nbsp;<\/td><td>Boolean&nbsp;<\/td><td>Google User Consent Signal Parameter: consent of personalized ads1 for consent granted0 for consent deniedRemove the parameter entirely from the request (do not set blank) when there is no user consent data<\/td><td>1<\/td><\/tr><tr><td><code>postcut<\/code><\/td><td>String<\/td><td>1 for sending purchases after the platform cut<\/td><td>1<\/td><\/tr><tr><td><code>product_id<\/code>*<\/td><td>String<\/td><td>Unique name for the product purchased.<\/td><td>coin_store<\/td><\/tr><tr><td><code>price<\/code>*<\/td><td>Float, Decimal<\/td><td>The unit price of the item purchased in the currency standard unit (ex. USD is reported in dollars).<\/td><td>0.99<\/td><\/tr><tr><td><code>quantity<\/code>*<\/td><td>Integer<\/td><td>The number of units purchased.<\/td><td>1<\/td><\/tr><tr><td><code>country<\/code><\/td><td>String<\/td><td>The ISO locale country codes standard (see <a href=\"https:\/\/developer.apple.com\/library\/mac\/documentation\/Cocoa\/Reference\/Foundation\/Classes\/NSLocale_Class\/index.html\">Apple documentation<\/a> for example).<\/td><td>US<\/td><\/tr><tr><td><code>currency<\/code>*<\/td><td>String<\/td><td>The ISO currency codes used by Apple and Google (see <a href=\"https:\/\/developer.apple.com\/library\/mac\/documentation\/Cocoa\/Reference\/Foundation\/Classes\/NSLocale_Class\/index.html\">Apple documentation<\/a> for example).<\/td><td>USD<\/td><\/tr><tr><td><code>os_version_release<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String os_version_release = String.valueOf(Build.VERSION.RELEASE)<br><strong>For iOS:<\/strong><br>[[UIDevice currentDevice] systemVersion]<\/td><td>14<\/td><\/tr><tr><td><code>build_id<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String build = String.valueOf(Build.ID)<br><strong>For iOS:&nbsp;<\/strong><br>@import Darwin.sys.sysctl;<br>NSString *build(void) {&nbsp;&nbsp;size_t bufferSize = 64;&nbsp;&nbsp;NSMutableData *buffer =&nbsp;&nbsp;&nbsp;&nbsp;[[NSMutableData alloc]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithLength:bufferSize];&nbsp;&nbsp;int status =&nbsp;&nbsp;&nbsp;&nbsp;sysctlbyname(&#8220;kern.osversion&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.mutableBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;bufferSize, NULL, 0);&nbsp;&nbsp;if (status != 0) {&nbsp;&nbsp;&nbsp;&nbsp;return nil;&nbsp;&nbsp;}&nbsp;&nbsp;return [[NSString alloc]&nbsp;&nbsp;&nbsp;&nbsp;initWithCString:buffer.mutableBytes&nbsp;&nbsp;&nbsp;&nbsp;encoding:NSUTF8StringEncoding];}<\/td><td>UP1B.231005.007<\/td><\/tr><tr><td><code>locale<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:<\/strong><br>String locale = Locale.getDefault().toString()<br><strong>For iOS:<\/strong><br>[[NSLocale currentLocale] localeIdentifier]<\/td><td>es_AR<\/td><\/tr><tr><td><code>device_model<\/code> (*required to track Google Ads)<\/td><td>String<\/td><td><strong>For Android:<\/strong><br>String device = Build.MODEL;<br><strong>For iOS:<\/strong><br>@import Darwin.sys.sysctl;<br>NSString *device(void) {&nbsp;&nbsp;size_t bufferSize = 64;&nbsp;&nbsp;NSMutableData *buffer =&nbsp;&nbsp;&nbsp;&nbsp;[[NSMutableData alloc]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithLength:bufferSize];&nbsp;&nbsp;int status =&nbsp;&nbsp;&nbsp;&nbsp;sysctlbyname(&#8220;hw.machine&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.mutableBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;bufferSize, NULL, 0);&nbsp;&nbsp;if (status != 0) {&nbsp;&nbsp;&nbsp;&nbsp;return nil;&nbsp;&nbsp;}&nbsp;&nbsp;return [[NSString alloc]&nbsp;&nbsp;&nbsp;&nbsp;initWithCString:buffer.mutableBytes&nbsp;&nbsp;&nbsp;&nbsp;encoding:NSUTF8StringEncoding];}<\/td><td>SM-F731A<\/td><\/tr><tr><td><code>customer_user_id<\/code><\/td><td>String<\/td><td>custom User ID for the event<\/td><td>jdabGcerT32_d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> If you don&#8217;t have a proper receipt or signature, don&#8217;t add the parameters at all to the request URL. We can still show the purchase without receipt or signature via S2S on the dashboard<\/mark><\/em>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Custom Event API<\/h2>\n\n\n\n<p class=\"has-text-align-center\">(to be used to send all Custom Events)<\/p>\n\n\n\n<p><strong>Authentication:<\/strong><\/p>\n\n\n\n<p>We authenticate every request sent to the Tenjin server using the Tenjin SDK Key<br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>as a parameter api_key in the request URL, or<\/li>\n\n\n\n<li>as the username and leaving the password as empty in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Basic_access_authentication\">basic access authentication<\/a>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong>POST or GET URL:<\/strong><\/p>\n\n\n\n<p><code>https:\/\/track.tenjin.com\/v0\/event<\/code><\/p>\n\n\n\n<p><strong>Parameters:<\/strong><\/p>\n\n\n\n<p>*: required<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Parameter<\/strong><\/td><td><strong>Type<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Example<\/strong><\/td><\/tr><tr><td><code>api_key<\/code>*<\/td><td>String<\/td><td>SDK key Tenjin generated for each app. Please find it on the app page. If you use basic authentication instead, this parameter is not needed.<\/td><td>ENECCCVB8UQVLPSQ58S8EZXTJHA7FHDW<\/td><\/tr><tr><td><code>analytics_installation_id<\/code>*<\/td><td>UUID<\/td><td>Tenjin generated Application install-specific identifier.Available by <a href=\"https:\/\/docs.tenjin.com\/docs\/callback-setup#custom-callbacks\">S2S callbacks<\/a> or SDK.<a href=\"https:\/\/tenjin.com\/docs\/mmp-sdk-android\/#analytics-installation-id\">Android SDK<\/a>,<a href=\"https:\/\/tenjin.com\/docs\/mmp-sdk-ios\/#analytics-installation-id\">iOS SDK<\/a>,<a href=\"https:\/\/docs.tenjin.com\/docs\/unity-sdk#analytics-installation-id\">Unity SDK<\/a><\/td><td>29eeb1610fe74997b6d53f02e9711f8c<\/td><\/tr><tr><td><code>advertising_id<\/code>*<\/td><td>String<\/td><td>The raw advertising ID of the device. For opt-out users, it can be empty or all zeros.<\/td><td>f024e65f3dd94f16983726bcef192d68<\/td><\/tr><tr><td><code>developer_device_id<\/code> (*required for iOS)<\/td><td>String<\/td><td>The identifier for vendor<\/td><td>b6bc48fe0ce949e4b229ce6c55663fca<\/td><\/tr><tr><td><code>bundle_id<\/code>*<\/td><td>String<\/td><td>Bundle ID of the app.<\/td><td>com.tenjin.wordfinder<\/td><\/tr><tr><td><code>platform<\/code>*<\/td><td>String<\/td><td><code>ios<\/code>, <code>android<\/code>, <code>amazon<\/code>, <code>android_other<\/code><\/td><td>ios<\/td><\/tr><tr><td><code>limit_ad_tracking<\/code><\/td><td>String<\/td><td>1 for yes, 0 for no.<\/td><td>1<\/td><\/tr><tr><td><code>os_version<\/code>*<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String.valueOf(Build.VERSION.SDK_INT)<br><strong>For iOS:&nbsp;<\/strong><br>[[UIDevice currentDevice] systemVersion]<\/td><td>8.0<\/td><\/tr><tr><td><code>app_version<\/code> (* required for Google Ads)<\/td><td>Float, Decimal<\/td><td>The version of your app<br><strong>For Android:<\/strong><br>String app_version = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName + &#8220;.&#8221; + context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode)<br><strong>For iOS:<\/strong><br>[[[NSBundle mainBundle] infoDictionary] objectForKey:@&#8221;CFBundleShortVersionString&#8221;]<\/td><td>1.0.3<\/td><\/tr><tr><td><code>sdk_version<\/code>*<\/td><td>String<\/td><td><code>server<\/code><\/td><td><code>server<\/code><\/td><\/tr><tr><td><code>ip_address<\/code>&nbsp;<\/td><td>String<\/td><td>The User&#8217;s IP Address.&nbsp; This is used to lookup country. If this parameter is missing, we will use IP in http header.<\/td><td>71.165.85.114<\/td><\/tr><tr><td><code>ad_user_data<\/code><\/td><td>Boolean<\/td><td>Google User Consent Signal Parameter: consent of 3P transmission of user level data for ads1 for consent granted0 for consent deniedRemove the parameter entirely from the request (do not set blank) when there is no user consent data<\/td><td>1<\/td><\/tr><tr><td><code>ad_personalization<\/code>&nbsp;<\/td><td>Boolean&nbsp;<\/td><td>Google User Consent Signal Parameter: consent of personalized ads1 for consent granted0 for consent deniedRemove the parameter entirely from the request (do not set blank) when there is no user consent data<\/td><td>1<\/td><\/tr><tr><td><code>event<\/code>*<\/td><td>String<\/td><td>This is the name of the event &#8211; event name (e.g. &#8220;tutorial_complete&#8221;, &#8220;registration_complete&#8221;, or &#8220;level_1_complete&#8221;)<\/td><td>event_complete<\/td><\/tr><tr><td><code>value<\/code><\/td><td>Nil, Integer<\/td><td>Value tied to the event name (above). This can be used for calculating values related to an event name. (e.g want to calculate the number of virtual currency for a specific event).<\/td><td>10<\/td><\/tr><tr><td><code>os_version_release<\/code> (*required for Google Ads)<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String os_version_release = String.valueOf(Build.VERSION.RELEASE)<br><strong>For iOS:<\/strong><br>[[UIDevice currentDevice] systemVersion]<\/td><td>14<\/td><\/tr><tr><td><code>build_id<\/code> (*required for Google Ads)<\/td><td>String<\/td><td><strong>For Android:&nbsp;<\/strong><br>String build = String.valueOf(Build.ID)<br><strong>For iOS:&nbsp;<\/strong><br>@import Darwin.sys.sysctl;<br>NSString *build(void) {&nbsp;&nbsp;size_t bufferSize = 64;&nbsp;&nbsp;NSMutableData *buffer =&nbsp;&nbsp;&nbsp;&nbsp;[[NSMutableData alloc]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithLength:bufferSize];&nbsp;&nbsp;int status =&nbsp;&nbsp;&nbsp;&nbsp;sysctlbyname(&#8220;kern.osversion&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.mutableBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;bufferSize, NULL, 0);&nbsp;&nbsp;if (status != 0) {&nbsp;&nbsp;&nbsp;&nbsp;return nil;&nbsp;&nbsp;}&nbsp;&nbsp;return [[NSString alloc]&nbsp;&nbsp;&nbsp;&nbsp;initWithCString:buffer.mutableBytes&nbsp;&nbsp;&nbsp;&nbsp;encoding:NSUTF8StringEncoding];}<\/td><td>UP1B.231005.007<\/td><\/tr><tr><td><code>locale<\/code> (*required for Google Ads)<\/td><td>String<\/td><td><strong>For Android:<\/strong><br>String locale = Locale.getDefault().toString()<br><strong>For iOS:<\/strong><br>[[NSLocale currentLocale] localeIdentifier]<\/td><td>es_AR<\/td><\/tr><tr><td><code>device_model<\/code> (*required for Google Ads)<\/td><td>String<\/td><td><strong>For Android:<\/strong><br>String device = Build.MODEL;<br><strong>For iOS:<\/strong><br>@import Darwin.sys.sysctl;<br>NSString *device(void) {&nbsp;&nbsp;size_t bufferSize = 64;&nbsp;&nbsp;NSMutableData *buffer =&nbsp;&nbsp;&nbsp;&nbsp;[[NSMutableData alloc]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initWithLength:bufferSize];&nbsp;&nbsp;int status =&nbsp;&nbsp;&nbsp;&nbsp;sysctlbyname(&#8220;hw.machine&#8221;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.mutableBytes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;bufferSize, NULL, 0);&nbsp;&nbsp;if (status != 0) {&nbsp;&nbsp;&nbsp;&nbsp;return nil;&nbsp;&nbsp;}&nbsp;&nbsp;return [[NSString alloc]&nbsp;&nbsp;&nbsp;&nbsp;initWithCString:buffer.mutableBytes&nbsp;&nbsp;&nbsp;&nbsp;encoding:NSUTF8StringEncoding];}<\/td><td>SM-F731A<\/td><\/tr><tr><td><code>customer_user_id<\/code><\/td><td>String<\/td><td>custom User ID for the event<\/td><td>jdabGcerT32_d<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Event API (to be used to send First App Open and App Open events) Authentication: We authenticate every request sent to the Tenjin server using the Tenjin SDK Key POST or GET URL: https:\/\/track.tenjin.com\/v0\/event A response of {&#8220;code&#8221;:200} indicates a successful request. Parameters: *: required ParameterTypeDescriptionExampleapi_key*StringSDK key Tenjin generated for each app. Please find it&#8230;<\/p>","protected":false},"author":25,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"doc_category":[153],"glossaries":[],"doc_tag":[],"class_list":["post-15509","docs","type-docs","status-publish","hentry","doc_category-add-the-tenjin-sdk"],"acf":[],"year_month":"2026-04","word_count":2086,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"mariusz.bijok","author_nicename":"mariusz-bijok","author_url":"https:\/\/tenjin.com\/ja\/blog\/author\/mariusz-bijok\/"},"doc_category_info":[{"term_name":"Tenjin SDKs","term_url":"https:\/\/tenjin.com\/ja\/docs\/category\/add-the-tenjin-sdk\/"}],"doc_tag_info":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Server-To-Server (S2S) Setup | Tenjin<\/title>\n<meta name=\"description\" content=\"Server-To-Server (S2S) Setup Tenjin | %\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tenjin.com\/ja\/docs\/server-to-server-s2s-setup\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Server-To-Server (S2S) Setup | Tenjin\" \/>\n<meta property=\"og:description\" content=\"Server-To-Server (S2S) Setup Tenjin | %\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tenjin.com\/ja\/docs\/server-to-server-s2s-setup\/\" \/>\n<meta property=\"og:site_name\" content=\"Tenjin\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-16T07:39:50+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@TenjinMMP\" \/>\n<meta name=\"twitter:label1\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"7\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/\"},\"author\":{\"name\":\"mariusz.bijok\",\"@id\":\"https:\/\/tenjin.com\/#\/schema\/person\/2df6a56c45e0493e93ec6d7100750b77\"},\"headline\":\"Server-To-Server (S2S) Setup\",\"datePublished\":\"2026-02-20T07:06:13+00:00\",\"dateModified\":\"2026-04-16T07:39:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/\"},\"wordCount\":2055,\"publisher\":{\"@id\":\"https:\/\/tenjin.com\/#organization\"},\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/\",\"url\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/\",\"name\":\"Server-To-Server (S2S) Setup | Tenjin\",\"isPartOf\":{\"@id\":\"https:\/\/tenjin.com\/#website\"},\"datePublished\":\"2026-02-20T07:06:13+00:00\",\"dateModified\":\"2026-04-16T07:39:50+00:00\",\"description\":\"Server-To-Server (S2S) Setup Tenjin | %\",\"breadcrumb\":{\"@id\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/tenjin.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docs\",\"item\":\"https:\/\/tenjin.com\/docs\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Server-To-Server (S2S) Setup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/tenjin.com\/#website\",\"url\":\"https:\/\/tenjin.com\/\",\"name\":\"Tenjin\",\"description\":\"Growth Made Simple\",\"publisher\":{\"@id\":\"https:\/\/tenjin.com\/#organization\"},\"alternateName\":\"Tenjin - Mobile Measurement Partner\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/tenjin.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/tenjin.com\/#organization\",\"name\":\"Tenjin\",\"url\":\"https:\/\/tenjin.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/tenjin.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp\",\"contentUrl\":\"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp\",\"width\":429,\"height\":117,\"caption\":\"Tenjin\"},\"image\":{\"@id\":\"https:\/\/tenjin.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/TenjinMMP\",\"https:\/\/www.youtube.com\/@TenjinMMP\",\"https:\/\/www.linkedin.com\/company\/tenjin\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/tenjin.com\/#\/schema\/person\/2df6a56c45e0493e93ec6d7100750b77\",\"name\":\"mariusz.bijok\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/tenjin.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed77b923271ae0c54cf6cc2b3d031d191c17791d92b8a5f5d186753477fbbdb9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed77b923271ae0c54cf6cc2b3d031d191c17791d92b8a5f5d186753477fbbdb9?s=96&d=mm&r=g\",\"caption\":\"mariusz.bijok\"},\"url\":\"https:\/\/tenjin.com\/ja\/blog\/author\/mariusz-bijok\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Server-To-Server (S2S) Setup | Tenjin","description":"Server-To-Server (S2S) Setup Tenjin | %","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tenjin.com\/ja\/docs\/server-to-server-s2s-setup\/","og_locale":"ja_JP","og_type":"article","og_title":"Server-To-Server (S2S) Setup | Tenjin","og_description":"Server-To-Server (S2S) Setup Tenjin | %","og_url":"https:\/\/tenjin.com\/ja\/docs\/server-to-server-s2s-setup\/","og_site_name":"Tenjin","article_modified_time":"2026-04-16T07:39:50+00:00","twitter_card":"summary_large_image","twitter_site":"@TenjinMMP","twitter_misc":{"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"7\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/#article","isPartOf":{"@id":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/"},"author":{"name":"mariusz.bijok","@id":"https:\/\/tenjin.com\/#\/schema\/person\/2df6a56c45e0493e93ec6d7100750b77"},"headline":"Server-To-Server (S2S) Setup","datePublished":"2026-02-20T07:06:13+00:00","dateModified":"2026-04-16T07:39:50+00:00","mainEntityOfPage":{"@id":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/"},"wordCount":2055,"publisher":{"@id":"https:\/\/tenjin.com\/#organization"},"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/","url":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/","name":"Server-To-Server (S2S) Setup | Tenjin","isPartOf":{"@id":"https:\/\/tenjin.com\/#website"},"datePublished":"2026-02-20T07:06:13+00:00","dateModified":"2026-04-16T07:39:50+00:00","description":"Server-To-Server (S2S) Setup Tenjin | %","breadcrumb":{"@id":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tenjin.com\/docs\/server-to-server-s2s-setup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tenjin.com\/"},{"@type":"ListItem","position":2,"name":"Docs","item":"https:\/\/tenjin.com\/docs\/"},{"@type":"ListItem","position":3,"name":"Server-To-Server (S2S) Setup"}]},{"@type":"WebSite","@id":"https:\/\/tenjin.com\/#website","url":"https:\/\/tenjin.com\/","name":"Tenjin","description":"Growth Made Simple","publisher":{"@id":"https:\/\/tenjin.com\/#organization"},"alternateName":"Tenjin - Mobile Measurement Partner","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tenjin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/tenjin.com\/#organization","name":"Tenjin","url":"https:\/\/tenjin.com\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/tenjin.com\/#\/schema\/logo\/image\/","url":"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp","contentUrl":"https:\/\/tenjin.com\/wp-content\/uploads\/2026\/04\/images.webp","width":429,"height":117,"caption":"Tenjin"},"image":{"@id":"https:\/\/tenjin.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/TenjinMMP","https:\/\/www.youtube.com\/@TenjinMMP","https:\/\/www.linkedin.com\/company\/tenjin"]},{"@type":"Person","@id":"https:\/\/tenjin.com\/#\/schema\/person\/2df6a56c45e0493e93ec6d7100750b77","name":"mariusz.bijok","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/tenjin.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed77b923271ae0c54cf6cc2b3d031d191c17791d92b8a5f5d186753477fbbdb9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed77b923271ae0c54cf6cc2b3d031d191c17791d92b8a5f5d186753477fbbdb9?s=96&d=mm&r=g","caption":"mariusz.bijok"},"url":"https:\/\/tenjin.com\/ja\/blog\/author\/mariusz-bijok\/"}]}},"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs\/15509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/comments?post=15509"}],"version-history":[{"count":23,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs\/15509\/revisions"}],"predecessor-version":[{"id":17457,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/docs\/15509\/revisions\/17457"}],"wp:attachment":[{"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/media?parent=15509"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/doc_category?post=15509"},{"taxonomy":"glossaries","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/glossaries?post=15509"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/tenjin.com\/ja\/wp-json\/wp\/v2\/doc_tag?post=15509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}