GET /v1/projects/:projectId/sdk-apps/:appId
Retrieve an SDK app plus its current CAPI relay status per platform.
GET
/v1/projects/:projectId/sdk-apps/:appIdPhase 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
projectIdstringrequiredProject ID.appIdstringrequiredSDK 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
| Status | Code | When |
|---|---|---|
| 422 | VALIDATION | :projectId is not a UUID. |
| 401 | UNAUTHENTICATED | Missing or invalid key. |
| 403 | FORBIDDEN_SCOPE | Key lacks projects:read. |
| 404 | NOT_FOUND | Project or SDK app does not exist in the key's organization. |
| 429 | RATE_LIMITED | Read budget exhausted. |
See also
PATCH /v1/projects/:projectId/sdk-apps/:appId— update config, enable CAPI, rotate keyGET /v1/projects/:projectId/events— read what the SDK is sending- CAPI concept — how events become platform conversions