Using the FreeAgent API to Get Contacts in PHP

by Endgrate Team 2024-08-09 4 min read

FreeAgent homepage

Introduction to FreeAgent API Integration

FreeAgent is a comprehensive accounting software platform tailored for small businesses and freelancers. It offers a suite of tools to manage invoices, expenses, taxes, and more, all within a user-friendly interface. By leveraging the FreeAgent API, developers can seamlessly integrate these functionalities into their own applications, enhancing automation and efficiency.

Connecting with the FreeAgent API allows developers to access and manage contact data, which can be crucial for maintaining up-to-date client information. For example, a developer might use the FreeAgent API to retrieve contact details and synchronize them with a CRM system, ensuring consistent and accurate data across platforms.

Setting Up Your FreeAgent Sandbox Account for API Integration

Before diving into the FreeAgent API, it's essential to set up a sandbox account. This allows developers to test API interactions without affecting live data. Follow these steps to create and configure your FreeAgent sandbox account:

Create a FreeAgent Sandbox Account

  1. Visit the FreeAgent Sandbox page.
  2. Sign up for a free temporary FreeAgent user account.
  3. Complete the setup stages for your company within the sandbox environment to avoid unexpected errors when using the API.

Register Your Application on the FreeAgent Developer Dashboard

  1. Navigate to the FreeAgent Developer Dashboard.
  2. Create a new app and take note of the OAuth Client ID and Client Secret provided.

Generate OAuth Access and Refresh Tokens

To authenticate API requests, you'll need to generate OAuth tokens. Follow these steps using the Google OAuth 2.0 Playground:

  1. Go to the Google OAuth 2.0 Playground.
  2. Configure the playground with FreeAgent's sandbox endpoints:
    • Authorization Endpoint: https://api.sandbox.freeagent.com/v2/approve_app
    • Token Endpoint: https://api.sandbox.freeagent.com/v2/token_endpoint
  3. Enter your OAuth Client ID and Client Secret from the FreeAgent Developer Dashboard.
  4. Specify a scope name and click "Authorize APIs".
  5. Log in to your FreeAgent sandbox account and approve the app.
  6. Click "Exchange Authorization Code for Tokens" to generate your access and refresh tokens.

With these tokens, you can now access the FreeAgent API for your sandbox account, allowing you to test and develop your integration securely.

FreeAgent authentication documentation page.
sbb-itb-96038d7

Making API Calls to Retrieve Contacts Using FreeAgent API in PHP

To interact with the FreeAgent API and retrieve contact information, you'll need to set up your PHP environment and make HTTP requests to the API endpoints. This section will guide you through the necessary steps, including setting up PHP, installing dependencies, and writing the code to make API calls.

Setting Up Your PHP Environment for FreeAgent API Integration

Before making API calls, ensure your development environment is ready. You'll need:

  • PHP 7.4 or later
  • Composer for dependency management

Install the guzzlehttp/guzzle library to handle HTTP requests:

composer require guzzlehttp/guzzle

Writing PHP Code to Retrieve Contacts from FreeAgent API

Now that your environment is set up, you can write the PHP code to interact with the FreeAgent API. Create a file named get_freeagent_contacts.php and add the following code:


request('GET', 'https://api.sandbox.freeagent.com/v2/contacts', [
    'headers' => [
        'Authorization' => 'Bearer ' . $accessToken,
        'Accept'        => 'application/json',
    ]
]);

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

foreach ($data['contacts'] as $contact) {
    echo 'Name: ' . $contact['first_name'] . ' ' . $contact['last_name'] . "\n";
    echo 'Email: ' . $contact['email'] . "\n";
    echo 'Company: ' . $contact['organisation_name'] . "\n\n";
}

?>

Replace Your_Access_Token with the access token you generated earlier. This script uses Guzzle to send a GET request to the FreeAgent API, retrieves the list of contacts, and prints their details.

Verifying API Call Success and Handling Errors

After running the script, you should see the contact details printed in your terminal. To verify the request's success, check the response status code:


if ($response->getStatusCode() === 200) {
    echo "Contacts retrieved successfully.";
} else {
    echo "Failed to retrieve contacts. Status code: " . $response->getStatusCode();
}

Handle errors by checking for specific status codes and implementing retry logic if necessary. For example, if you encounter a 429 status code, it indicates rate limiting. Implement a back-off strategy to retry the request after a delay.

For more details on error handling and rate limits, refer to the FreeAgent API documentation.

FreeAgent API call documentation page.

Conclusion and Best Practices for FreeAgent API Integration in PHP

Integrating with the FreeAgent API using PHP provides a powerful way to manage contact data and streamline business processes. By following the steps outlined in this guide, you can efficiently retrieve and manage contacts, ensuring your applications remain synchronized with FreeAgent's robust accounting platform.

Best Practices for Secure and Efficient FreeAgent API Usage

  • Securely Store Credentials: Always store your OAuth tokens securely. Consider using environment variables or secure vaults to prevent unauthorized access.
  • Handle Rate Limits: FreeAgent enforces rate limits of 120 requests per minute and 3600 requests per hour. Implement a back-off strategy to handle 429 status codes and avoid exceeding these limits. For more details, refer to the FreeAgent API documentation.
  • Data Standardization: Ensure that contact data retrieved from FreeAgent is standardized before integrating it with other systems. This helps maintain data consistency across platforms.

Enhance Your Integration Strategy with Endgrate

While integrating with FreeAgent is straightforward, managing multiple integrations can become complex. Endgrate simplifies this process by offering a unified API endpoint that connects to various platforms, including FreeAgent. By using Endgrate, you can:

  • Save time and resources by outsourcing integration management.
  • Build once for each use case instead of multiple times for different integrations.
  • Provide an intuitive integration experience for your customers.

Explore how Endgrate can streamline your integration efforts by visiting Endgrate.

Read More

Ready to get started?

Book a demo now

Book Demo