Skip to main content
GET
Get a memory agent

Authorizations

Authorization
string
header
required

Your API key, shaped sp_<key_id>_<secret>, sent as Authorization: Bearer sp_.... It identifies your organization, not a person. Your organization owns the agents, holds the credit, and is billed. Every key your organization holds reaches the same things, so you rotate a key by minting the new one, deploying it, and revoking the old one.

Keep the key on your server. A request that carries a Sec-Fetch-Site header is refused with 400, because only a browser sets that header. Priors sends no CORS headers, so a browser blocks the call before it leaves the page. The secret is shown once when the key is minted and is stored only as a hash. A lost secret is replaced, never recovered.

An administrator of your organization mints and revokes keys in the Priors application, under Settings. There is no endpoint for it: a key reaches your whole organization, so issuing one is an act of administration.

Headers

X-SP-End-User
string

Your own identifier for the person this request acts for: an account number, a row id, anything stable on your side. It works only with a partner API key. The value is not stored. Priors hashes it together with your organization id, so two clients that send the same string are still two different people.

With the header, you reach the threads that same person created and no others. A new thread is recorded against that person, and GET /v1/agents/{agent_id} returns that person's conversations only. Without the header, the key acts as the organization and reaches every thread on every agent it owns. Learned memory is shared across the agent either way. Only the thread list narrows.

Sent with anything that is not a partner API key, the header returns 400 instead of being ignored. Sent empty or as whitespace, it also returns 400, and it is never read as absent: absent means the whole organization, which is wider access than you asked for. Surrounding whitespace is removed. The 255-character limit is measured on the value as sent.

Required string length: 1 - 255
Pattern: \S

Path Parameters

agent_id
string
required

Unique managed memory-agent identifier.

Maximum string length: 32
Pattern: ^agent_[0-9A-HJKMNP-TV-Z]{26}$

Response

Memory agent metadata

agent_id
string
required

Unique identifier for the managed memory agent.

Pattern: ^agent_[0-9A-HJKMNP-TV-Z]{26}$
status
enum<string>
required
Available options:
initializing,
ready,
failed,
deleting,
deleted
created_at
string<date-time>
required
updated_at
string<date-time>
required
access
enum<string>
required

Your relationship to the agent. An agent your key created is always owner.

Available options:
owner
agent_config
object
expires_at
string<date-time> | null

Always null today: agents do not expire on their own.

resumed_from_turn
integer
default:0

How many turns were already learned into the memory index this agent restored from. It is 0 for a new agent. You cannot work this out yourself, because the index is on our side. A client that resumes a backfill reads it to know how many observations to skip.

Required range: x >= 0
visibility
enum<string>
default:external

The surface an agent sits on. external is the only one an API key reaches, and the only one it can create, so you can leave this field out and receive it. The agent belongs to your organization rather than to any person, and it appears in no directory.

Available options:
external
threads
object[]

The threads on this agent that the caller reaches, newest first. With X-SP-End-User, that is the threads that person created and no others, which is how you list one person's conversations. Without the header your key is the organization, so it is every thread on the agent.