Layers
Partner APIAPI referenceSDK apps

GET /v1/projects/:projectId/sdk-apps/:appId

Retrieve an SDK app plus its current CAPI relay status per platform.

View as Markdown
GET/v1/projects/:projectId/sdk-apps/:appId
Phase 1stable
Auth
Bearer
Scope
projects:read

Returns the SDK app record plus its CAPI relay state for each ad platform (Meta, TikTok, Apple). Use it to render the "integration status" card in your UI — whether events are forwarding to each pixel, the last forward timestamp, and the pixel ID the config is resolving to.

The API key is never included in this response. Rotate via PATCH to create a new one.

Path
  • projectId
    stringrequired
    Project ID.
  • appId
    stringrequired
    SDK app ID.

Example request

curl "https://api.layers.com/v1/projects/9cb958b5-11b5-4e30-8675-5d075d52da7c/sdk-apps/app_8ffb9410eb0eb848264f8a65" \
  -H "Authorization: Bearer lp_live_01HX9Y6K7EJ4T2_4QZpN..."
const app = await layers.sdkApps.get(
  "9cb958b5-11b5-4e30-8675-5d075d52da7c",
  "app_8ffb9410eb0eb848264f8a65"
);
app = layers.sdk_apps.get(
    project_id="9cb958b5-11b5-4e30-8675-5d075d52da7c",
    app_id="app_8ffb9410eb0eb848264f8a65",
)

Response

200OK
{
  "appId": "app_8ffb9410eb0eb848264f8a65",
  "name": "Acme Coffee iOS",
  "platform": "ios",
  "bundleId": "com.acmecoffee.ios",
  "androidPackage": null,
  "webDomain": null,
  "ingestEndpoint": "https://in.layers.com/l/events",
  "capi": {
    "meta": {
      "enabled": true,
      "pixelId": "987654321012345",
      "lastForwardAt": "2026-04-18T19:42:08Z"
    },
    "tiktok": {
      "enabled": true,
      "pixelId": "C12ABCDEF3456789G",
      "lastForwardAt": "2026-04-18T19:41:57Z"
    }
  },
  "createdAt": "2026-04-18T19:25:22Z",
  "lastRotatedAt": "2026-04-18T19:25:22Z",
  "lastEventAt": "2026-04-18T19:42:11Z"
}

capi is an empty object on a freshly-created app and only carries entries for platforms you've explicitly toggled via PATCH. Each entry is { enabled, pixelId, lastForwardAt }. The platform-identifier fields (bundleId, androidPackage, webDomain) are always present — only the one matching platform is non-null.

Errors

StatusCodeWhen
422VALIDATION:projectId is not a UUID.
401UNAUTHENTICATEDMissing or invalid key.
403FORBIDDEN_SCOPEKey lacks projects:read.
404NOT_FOUNDProject or SDK app does not exist in the key's organization.
429RATE_LIMITEDRead budget exhausted.

See also

On this page