PHPackages                             creatissimo/amazon-ads-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. creatissimo/amazon-ads-api

ActiveLibrary[HTTP &amp; Networking](/categories/http)

creatissimo/amazon-ads-api
==========================

Amazon Advertising API

1.0.13(2mo ago)011↓50%unlicensePHPPHP ^8.3

Since Mar 2Pushed 2mo agoCompare

[ Source](https://github.com/creatissimo/amazon-ads-api)[ Packagist](https://packagist.org/packages/creatissimo/amazon-ads-api)[ RSS](/packages/creatissimo-amazon-ads-api/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (6)Versions (14)Used By (0)

creatissimo/amazon-ads-api
==========================

[](#creatissimoamazon-ads-api)

Lightweight PHP 8.3 HTTP client for the [Amazon Advertising API](https://advertising.amazon.com/API/docs/en-us/guides/get-started/overview). Covers OAuth 2.0 authentication, typed request/response models, automatic token refresh, retry with exponential backoff, and optional access-token caching.

Features
--------

[](#features)

- **OAuth 2.0** — authorization code exchange, token refresh, pluggable token cache (`FileTokenCache` included)
- **Typed models** — enums, DTOs with getters/setters, `toArray()` / `fromArray()` serialization
- **Full endpoint coverage** — Campaigns, Ad Groups, Ads, Targets, Ad Associations, Ad Extensions, Advertising Deals, Brand Stores, Commitments, Recommendations, and more
- **Retry logic** — automatic retry with exponential backoff on `429` / `504`; token refresh and retry on `401`
- **API exceptions** — `AmazonAdsApiException` with HTTP status code, response error code, and message
- **Multi-region** — NA, EU, FE base URLs

Requirements
------------

[](#requirements)

- PHP ≥ 8.3
- ext-curl
- ext-json

Installation
------------

[](#installation)

```
composer require creatissimo/amazon-ads-api
```

Quick start
-----------

[](#quick-start)

```
use Creatissimo\AmazonAdsApi\Auth\FileTokenCache;
use Creatissimo\AmazonAdsApi\Auth\OAuthClient;
use Creatissimo\AmazonAdsApi\Http\HttpClient;
use Creatissimo\AmazonAdsApi\Api\CampaignsApi;
use Creatissimo\AmazonAdsApi\Model\AdProduct;
use Creatissimo\AmazonAdsApi\Model\CampaignAdProductFilter;
use Creatissimo\AmazonAdsApi\Model\QueryCampaignRequest;

$oauth = new OAuthClient(
    clientId: 'amzn1.application-oa2-client.xxx',
    clientSecret: 'your-secret',
    redirectUri: 'https://your-app.com/callback',
    tokenCache: new FileTokenCache('/tmp/amazon-ads-tokens'),
);

$oauth->setTokens(
    accessToken: 'placeholder',
    refreshToken: 'Atzr|...',
    expiresAt: 0,
);

$http = new HttpClient(
    oauthClient: $oauth,
    clientId: 'amzn1.application-oa2-client.xxx',
    baseUrl: HttpClient::REGION_EU,
    profileId: '123456789',
);

$campaigns = new CampaignsApi($http);

$response = $campaigns->query(new QueryCampaignRequest(
    adProductFilter: new CampaignAdProductFilter(
        include: [AdProduct::SPONSORED_PRODUCTS],
    ),
    maxResults: 10,
));

foreach ($response->getCampaigns() as $campaign) {
    echo $campaign->getName() . PHP_EOL;
}
```

Available API classes
---------------------

[](#available-api-classes)

ClassOperations`CampaignsApi`create, query, update, delete`AdGroupsApi`create, query, update, delete`AdsApi`create, query, update, delete`TargetsApi`create, query, update, delete`AdAssociationsApi`create, query, update, delete`AdExtensionsApi`create, query, update`AdvertisingDealsApi`create, query, update, delete`AdvertisingDealTargetsApi`create, query, delete`BrandStoresApi`queryStores, queryPages, queryEditionPublishVersions, updateEditionPublishVersions, listEditions`CommitmentsApi`create, list, retrieve, update`CommitmentSpendsApi`retrieve`CampaignForecastsApi`retrieve`RecommendationsApi`create, queryTypes`BrandedKeywordsPricingsApi`create`KeywordReservationValidationsApi`createToken caching
-------------

[](#token-caching)

Pass any `TokenCacheInterface` implementation to `OAuthClient`. A file-based cache is included:

```
$cache = new FileTokenCache(__DIR__ . '/var/cache/tokens');

$oauth = new OAuthClient(
    clientId: '...',
    clientSecret: '...',
    redirectUri: '...',
    tokenCache: $cache,
);
```

Implement `TokenCacheInterface` for Redis, Memcached, database, or PSR-16 adapters.

Error handling
--------------

[](#error-handling)

All API methods throw `AmazonAdsApiException` on non-success responses:

```
use Creatissimo\AmazonAdsApi\Http\AmazonAdsApiException;

try {
    $campaigns->query($request);
} catch (AmazonAdsApiException $e) {
    $e->getHttpStatusCode();  // 400, 401, 403, ...
    $e->getResponseCode();    // "INVALID_ARGUMENT", ...
    $e->getResponseMessage(); // "Missing required field"
    $e->getResponseBody();    // full response array
}
```

Retry behaviour
---------------

[](#retry-behaviour)

The HTTP client automatically retries on `429` (Too Many Requests) and `504` (Gateway Timeout) with exponential backoff. On `401` (Unauthorized) it refreshes the access token once and retries. Both `maxRetries` and `retryBaseDelay` are configurable:

```
$http = new HttpClient(
    oauthClient: $oauth,
    clientId: '...',
    maxRetries: 5,
    retryBaseDelay: 2.0, // seconds; delays: 2, 4, 8, 16, 32
);
```

Project structure
-----------------

[](#project-structure)

```
src/
├── Api/            # one class per API resource
├── Auth/           # OAuth client, token cache interface + file impl
├── Http/           # HttpClient, ApiResponse, AmazonAdsApiException
├── Model/          # enums, DTOs, query/create/update request models
└── example.php     # runnable usage example

```

License
-------

[](#license)

Unlicense

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance86

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

13

Last Release

68d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/22854665?v=4)[Pascal Rossa](/maintainers/creatissimo)[@creatissimo](https://github.com/creatissimo)

---

Tags

phpapiamazonsdkrestAdvertising

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/creatissimo-amazon-ads-api/health.svg)

```
[![Health](https://phpackages.com/badges/creatissimo-amazon-ads-api/health.svg)](https://phpackages.com/packages/creatissimo-amazon-ads-api)
```

###  Alternatives

[amazon-php/sp-api-sdk

Amazon Selling Partner API - PHP SDK

133374.1k1](/packages/amazon-php-sp-api-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
