Skip to main content
Use the official @fetch-hive/sdk package when you want to invoke a prompt deployment from Node.js or TypeScript. The SDK wraps the public POST /v1/prompt/invoke endpoint with a typed client, handles authentication, and exposes streaming as an AsyncIterable.

Installation

npm install @fetch-hive/sdk
# or
yarn add @fetch-hive/sdk
# or
pnpm add @fetch-hive/sdk
The SDK targets Node.js 18+ (it uses the global fetch) and ships with TypeScript types out of the box.

Authentication

Set the FETCH_HIVE_API_KEY environment variable to your workspace API key:
export FETCH_HIVE_API_KEY=fhk_...
import { FetchHive } from '@fetch-hive/sdk';

const client = new FetchHive();
Or pass the key explicitly:
const client = new FetchHive({ apiKey: 'fhk_...' });
See API Keys for how to create and rotate keys.

Basic example

Invoke a prompt deployment and read the final response:
import { FetchHive } from '@fetch-hive/sdk';

const client = new FetchHive();

const result = await client.invokePrompt({
  deployment: 'YOUR_DEPLOYMENT_NAME',
  variant: 'YOUR_VARIANT_NAME',
  inputs: { text: 'Fetch Hive helps teams ship AI products faster.' },
});

console.log(result.response);
invokePrompt returns a Promise that resolves to the parsed JSON body once the prompt has completed. See the non-streaming response shape.

Method reference

FieldTypeRequiredDescription
deploymentstringYesThe prompt deployment name
variantstringNoThe deployment variant name
inputsRecord<string, unknown>NoKey-value pairs for the prompt variables
userstringNoOpaque caller identifier surfaced in User Tracking
metadataRecord<string, string | number | boolean | null>NoFlat 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

const result = await client.invokePrompt({
  deployment: 'my-prompt',
  variant: 'default',
});

console.log(result.response);     // final text
console.log(result.model);        // model identifier
console.log(result.usage);        // token usage breakdown
console.log(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 an AsyncIterable that you can consume with for await:
for await (const chunk of client.invokePromptStream({
  deployment: 'YOUR_DEPLOYMENT_NAME',
  variant: 'YOUR_VARIANT_NAME',
  inputs: { text: 'Fetch Hive helps teams ship AI products faster.' },
})) {
  if (chunk.type === 'response') {
    process.stdout.write(chunk.response ?? '');
  } else if (chunk.type === 'usage') {
    console.log('\n\nUsage:', chunk.usage);
  }
}
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
apiKeyprocess.env.FETCH_HIVE_API_KEYBearer token from the dashboard
baseURLhttps://api.fetchhive.com/v1Override the API base URL
const client = new FetchHive({
  apiKey: 'fhk_...',
  baseURL: 'https://api.fetchhive.com/v1',
});

Errors

Non-2xx responses throw an Error whose message includes the status code and response body:
try {
  const result = await client.invokePrompt({
    deployment: 'my-prompt',
    variant: 'default',
  });
} catch (err) {
  console.error('Fetch Hive error:', err);
}
See Errors and Rate Limits for status code meanings.

Next steps