# Singular API v2 and SDID Support


RudderStack's [Singular cloud mode integration]({{< ref "destinations/streaming-destinations/singular/cloud-mode.md" >}}) now supports Singular's API v2 and [SDID (Singular Device ID)](https://support.singular.net/hc/en-us/articles/4411780525979-Types-of-Device-IDs). When SDID is present in your event payloads, RudderStack automatically routes events to Singular's v2 endpoints. Otherwise, events continue flowing to API v1 as before by leveraging platform-specific identifiers — **without requiring any configuration changes**.

This makes RudderStack the first platform to support Singular v2/SDID, enabling you to run an independent hybrid setup (Singular SDK for attribution + RudderStack SDK for data collection and routing) to keep events flowing when Singular enables SDID on their account.

## Why we introduced SDID support

Singular is rolling out [SDID (Singular Device ID)](https://support.singular.net/hc/en-us/articles/4411780525979-Types-of-Device-IDs) as a universal device identifier across customer accounts. When Singular enables SDID on an account, events sent via the v1 API continue to flow using legacy device IDs (IDFA, IDFV), but those identifiers only cover roughly 25% of iOS users post-ATT — leading to significant attribution accuracy degradation over time.

For teams running the recommended independent hybrid setup — where the Singular SDK handles attribution (installs, deep linking, SKAdNetwork, fraud detection) and RudderStack handles data collection and routing — this update ensures full attribution coverage. RudderStack now detects SDID automatically and routes to the correct API version, so your events are attributed accurately without any manual intervention.

## Key features

- **Automatic SDID detection and API v2 routing**: When `integrations.Singular.singularDeviceId` is present in an event payload, RudderStack routes the event to Singular's v2 endpoints. Otherwise, API v1 is used — fully backward compatible.
- **Zero configuration changes**: No new dashboard settings or connection updates are needed — detection and routing happen automatically.
- **LDS (Limit Data Sharing) privacy flag support**: You can pass the `limitDataSharing: true` flag via integration options to honor GDPR/CCPA requirements in Singular.
- **Partner attribution**: Events sent through RudderStack are tagged with `partner=rudderstack` for clear visibility in the Singular dashboard.
- **LAUNCH endpoint skip in hybrid mode**: Prevents duplicate session creation when the Singular SDK already handles session tracking.
- **Platform ID handling**: Automatically drops IDFA/AIFA device identifiers when SDID is present, aligning with Singular's v2 requirements.

## Get started

{{< info >}}
The steps below are for the [Singular SDK + RudderStack cloud mode hybrid setup]({{< ref "destinations/streaming-destinations/singular/setup-options.md#1-singular-sdk-with-rudderstack-cloud-mode" >}}), where the Singular SDK generates the SDID. 

If you use RudderStack cloud mode without the Singular SDK, you must generate and maintain the SDID yourself. See [Singular Integration Setup Approaches]({{< ref "destinations/streaming-destinations/singular/setup-options.md" >}}) to choose the right approach.
{{< /info >}}

1. **Ensure your Singular SDK is instrumented** alongside the RudderStack SDK in your app. The Singular SDK must expose the SDID value.
2. **Implement SDID bridge code** from the Singular SDK to capture the `singularDeviceId` value in your app.
3. **Pass the SDID** in the `integrations` object of your RudderStack events:

```javascript
rudderanalytics.track("Purchase Completed", {
  revenue: 99.99,
  currency: "USD",
  user_actual_id: 12345
}, {
  integrations: {
    Singular: {
      singularDeviceId: "<SINGULAR_DEVICE_ID>",
      limitDataSharing: true  // Honors GDPR/CCPA
    }
  }
});
```

4. **Verify events in the Singular dashboard** — look for events tagged with `partner=rudderstack` to confirm delivery via API v2.

See [Pass the Singular Device ID and Data Sharing Options]({{< ref "destinations/streaming-destinations/singular/cloud-mode.md#pass-singular-device-id" >}}) for detailed instructions.

## Resources

See the following guides for more information on this feature:

- [Singular Integration Setup Approaches]({{< ref "destinations/streaming-destinations/singular/setup-options.md" >}})
- [Singular Cloud Mode Integration]({{< ref "destinations/streaming-destinations/singular/cloud-mode.md" >}})
- [Singular Destination Setup Guide]({{< ref "destinations/streaming-destinations/singular/setup-guide.md" >}})
