Official PHP SDK for Phaseo Gateway.
Packagist package name: phaseo/sdk
composer require phaseo/sdk<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Phaseo\Sdk\Phaseo;
$client = new Phaseo(
apiKey: getenv('PHASEO_API_KEY') ?: null,
basePath: getenv('PHASEO_BASE_URL') ?: 'https://api.phaseo.app/v1',
);
$response = $client->createResponse([
'model' => 'google/gemma-3-27b:free',
'input' => 'Reply with: PHP SDK works',
]);
echo json_encode($response, JSON_PRETTY_PRINT) . PHP_EOL;createResponse(array $payload)createChatCompletion(array $payload)listModels(array $params = [])listOrganisations(array $params = [])for paginated/organisationsdiscoverylistPricingModels(array $params = [])for/pricing/modelscatalogue pricing discoverycalculatePricing(array $payload)for/pricing/calculateusage estimationlistProviders(array $params = []),getCredits(array $params = []),getActivity(array $params = []), andgetAnalytics(array $params = [])for provider discovery and management-key usage surfaceslistApiKeys(array $params = [])for management-key/keysdiscoverycreateApiKey(array $payload),updateApiKey(string $id, array $payload), anddeleteApiKey(string $id)for management-key API-key lifecycle changesgetApiKey(string $id)for management-key/keys/{id}lookuplistWorkspaces(array $params = []),getWorkspace(string $id),createWorkspace(array $body),updateWorkspace(string $id, array $body), anddeleteWorkspace(string $id)for management-key workspace lifecycle managementgetCurrentApiKey()health()getModelDeprecationInfo(string $modelId)validateModel(string $modelId)
Model discovery supports the public /models filters, including provider, provider_status, provider_routing_status, model_routing_status, capability_status, provider_availability_status, provider_availability_reason, status, organisation, endpoints, input_types, output_types, params, availability, limit, and offset.
Use provider_availability_reason with availability=all when you want rollout-state entries such as preview_only, provider_not_ready, gated, access_limited, region_limited, project_limited, paused, or soft_blocked. Use capability_status with availability=all when you want non-routable endpoint mappings such as coming_soon or internal_testing.
$models = $client->listModels([
'provider' => 'anthropic',
'provider_status' => 'beta,not_ready',
'provider_availability_reason' => 'preview_only,provider_not_ready',
'capability_status' => 'coming_soon,internal_testing',
'availability' => 'all',
]);Batch and video operations can expose a websocket lifecycle stream at /v1/async/{kind}/{id}/ws.
$batchSocketUrl = $client->getBatchWebSocketUrl('batch_123', 1500);
$videoSocketUrl = $client->getVideoWebSocketUrl('video_123', null, true);
$genericSocketUrl = $client->getAsyncJobWebSocketUrl('video', 'video_123');
$resourceSocketUrl = $client->asyncJobs()->websocketUrl('video', 'video_123');
echo $batchSocketUrl . PHP_EOL;
echo $videoSocketUrl . PHP_EOL;
echo $genericSocketUrl . PHP_EOL;
echo $resourceSocketUrl . PHP_EOL;TLS verification is enabled by default.
Resolution order for CA bundle:
- Constructor
caBundlePath PHASEO_CA_BUNDLEcurl.cainfo/openssl.cafileSSL_CERT_FILE- Bundled
certs/cacert.pem
Disabling TLS verification (verifyTls: false) should only be used for local debugging.
- Models with
:freein the model ID can be called with zero deposited credits. - Paid models require available wallet balance.
PHASEO_API_KEY(required unless passed in code)PHASEO_BASE_URL(optional, defaults tohttps://api.phaseo.app/v1)PHASEO_CA_BUNDLE(optional TLS override)
- Regenerate generated client:
pnpm openapi:gen:php - Validate and test:
pnpm --filter @phaseo/php-sdk run validate && pnpm --filter @phaseo/php-sdk run test