Welcome
Use the Hyperspell API to add memories, connect data sources, and search your users’ data using natural language. You can add data directly or let users connect services such as Notion, Gmail, and Slack.Authentication
Hyperspell API requests use bearer-token authentication. Generate an API key in the Hyperspell dashboard, then send it asAuthorization: Bearer <key> with every request. Keys created in the admin API Keys settings act for the whole organization. Keys created from Connect Agents act as the member who created them. See Permissions for what each can see.
Search response content
POST /memories/query returns matched text in highlights, alongside a small
typed document frame. Search results do not include complete parent documents
or channel histories. body_status: "excerpt" means source evidence is present;
"omitted" means the result contains only its envelope or generated summaries.
These values describe the response, not whether the stored document is complete.
The document keeps its display title (or name) and an explicit empty children
array; render matched text from highlights. Short highlight feedback comments
are preserved when they fit alongside the matched text.
Each document record is limited to 32 KiB, including up to 8 KiB of excerpts and
a display title of up to 1 KiB. At most three highlights are returned, with up to
2,000 characters each including any abbreviation marker. These delivery ceilings
are independent of retrieval candidate limits. The document-array budget scales with the requested
result count: 256 KiB for 10 results, 800 KiB for 50, and 3,200 KiB for 200.
The public header X-Hyperspell-Response-Profile: mcp selects a fixed 256 KiB
document-array budget. Use lowercase api or mcp; other values return HTTP 422.
When limits require content reductions or fewer results, the HTTP response remains
200 and includes ResponseContentLimited in the existing errors array. This is
an informational outcome. It does not mean search or answer generation failed.
The answer, query ID, other outcomes, and retained results’ identities and scores
are preserved. Optional metadata is reduced before dropping results. Always use
source and resource_id for identity; displayed titles may be abbreviated.
These limits cover returned document records. Answer text, provenance, and
upstream retrieval have separate limits. They do not change permissions or the
number of candidates considered by retrieval and reranking.
This section applies specifically to POST /memories/query. Saved-query reads
at GET /evaluate/query/{query_id}, point reads, and live document endpoints
have separate response policies; sharing a response model does not apply these
query limits to them.
Query provenance
Every query response includesprovenance.turns, an ordered array. Request
provenance: true at any effort to collect model turns and their tool outcomes.
In the CLI, use hyperbrain ask "your question" --provenance -o json.
provenance.steps remains available.
For effort: "very_high", request provenance: true to inspect the returned
source evidence and search trajectory. In the CLI, use
hyperbrain ask "your question" -e very_high --provenance -o json.
When entity-assisted search is enabled, entity_resolutions contains possible
identity matches, their supporting excerpts, status, and limitations. A match
does not confirm a role, relationship, or presence in the final documents. The
legacy entity_searches field is omitted and entities is empty on this path, even
when the agent used identity lookup. Neither value means that no lookup ran.
For each search_indexed step, entity_filter_requested reports whether the
agent supplied an entity restriction. Check the step’s status to distinguish
successful, empty, and failed attempts. This flag does not expose entity IDs or
claim that a candidate appeared in the answer. Older records may omit the flag.
Retain the original response if you need this audit trail. Saved-query reads
currently return the saved answer and accessible source results, but do not
reconstruct the original tool trajectory or identity lookup provenance.
Listing documents
GET /memories/list returns document envelopes by default. These body-free records
report body_status: "omitted". Each record is limited to 32 KiB, with a bounded
display title; large optional metadata, summaries, or document-frame fields may be
omitted. A notices entry with code: "ResponseContentLimited" identifies such
reductions. Stored content and permissions are unchanged.
The default page budget scales with size: 256 KiB for small pages, up to 1,600 KiB
for 100 results. To request a smaller 256 KiB page budget, send the public header
X-Hyperspell-Response-Profile: mcp. The header changes response size, not access.
Values are case-sensitive: use lowercase api or mcp. Other values return HTTP 422.
next_cursor when present, including after a short or empty
page. A record that cannot fit even an empty page is explicitly skipped in
notices, with its exact identity when that identity fits. Do not treat a short
page as the end of the listing.
include_body=true uses the same record and page limits. Small non-channel
documents may include a stored body labeled body_status: "preview"; larger or
restricted bodies are omitted with a notice. Slack and Teams history and File
previews remain excluded from listings. Optional bodies never displace required
records. Use GET /memories/get/{source}/{resource_id} or MCP get_memory for a
larger bounded preview or channel page. A preview does not guarantee completeness.
Reading indexed channel content
GET /memories/get/{source}/{resource_id} returns a bounded page for Slack and
Microsoft Teams. The document tree contains permitted indexed source content;
it never loads the stored channel history to fill the response. Each page is at
most 32 KiB, including optional chunk summaries and notices.
body_status is preview when source content is present and omitted otherwise.
The notices array explains partial content and reports skipped_chunk_count for
oversized or unreadable chunks. A generated summary is not substituted for source
content. A final page does not imply that the entire provider history was ingested.
Pass next_cursor back as the cursor query parameter to continue, even after an
empty page. Authorization is checked again on every request. Pagination follows
the current index, so concurrent ingestion or replacement can change later pages.
The dashboard replaces each page rather than accumulating the entire channel.
The public X-Hyperspell-Response-Profile header accepts lowercase api (default)
or mcp; both use the same 32 KiB channel-page cap. Other values return HTTP 422. Other providers reject a channel cursor.
Reading other indexed documents
Single-document reads from other providers return at most 1 MiB of JSON with theapi profile, or 256 KiB with mcp. These limits include the document envelope,
optional chunk summaries, and notices. MCP selects its profile before the backend
loads content.
Responses use body_status=preview when source content is available and omitted
otherwise, with a ResponseContentLimited notice explaining the bounded view.
A preview does not prove that the full original source was indexed or returned.
Non-channel previews do not provide continuation in this release.
Uploaded files use their stored readable preview, not a reconstruction from search
chunks. A large preview can return a shorter source-text prefix. Its stored
content_truncated flag describes ingestion, independently of response clipping.
If chunk exclusions prevent safely exposing the stored body, the file can return
an omitted body. Other documents use permitted indexed content, or a bounded stored
body when no source-bearing chunks or exclusions prevent that fallback.
The dashboard displays these notices beside the content. Original-file downloads,
and live-provider reads retain their separate contracts.
Direct Fathom, Fellow and Gong transcript reads
GET /live/fathom/resources/{resource_id},
GET /live/fellow/resources/{resource_id} and
GET /live/gong/resources/{resource_id} return a transcript preview with
meeting dates, attributed utterances and relative timestamps. Each record fits
within 32 KiB; the whole response fits within 1 MiB for the default api profile
or 256 KiB with X-Hyperspell-Response-Profile: mcp.
Large transcripts can have shortened text or an omitted tail and participant
roster. Retained utterances keep their IDs, speakers and timestamps. Read notes
for reductions; body_status is preview, or omitted when no body fits.
There is no continuation cursor, and even a small preview does not guarantee the
complete original transcript.
Provider responses over 2 MiB (api) or 512 KiB (mcp), over 100 media items or
1,000 combined entries fail with HTTP 422. Fathom counts transcript turns, action
items and a nonempty summary object. Fellow counts transcript turns, AI-note
templates, sections, list content entries, bullet points and assignees together,
including empty entries and inactive templates. Gong counts inline transcript turns,
including empty turns; a transcript available only through a download URL fails
with 422 because direct reads do not follow those URLs. Redirected
or compressed provider responses and oversized identity frames also fail with 422.
index=false is the default; when a resource is returned, index=true queues
the existing full background fetch for indexing. These limits apply to direct live API reads and do not
change background ingestion or ordinary memory queries.