Skip to main content
Use the official fetch-hive/sdk Composer package when you want to invoke a prompt deployment from PHP. The SDK wraps the public POST /v1/prompt/invoke endpoint with an idiomatic facade, handles authentication, and exposes streaming responses as a generator of parsed event arrays.

Installation

composer require fetch-hive/sdk
The SDK requires PHP 8.1+ and uses Guzzle as its HTTP client.

Authentication

Set the FETCH_HIVE_API_KEY environment variable to your workspace API key (the client reads it automatically):
export FETCH_HIVE_API_KEY=fhk_...
<?php
require_once 'vendor/autoload.php';

use FetchHive\Sdk\FetchHive;

$client = new FetchHive();
Or pass the key explicitly:
$client = new FetchHive(['api_key' => 'fhk_...']);
See API Keys for how to create and rotate keys.

Basic example

Invoke a prompt deployment and read the final response:
<?php
require_once 'vendor/autoload.php';

use FetchHive\Sdk\FetchHive;

$client = new FetchHive();

$result = $client->invokePrompt([
    'deployment' => 'YOUR_DEPLOYMENT_NAME',
    'variant'    => 'YOUR_VARIANT_NAME',
    'inputs'     => ['text' => 'Fetch Hive helps teams ship AI products faster.'],
]);

echo $result['response'];
invokePrompt blocks until the prompt completes and returns the parsed JSON body as an associative array. See the non-streaming response shape.

Method reference

KeyTypeRequiredDescription
deploymentstringYesThe prompt deployment name
variantstringNoThe deployment variant name
inputsarrayNoKey-value pairs for the prompt variables
userstringNoOpaque caller identifier surfaced in User Tracking
metadataarrayNoFlat caller-defined metadata for audit and log filtering. See Invoke metadata
The SDK injects streaming: false for invokePrompt. To stream, use invokePromptStream (below).

Handling the response

$result = $client->invokePrompt([
    'deployment' => 'my-prompt',
    'variant'    => 'default',
]);

echo $result['response'];      // final text
echo $result['model'];         // model identifier
print_r($result['usage']);     // token usage breakdown
echo $result['request_id'];    // use this to look up the run in Logs

Streaming

Use invokePromptStream to receive Server-Sent Events as they arrive. The method returns a Generator you can iterate with foreach:
foreach ($client->invokePromptStream([
    'deployment' => 'YOUR_DEPLOYMENT_NAME',
    'variant'    => 'YOUR_VARIANT_NAME',
    'inputs'     => ['text' => 'Fetch Hive helps teams ship AI products faster.'],
]) as $chunk) {
    match ($chunk['type']) {
        'response' => print($chunk['response'] ?? ''),
        'usage'    => print("\n\nUsage: " . json_encode($chunk['usage'])),
        default    => null,
    };
}
The stream yields the same event types documented in Invoke Prompt → Response: reasoning, response, a final usage event, or an error event if the provider fails mid-stream.

Configuration

OptionDefaultDescription
api_keyFETCH_HIVE_API_KEY env varBearer token from the dashboard
base_urlhttps://api.fetchhive.com/v1Override the API base URL
timeout120Request timeout in seconds
$client = new FetchHive([
    'api_key'  => 'fhk_...',
    'base_url' => 'https://api.fetchhive.com/v1',
    'timeout'  => 60.0,
]);

Errors

Non-2xx responses throw FetchHive\Sdk\Exception\ApiException carrying the status code and response body. Catch it if you need to handle failures:
use FetchHive\Sdk\Exception\ApiException;

try {
    $result = $client->invokePrompt([
        'deployment' => 'my-prompt',
        'variant'    => 'default',
    ]);
} catch (ApiException $e) {
    error_log('Fetch Hive error: ' . $e->getMessage());
}
See Errors and Rate Limits for status code meanings.

Next steps