PHP SDK

Official PHP SDK for the Truelist email validation API.

Installation

composer require truelist/truelist-php

Requires PHP 8.1+ and Guzzle 7.0+.

Note

Start free — 100 validations + 10 enhanced credits, no credit card required. Get your API key.

Quick start

use TruelistTruelist;

$client = new Truelist('your-api-key');
$result = $client->validate('user@example.com');

if ($result->isValid()) {
    echo "Email is valid!";
}

Configuration

$client = new Truelist('your-api-key', [
    'base_url'       => 'https://api.truelist.io',
    'timeout'        => 10,
    'max_retries'    => 2,
    'raise_on_error' => false,
]);

Result methods

$result->email;       // 'user@example.com'
$result->state;       // 'ok', 'email_invalid', 'accept_all', 'unknown'
$result->subState;    // 'email_ok', 'is_disposable', 'is_role', ...
$result->suggestion;  // null or correction
$result->domain;
$result->verifiedAt;

Predicates: isValid(), isInvalid(), isAcceptAll(), isUnknown(), isDisposable(), isRole()

Error handling

Auth errors (401) always throw AuthenticationException. When raise_on_error is false (default), transient errors return an unknown result with isError() === true.

use TruelistExceptionsAuthenticationException;
use TruelistExceptionsRateLimitException;

try {
    $result = $client->validate('user@example.com');
} catch (AuthenticationException $e) {
    // Bad API key
} catch (RateLimitException $e) {
    // Rate limited
}

Laravel integration

composer require truelist/laravel
php artisan vendor:publish --tag=truelist-config

Add your API key to .env:

TRUELIST_API_KEY=your_api_key_here

Validation rule

use TruelistRulesDeliverable;

$request->validate([
    'email' => ['required', 'email', new Deliverable],
]);

// or shorthand:
$request->validate([
    'email' => ['required', 'email', 'deliverable'],
]);

Facade

use TruelistFacadesTruelist;

$result = Truelist::validate('user@example.com');

Caching

TRUELIST_CACHE_ENABLED=true
TRUELIST_CACHE_TTL=3600

Uses Laravel’s default cache driver. Unknown/error results are never cached.

Config (config/truelist.php)

Key Default Description
api_key env Required
timeout 10 Seconds
raise_on_error false Throw on transient errors
cache.enabled false Enable caching
cache.ttl 3600 Cache TTL in seconds

Requirements

  • PHP 8.1+
  • Laravel 10, 11, or 12

Package links

Package Install
truelist/truelist-php composer require truelist/truelist-php
truelist/laravel composer require truelist/laravel

Note

**Prefer an AI-first workflow?** Validate emails conversationally in Claude, Cursor, or VS Code Copilot using our hosted MCP server. No API key required.