Skip to content
SendGrid's PHP HTTP Client for calling APIs
Branch: master
Clone or download
thinkingserious Merge pull request #106 from svenluijten/patch-1
Only mention the lowest required PHP version in README
Latest commit 4e7dc81 Oct 3, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore Added example file, updated .gitignore and README. Oct 27, 2017
.travis.yml Version Bump: v3.5.6: PR #98: Updated PHPDocs Apr 10, 2018 Create code of conduct Oct 10, 2017
LICENSE.txt Update License date range Jan 23, 2018

SendGrid Logo

Travis Badge Latest Version on Packagist Email Notifications Badge Twitter Follow GitHub contributors MIT licensed

Quickly and easily access any RESTful or RESTful-like API.

If you are looking for the SendGrid API client library, please see this repo.


All updates to this library is documented in our CHANGELOG.

Table of Contents



  • PHP version 5.6 or higher

Install with Composer

Add php-http-client to your composer.json file. If you are not using Composer, you should be. It's an excellent way to manage dependencies in your PHP application.

  "require": {
    "sendgrid/php-http-client": "~3.9.6"

Then at the top of your PHP script require the autoloader:

require __DIR__ . '/vendor/autoload.php';

Then from the command line:

composer install

Install without Composer

You should create directory lib in directory of your application and clone to lib repositories php-http-client and sendgrid-php:

$ cd /path/to/your/app
$ mkdir lib
$ cd lib
$ git clone

In the next step you should create loader.php:

$ cd /path/to/your/app
$ touch loader.php

And add to loader.php code below:


require_once __DIR__ . '/lib/php-http-client/lib/Client.php';
require_once __DIR__ . '/lib/php-http-client/lib/Response.php';

After it you can use php-http-client library in your project:


include __DIR__ . '/loader.php';

$client = new SendGrid\Client();

Quick Start

Here is a quick example:

GET /your/api/{param}/call

// include __DIR__ . '/loader.php';
require 'vendor/autoload.php';
$authHeaders = [
    'Authorization: Bearer ' . $apiKey
$client = new SendGrid\Client('', $authHeaders);
$param = 'foo';
$response = $client->your()->api()->_($param)->call()->get();


POST /your/api/{param}/call with headers, query parameters and a request body with versioning.

// include __DIR__ . '/loader.php';
require 'vendor/autoload.php';
$authHeaders = [
    'Authorization: Bearer ' . $apiKey
$client = new SendGrid\Client('', $authHeaders);
$queryParams = [
    'hello' => 0, 'world' => 1
$requestHeaders = [
    'X-Test' => 'test'
$data = [
    'some' => 1, 'awesome' => 2, 'data' => 3
$param = 'bar';
$response = $client->your()->api()->_($param)->call()->post($data, $queryParams, $requestHeaders);



Environment Variables

You can do the following to create a .env file:

cp .env_example .env

Then, just add your API Key into your .env file.


If you are interested in the future direction of this project, please take a look at our milestones. We would love to hear your feedback.

How to Contribute

We encourage contribution to our libraries, please see our CONTRIBUTING guide for details.

Quick links:


We were inspired by the work done on birdy and universalclient.


php-http-client is guided and supported by the SendGrid Developer Experience Team.

php-http-client is maintained and funded by SendGrid, Inc. The names and logos for php-http-client are trademarks of SendGrid, Inc.


The MIT License (MIT)

You can’t perform that action at this time.