<!--
{
  "availability" : [
    "Apple Ads Platform API: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Apple-Ads-Platform-API",
  "identifier" : "/documentation/Apple-Ads-Platform-API/AppDetailsResponse",
  "metadataVersion" : "0.1.0",
  "role" : "Object",
  "symbol" : {
    "kind" : "Object",
    "modules" : [
      "Apple Ads Platform API"
    ],
    "preciseIdentifier" : "data:apple-ads-platform-api:AppDetailsResponse"
  },
  "title" : "AppDetailsResponse"
}
-->

# AppDetailsResponse

The response object for a get app details operation.

```
object AppDetailsResponse
```

## Discussion

The [`Get App Details by Adam ID`](/documentation/Apple-Ads-Platform-API/Get-App-Details-by-Adam-ID) endpoint returns `AppDetailsResponse` as a single-item envelope. It follows the standard `Response` pattern used across the Apple Ads Platform API: on success, `result` contains the retrieved `AppDetails` object. On failure, `result` is absent and `error` contains the structured error details.

Unlike paginated query responses, `AppDetailsResponse` returns exactly one app record (or none). Because the API accepts a single Adam ID in the path, there is no ambiguity about which app the result belongs to, and the response includes no pagination metadata.

### Understand the result field

On a 404, the response contains an `ENTITY_NOT_FOUND` error in the `error` field and `result` is absent. Always check the HTTP status code first, then inspect `error` for machine-readable detail.

The returned `AppDetails` object includes App Store metadata such as app name, developer, supported device classes, and available App Store countries or regions. The `GET /v1/apps/{adamId}` ([`Get App Details by Adam ID`](/documentation/Apple-Ads-Platform-API/Get-App-Details-by-Adam-ID)) endpoint accepts only the `adamId` path parameter and the `X-Ap-Context` header.

### Understand the error field

Inspect `error.details` for a structured list of error codes and messages. Common failure cases include:

- **400**: malformed Adam ID or unsupported query parameter
- **401**: missing or expired OAuth token
- **403**: the authenticated account doesn’t have access to the requested app
- **404**: no app exists for the supplied Adam ID
- **429**: rate limit exceeded. Use exponential backoff before retrying
- **500**: transient server error. The request may succeed on retry

### Understand the relationship to AppDetails

The `AppDetailsResponse` object is a thin wrapper. All substantive app metadata lives in the `AppDetails` object inside `result`. The wrapper exists to provide a uniform envelope that carries both success data and error information in a single response shape, consistent with every other API response object in this documentation.

### Example

```json
{
  "result": {
    "id": "324684580",
    "appName": "AwayFinder - Travel Planner",
    "artistName": "AwayFinder Inc.",
    "primaryLanguage": "en-US",
    "primaryGenre": "Travel",
    "secondaryGenre": "Productivity",
    "deviceClasses": [
      "IPHONE",
      "IPAD"
    ],
    "iconPictureUrl": "https://is5-ssl.mzstatic.com/image/thumb/Purple126/v4/aa/bb/cc/AppIcon-1024x1024.png",
    "isPreorder": false,
    "availableStorefronts": [
      "US",
      "GB",
      "DE",
      "JP",
      "AU"
    ]
  }
}
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)