|

|  How to Access Pinterest Ads API to Manage Campaigns in PHP

How to Access Pinterest Ads API to Manage Campaigns in PHP

October 31, 2024

Learn to access the Pinterest Ads API in PHP to efficiently manage and optimize your ad campaigns. Step-by-step guide for seamless integration and control.

How to Access Pinterest Ads API to Manage Campaigns in PHP

 

Authorization and API Access

 

  • To interact with the Pinterest Ads API, ensure you have proper OAuth credentials. This involves setting up your app in the Pinterest Developer Portal and obtaining your client ID and secret.
  •  

  • Implement OAuth 2.0 using a PHP library like php-league/oauth2-client to facilitate the authorization process. After obtaining the access token, you can make authenticated requests to the API endpoints.

 

require 'vendor/autoload.php';

use League\OAuth2\Client\Provider\GenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your-client-id',
    'clientSecret'            => 'your-client-secret',
    'redirectUri'             => 'https://your-callback-url',
    'urlAuthorize'            => 'https://api.pinterest.com/oauth/',
    'urlAccessToken'          => 'https://api.pinterest.com/v1/oauth/token',
    'urlResourceOwnerDetails' => 'https://api.pinterest.com/v1/me'
]);

$accessToken = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

 

Making API Requests

 

  • Use the access token to make requests to the Pinterest Ads API. The API uses RESTful principles. For managing campaigns, you’ll be interested in endpoints under the advertising section.
  •  

  • PHP’s cURL or libraries like Guzzle can be used to make HTTP requests. Handle API request headers and tokens appropriately to ensure successful communication.

 

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.pinterest.com/v1/ad_accounts', [
    'headers' => [
        'Authorization' => 'Bearer ' . $accessToken,
        'Content-Type'  => 'application/json'
    ]
]);

$campaignData = json_decode($response->getBody(), true);

 

Handling API Rate Limits and Errors

 

  • Pinterest has rate limits that restrict how many times you can call their API. Implement error handling and retry logic to gracefully manage limited requests.
  •  

  • Utilize response headers to monitor rate limits. Handling various HTTP status codes and API errors effectively will ensure your application remains robust.

 

try {
    $response = $client->request('GET', 'https://api.pinterest.com/v1/ad_accounts', [
        'headers' => [
            'Authorization' => 'Bearer ' . $accessToken,
            'Content-Type'  => 'application/json'
        ]
    ]);
    
    if ($response->getStatusCode() !== 200) {
        throw new Exception('Unexpected response status: ' . $response->getStatusCode());
    }
    // Process response...
} catch (\GuzzleHttp\Exception\GuzzleException $e) {
    // Handle errors...
} catch (Exception $e) {
    // Handle generic errors...
}

 

Automating Campaign Management

 

  • To automate campaign management, create a PHP script or service that runs periodically (e.g., using a cron job) to manage campaigns based on your business logic.
  •  

  • Integrate your script with a database or other data sources, if necessary, to dynamically adjust and optimize advertising strategies on Pinterest.

 

// Example: Automating ad status updates
$adId = 'your-ad-id';
$newStatus = 'ACTIVE'; // Possible values: 'ACTIVE', 'PAUSED', etc.

$response = $client->request('PUT', "https://api.pinterest.com/v1/ads/$adId", [
    'headers' => [
        'Authorization' => 'Bearer ' . $accessToken,
        'Content-Type'  => 'application/json'
    ],
    'json' => ['status' => $newStatus]
]);

if ($response->getStatusCode() === 200) {
    echo "Ad status updated successfully.";
} else {
    echo "Failed to update ad status.";
}