Skip to content

Direct HTTP Guide

Most integrations should use MCP (https://mcp.configure.dev), the default path. Use the TypeScript SDK when you own the app's model loop, and direct HTTP only when neither fits.

Base URL: https://api.configure.dev. All server-side requests include:

txt
X-API-Key: sk_...
X-Agent: your-agent

Linked users include the agent-scoped token returned by Configure Link or the access token from the Continue with Configure (SSO) token exchange:

txt
Authorization: Bearer <configure-agent-token>

Developer-scoped users can use:

txt
X-User-Id: app-local-user-id

Profile routes:

  • GET /v1/profile: the composed profile; optional ?sections=identity,summary and ?box=<name>. The box is a name, not an id: a category, a source namespace, or projects/<slug>. Box reads accept ?page=<n> (integer, starts at 1) for paginated box views such as projects/<slug>, ?since=<date or ISO timestamp> for a delta view (only newer notes; the response echoes since, counts the delta in total, and always returns latest, the newest note timestamp, as the next cursor), and ?detail=full for whole notes. Compact box reads cut long notes and mark them truncated: true. Notes written over MCP carry a server-stamped session field (a short hash) that tells sessions of one agent apart.
  • GET /v1/profile/search: query params query (the search text), source, box, from, to (YYYY-MM-DD), limit, detail (compact or full). box combined with source filters the writer's own shelf; box alone filters judged canonical categories; box=projects/<slug> spans namespaces. Bare source names that collide with import providers (for example claude) match both the agent's shelf and the import shelf. Use agents/<name> for agent-only results and imports/<provider> or import:<provider> for import-only results.
  • POST /v1/profile/remember: body { "fact": "<1 to 10000 chars>", "box"?: "<shelf>" }. Success returns { saved: true, app, fact, memory: { id, ... } }. Rejected writes (dedupe or invalid content under the admission gate) return { saved: false, ..., reason } with no memory object. Key on saved.
  • POST /v1/profile/forget: body { "id": "mem_<32 hex>", "date"?: "YYYY-MM-DD", "reason"?: "correction" | "user_request" }. Deletes one of your own agent's memories; foreign ids return not-found. Reason user_request also suppresses the fact across sources. Mirrors the MCP configure_profile_forget tool.
  • POST /v1/profile/commit: not a plain save, but a bounded runtime packet { memories?, messages?, toolResults?, sync? } that Configure extracts memories from. Caps: up to 20 memories of up to 1000 chars each, and up to 20 messages and toolResults. sync defaults to false; async extraction responds 202 with status "processing". Use remember for a single explicit fact.

Connector routes live under /v1/connectors/*. Web search and URL fetch are utility routes under /v1/web/*, not connectors. These routes require the agent-scoped Bearer token from Configure Link only; they do not accept SSO access tokens, X-User-Id, or user_id request bodies.

Legacy memory route aliases are not active.

Personalization infrastructure for agents