Configure is live for select teams. Production credentials are issued after approval.Get Started
Skip to content

HTTP API Reference

The SDK is the supported integration surface for PR1. Direct HTTP is available for runtimes that cannot use the TypeScript SDK.

Authentication

Server-side calls use:

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

API keys are issued after Launch Preview approval. Existing keys continue to work.

Linked users send the agent-scoped token returned by Configure Link:

txt
Authorization: Bearer <configure-agent-token>

Developer-scoped users send:

txt
X-User-Id: external-user-id

Connector and web utility routes are token-authoritative: use X-API-Key plus the agent-scoped Bearer token from Configure Link. They do not accept X-User-Id or user_id request bodies.

Sign In With Configure Routes

Sign in with Configure uses the hosted first-party page at https://accounts.configure.dev/. Your callback receives a short-lived code, never a JWT. Exchange that code on your server with a secret key.

MethodRouteAuthPurpose
POST/v1/auth/sign-in/return-destinationsX-API-Key: sk_...Allowlist a web callback or native deep link for the acting agent.
GET/v1/auth/sign-in/return-destinationsX-API-Key: sk_...List allowlisted return destinations.
DELETE/v1/auth/sign-in/return-destinationsX-API-Key: sk_...Remove an allowlisted return destination.
POST/v1/auth/sign-in/codeAuthorization: Bearer <configure-agent-token>Configure-owned hosted surface creates the return code after user approval.
POST/v1/auth/sign-in/exchangeX-API-Key: sk_...Exchange one code for an agent-scoped token.

POST /v1/auth/sign-in/return-destinations

json
{
  "return_to": "https://app.example/auth/configure/callback"
}

Return destinations must be absolute URLs or app links. https: is expected for production web callbacks. http: is accepted only for localhost development. URL fragments are stripped before storage.

POST /v1/auth/sign-in/exchange

json
{
  "code": "cfgsic_..."
}

Successful exchange returns the same token shape as Configure Link:

json
{
  "token": "eyJ...",
  "userId": "00000000-0000-0000-0000-000000000000",
  "tokenUse": "agent",
  "approved": true,
  "agent": "your-agent"
}

Codes expire after five minutes, are single-use, and are scoped to the developer account and acting agent resolved from the secret API key.

Canonical Profile Routes

MethodRouteSDK method
GET/v1/profileprofile.read()
GET/v1/profile/searchprofile.search()
POST/v1/profile/rememberprofile.remember()
POST/v1/profile/commitprofile.commit()

Legacy memory aliases are not mounted.

Bulk Import Routes

Bulk import is server-side only and requires a secret key. It is not a model tool, does not use profile.commit(), and does not use X-Configure-* runtime correlation headers.

MethodRouteSDK method
POST/v1/import/profilesconfigure.importProfiles()
GET/v1/import/jobs/:jobIdconfigure.importJobs.get(jobId)
POST/v1/import/jobs/:jobId/cancelHTTP only

POST /v1/import/profiles

Headers:

txt
X-API-Key: sk_...
X-Agent: your-agent
Content-Type: application/json

Body:

json
{
  "mode": "backfill",
  "idempotencyKey": "migration-2026-05-11",
  "users": [
    {
      "externalId": "customer-123",
      "profile": {
        "summary": "Longtime traveler based in SF.",
        "preferences": ["Prefers window seats."]
      },
      "conversations": [
        {
          "id": "thread-1",
          "messages": [
            { "role": "user", "content": "I usually fly out of SFO." },
            { "role": "assistant", "content": "Got it." }
          ]
        }
      ]
    }
  ]
}

Successful requests return 202 with a durable job:

json
{
  "id": "imp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "mode": "backfill",
  "status": "queued",
  "accepted_profiles": 1,
  "estimated_message_count": 2,
  "estimated_input_chars": 48
}

Request bodies may include externalId, conversations, profile hints, mode, and idempotency keys. Request-level idempotency is scoped to the developer account and acting agent. Bodies may not include storage paths, source, written_by, timestamps, or memory IDs. Storage namespace, source, and written_by are derived from the server-resolved agent.

Import Storage

Import writes typed memories under:

txt
/agents/{resolved-agent}/memories/{YYYY-MM-DD}/{mem_id}.json

Import records live under:

txt
/agents/{resolved-agent}/imports/{import_job_id}/...

Import does not write root profile files such as /identity.json, /preferences.md, /user.md, or /context.md.

Import Limits

TierUnique imported profilesMax profiles/jobMax input chars/jobConcurrent import jobs
Free100252M1
Pro1,00025020M2
Scale10,0001,000200M5
EnterpriseUnlimited10,000 default chunk200M direct API default; larger by staged contract10 default; contract-managed

Global caps: 250 conversations/profile, 1,000 messages/conversation, and 20,000 characters/message.

StatusCodeMeaning
402quota_exceededUnique imported-profile quota would be exceeded.
413payload_too_largeThe payload exceeds a job/input cap.
422invalid_formatThe shape is invalid or includes forbidden metadata.
429rate_limitedConcurrent import job cap reached.

Native MCP

The native backend MCP endpoint exposes only the default profile tools in PR1:

  • configure_profile_read
  • configure_profile_search
  • configure_profile_remember

Use the package MCP server when you need connector or action tool opt-ins.

Personalization infrastructure for agents