> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.americanexpress.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.americanexpress.ferndocs.com/_mcp/server.

# Get Products

GET https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products

Returns a list of products currently offered to the market.
Endpoint Version: 5

Reference: https://developer.americanexpress.ferndocs.com/open-banking/consumer-data-right/api-reference/get-products

## Authentication

- `Authorization` header (bearer token, required) — OAuth 2.0 client credentials. Exchange your API key and secret for a bearer token, then send it as `Authorization: Bearer <token>`.

## Request

### Query parameters

- `effective` (enum, optional) — Allows for the filtering of products based on whether the current time is within the period of time defined as effective by the effectiveFrom and effectiveTo fields. If absent, defaults to CURRENT.
  - Allowed values: `CURRENT`, `FUTURE`, `ALL`
- `updated-since` (string, optional) — Only include products that have been updated after the specified date and time. If absent, defaults to include all products.
- `brand` (string, optional) — Filter results based on a specific brand.
- `product-category` (string, optional) — Used to filter results on the productCategory field applicable to accounts. If absent, then all accounts returned.
- `page` (string, optional) — The page of results to request. The default is 1.
- `page-size` (string, optional) — The page size to request. The default is 25.

### Headers

- `x-v` (string, required) — The version of the API endpoint requested by the Client. Must be set to a positive integer. The current supported version for this endpoint is 5.
- `x-min-v` (string, optional) — The minimum version of the API endpoint requested by the Client. Must be set to a positive integer if provided.
- `x-fapi-interaction-id` (string, optional) — An RFC4122 UUID used as a correlation ID. If provided, the data holder must play back this value in the x-fapi-interaction-id response header.

## Response

### 200

OK

- `data` (ResponseBankingProductListV4Data, required)
- `links` (LinksPaginated, required) — Contains pagination links for navigating result sets.
- `meta` (MetaPaginated, required) — Contains pagination metadata.

## Errors

### 400 Bad Request Error

Bad Request

- `errors` (list of ErrorV2, required) — A list of errors.

### 406 Not Acceptable Error

Not Acceptable

- `errors` (list of ErrorV2, required) — A list of errors.

### 422 Unprocessable Entity Error

Unprocessable Entity

- `errors` (list of ErrorV2, required) — A list of errors.

### 429 Too Many Requests Error

Too Many Requests

- `any`

### 500 Internal Server Error

Internal Server Error

- `errors` (list of ErrorV2, required) — A list of errors.

### 503 Service Unavailable Error

Service Unavailable

- `any`

### 504 Gateway Timeout Error

Gateway Timeout

- `any`

## Types

### ResponseBankingProductListV4Data

- `products` (list of BankingProductV6, required) — The list of products returned. If the filter results in an empty set then this array may have no records.

### LinksPaginated

Contains pagination links for navigating result sets.

- `self` (string, required) — A fully qualified link that generated the current response document.
- `first` (string, optional) — A URI to the first page of this set. Mandatory if this response is not the first page.
- `prev` (string, optional) — A URI to the previous page of this set. Mandatory if this response is not the first page.
- `next` (string, optional) — A URI to the next page of this set. Mandatory if this response is not the last page.
- `last` (string, optional) — A URI to the last page of this set. Mandatory if this response is not the last page.

### MetaPaginated

Contains pagination metadata.

- `totalRecords` (string, required) — The total number of records in the full set.
- `totalPages` (string, required) — The total number of pages in the full set.

### ErrorV2

- `code` (string, required) — The code of the error encountered. Where the error is specific to the respondent, an application-specific error code, expressed as a string value. If the error is application-specific, the URN code that the specific error extends must be provided in the meta object. Otherwise, the value is the error code URN.
- `title` (string, required) — A short, human-readable summary of the problem that MUST NOT change from occurrence to occurrence of the problem represented by the error code.
- `detail` (string, required) — A human-readable explanation specific to this occurrence of the problem.
- `meta` (ErrorV2Meta, optional) — Additional data for customised error codes.

### BankingProductV6

- `productId` (string, required) — A data holder-specific unique identifier for a banking product. This identifier must be unique to a product but does not otherwise need to adhere to ID permanence guidelines.
- `lastUpdated` (string, required) — The last date and time that the information for this product was changed (or the creation date for the product if it has never been altered).
- `productCategory` (enum, required) — The category to which a product or account belongs.
  - Allowed values: `BUSINESS_LOANS`, `BUY_NOW_PAY_LATER`, `CRED_AND_CHRG_CARDS`, `LEASES`, `MARGIN_LOANS`, `OVERDRAFTS`, `PERS_LOANS`, `REGULATED_TRUST_ACCOUNTS`, `RESIDENTIAL_MORTGAGES`, `TERM_DEPOSITS`, `TRADE_FINANCE`, `TRANS_AND_SAVINGS_ACCOUNTS`, `TRAVEL_CARDS`
