Authentication
Endpoint
POST https://api.fetchhive.com/v1/agent/invoke
If you want Fetch Hive to generate the cURL example for you, open Agents, then use More -> Get Code. If you are already in the editor for a specific agent, click Get Code in the editor control bar instead.
Request
Use this request shape:metadata must be flat and scalar-only: strings, numbers, booleans, or null. Nested objects and arrays return a validation error before the run starts.
attachments items can be simple URL strings:
https:// URLs are accepted. Up to five attachments are allowed per
message. Document attachments are
exposed to the agent through the system read_file tool as an
<available_files> manifest; the agent calls read_file before relying on
document contents. If an attachment URL or type is invalid, Fetch Hive returns
a 422 validation error instead of opening the stream. The error uses the
standard error_code, error, and message fields; error and message are
localized from the authenticated account language when available.
Supported document attachments:
- CSV:
text/csv,.csv - XLSX:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,.xlsx - PDF:
application/pdf,.pdf - DOCX:
application/vnd.openxmlformats-officedocument.wordprocessingml.document,.docx - Text and Markdown by extension:
.txt,.md,.markdown
read_file, and the file tool
detects the actual type when it fetches the file.
The in-app snippet shows the same body shape:
Basic example
metadata for audit fields you want to see or filter in logs, such as customer IDs, plan names, regions, or experiment names. It is stored with the run and displayed under User metadata in logs. See Invoke metadata for examples and log filtering details.
Response
Ifstreaming is true, the route returns a stream of events rather than one final JSON object. If the provider fails after the stream has opened, the route sends a final error event before closing the stream. If the client disconnects first, Fetch Hive treats it as a silent cancellation and does not create a failed agent run, bill usage, or report a provider-error event unless the provider had already completed and usage was committed.
Streaming response
The stream can include a summary event, reasoning chunks, response chunks, tool events, a final usage event, or an error event. Events arrive in this order when all successful events are present:summary → reasoning → response → tool → usage. An error event can arrive instead of usage if the provider fails mid-stream.
Summary event (only emitted on threads with auto-summarization enabled):
original_token_count is the token count before compression; context_limit is the model’s total context window. You can surface this to users as a “conversation summarized” indicator, or ignore it — your app’s behaviour is unaffected either way.
Reasoning event:
Non-streaming response
Ifstreaming is false, the route returns one JSON response with the generated output, usage data, and the request ID you can use to inspect the run in Logs. Provider execution failures return 502 Bad Gateway with an error message.
The exact output field can vary by provider, but the response includes the run metadata you need. For example:
Multi-turn conversations
The invoke endpoint supports two approaches for multi-turn conversations.Persistent threads (Fetch Hive manages history)
Pass athread_id — any string you choose — and Fetch Hive will automatically create the thread on the first call and resume it on every subsequent call with the same value. Message history is stored in Fetch Hive and included in the context automatically.
thread_id — a user ID, session ID, ticket number, or any other identifier that makes sense for your use case.
Stateless history (caller manages history)
If you prefer to manage conversation state yourself, pass the previous turns in themessages array. Fetch Hive uses the provided history for context but does not persist it.
known_artifact_refs. Put the UUIDs selected for the current turn in
artifact_refs; attachments plus artifact_refs can contain at most five
items. An artifact_ref must also appear in known_artifact_refs.
Persistent thread_id calls derive known artifacts from the saved chat and
ignore conflicting client discovery metadata. External document and image URLs
continue to use attachments or messages[].attachments. External audio URLs
are unsupported.
Streaming calls can receive an artifact event in addition to existing tool
events. Non-stream responses include an artifacts array.
Use messages when you already maintain your own chat state and do not need Fetch Hive to store the conversation history.