- `name` (string, required) — The display name of the product.
- `description` (string, required) — A description of the product.
- `brand` (string, required) — A label of the brand for the product. Able to be used for filtering. For data holders with single brands this value is still required.
- `isTailored` (boolean, required) — Indicates whether the product is specifically tailored to a circumstance. In this case, fees and prices are significantly negotiated, depending on context. While all products are open to a degree of tailoring, this flag indicates that tailoring is expected and thus that the provision of specific fees and rates is not applicable.
- `effectiveFrom` (string, optional) — The date and time from which this product is effective (i.e., is available for origination). Used to enable the articulation of products to the regime before they are available for customers to originate.
- `effectiveTo` (string, optional) — The date and time at which this product will be retired and will no longer be offered. Used to enable the managed deprecation of products.
- `brandName` (string, optional) — An optional display name of the brand.
- `applicationUri` (string, optional) — A link to an application web page where this product can be applied for.
- `additionalInformation` (BankingProductAdditionalInformationV2, optional) — An object that contains links to additional information on specific topics.
- `cardArt` (list of BankingProductCardArt, optional) — Information about any cards available with the account.

### ErrorV2Meta

Additional data for customised error codes.

- `urn` (string, optional) — The CDR error code URN which the application-specific error code extends. Mandatory if the error code is an application-specific error rather than a standardised error code.

### BankingProductAdditionalInformationV2

An object that contains links to additional information on specific topics.

- `overviewUri` (string, optional) — A general overview of the product. Mandatory if additionalOverviewUris includes one or more supporting documents.
- `termsUri` (string, optional) — The terms and conditions for the product. Mandatory if additionalTermsUris includes one or more supporting documents.
- `eligibilityUri` (string, optional) — The eligibility rules and criteria for the product. Mandatory if additionalEligibilityUris includes one or more supporting documents.
- `feesAndPricingUri` (string, optional) — The description of fees, pricing, discounts, exemptions, and bonuses for the product. Mandatory if additionalFeesAndPricingUris includes one or more supporting documents.
- `bundleUri` (string, optional) — The description of a bundle that this product can be part of. Mandatory if additionalBundleUris includes one or more supporting documents.
- `additionalOverviewUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional general overviews for the product or features of the product, if applicable. To be treated as secondary documents to the overviewUri. Only to be used if there is a primary overviewUri.
- `additionalTermsUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional terms and conditions for the product, if applicable. To be treated as secondary documents to the termsUri. Only to be used if there is a primary termsUri.
- `additionalEligibilityUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional eligibility rules and criteria for the product, if applicable. To be treated as secondary documents to the eligibilityUri. Only to be used if there is a primary eligibilityUri.
- `additionalFeesAndPricingUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional fees, pricing, discounts, exemptions, and bonuses for the product, if applicable. To be treated as secondary documents to the feesAndPricingUri. Only to be used if there is a primary feesAndPricingUri.
- `additionalBundleUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional bundles for the product, if applicable. To be treated as secondary documents to the bundleUri. Only to be used if there is a primary bundleUri.

### BankingProductCardArt

- `cardScheme` (enum, required) — The card scheme available with the account.
  - Allowed values: `AMEX`
- `cardType` (enum, required) — The card type available with the account.
  - Allowed values: `CHARGE`, `CREDIT`, `DEBIT`
- `imageUri` (string, required) — A URI reference to a PNG, JPG, or GIF image with proportions defined by ISO 7810 ID-1 and width no greater than 512 pixels. The URI reference may be a link or URL-encoded data URI according to RFC2397.
- `title` (string, optional) — The display label for the specific image.

### BankingProductAdditionalInformationV2_additionalInformationUris

- `additionalInfoUri` (string, required) — The URI describing the additional information.
- `description` (string, optional) — The display text providing more information about the document URI.

## Examples

**Response**

```json
{
  "data": {
    "products": [
      {
        "productId": "1",
        "lastUpdated": "2026-06-18T11:00:00.000Z",
        "productCategory": "CRED_AND_CHRG_CARDS",
        "name": "Test Product",
        "description": "Test product",
        "brand": "American Express",
        "isTailored": false,
        "effectiveFrom": "2026-03-22T08:14:00.000Z",
        "effectiveTo": "2026-06-25T08:15:00.000Z",
        "brandName": "American Express",
        "applicationUri": "/application",
        "additionalInformation": {
          "overviewUri": "/overview",
          "termsUri": "/terms",
          "eligibilityUri": "/eligibility",
          "feesAndPricingUri": "/fees",
          "bundleUri": "/bundle"
        },
        "cardArt": [
          {
            "cardScheme": "AMEX",
            "cardType": "CREDIT",
            "imageUri": "/card"
          }
        ]
      }
    ]
  },
  "links": {
    "self": "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products?page=1&page-size=25",
    "first": "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products?page=1&page-size=25",
    "last": "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products?page=1&page-size=25"
  },
  "meta": {
    "totalRecords": "1",
    "totalPages": "1"
  }
}
```

**SDK Code**

```python getProducts_example
import requests

url = "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products"

headers = {
    "x-v": "5",
    "Authorization": "Bearer <token>"
}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript getProducts_example
const url = 'https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products';
const options = {method: 'GET', headers: {'x-v': '5', Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go getProducts_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-v", "5")
	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby getProducts_example
require 'uri'
require 'net/http'

url = URI("https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-v"] = '5'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java getProducts_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products")
  .header("x-v", "5")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php getProducts_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'x-v' => '5',
  ],
]);

echo $response->getBody();
```

```csharp getProducts_example
using RestSharp;

var client = new RestClient("https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products");
var request = new RestRequest(Method.GET);
request.AddHeader("x-v", "5");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift getProducts_example
import Foundation

let headers = [
  "x-v": "5",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```