API referenceAgents APIUser profilesCreate a profile

Create a user profile

⚠️
Preview — this feature is being built; the design below is the spec.
POST https://app.syntic.ai/v1/user_profiles

Create a profile for one end user of your product. Pass its id as user_profile_id when you start a session and the agent receives the person’s name, language, time zone and attributes, and its memory tool reads and writes under the profile’s memory scope. Profiles let one agent serve thousands of users without you rebuilding that context on every call.

For how this fits into a full workflow, see User profiles.

Headers

HeaderRequiredValue
AuthorizationYesBearer <key>: a private inference key (sk_live_...). See Authentication.
syntic-betaYes, while in previewagents-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json
Idempotency-KeyNoUp to 255 characters. Retrying with the same key within 24 hours returns the first result instead of acting twice. See Idempotency.

Body parameters

ParameterTypeRequiredNotes
external_idstringYes1 to 128 characters.
display_namestringNoUp to 120 characters.
localestringNoBCP 47, for example de-DE.
timezonestringNoIANA zone, for example Asia/Dubai.
attributesobjectNoUp to 50 keys; keys up to 64 characters, string values up to 512.
memory_scopestringNoDefault user:<external_id>.

Response

201 Created, Content-Type: application/json

{
  "id": "uprof_01JCF5H7K9M1P3R5T7V9",
  "type": "user_profile",
  "external_id": "cust-4821",
  "display_name": "Dana Lee",
  "locale": "en-GB",
  "timezone": "Europe/London",
  "attributes": {
    "plan": "gold",
    "region": "uk-south"
  },
  "memory_scope": "user:cust-4821",
  "session_count": 0,
  "created_at": "2026-10-02T09:00:00Z",
  "updated_at": "2026-10-02T09:00:00Z"
}
FieldTypeDescription
idstringStarts with uprof_.
external_idstringYour own id for the person; unique within the workspace.
localestringBCP 47 tag. The agent is told to answer in this language unless the user writes in another.
timezonestringIANA zone. Used for dates in the agent’s context and for deployment schedules that run per user.
attributesobjectUp to 50 keys, string, number or boolean values. Visible to the agent as facts about the user.
memory_scopestringThe scope used when agents read or write memories about this person.
session_countintegerSessions started with this profile.

Examples

curl -sS "https://app.syntic.ai/v1/user_profiles" \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: agents-2026-11-01" \
  -H "Idempotency-Key: 8d6f0c1e-4b2a-4a57-9f0e-2f1d3c4b5a69" \
  -H "Content-Type: application/json" \
  -d '{
      "external_id": "cust-4821",
      "display_name": "Dana Lee",
      "locale": "en-GB",
      "timezone": "Europe/London",
      "attributes": {
        "plan": "gold",
        "region": "uk-south"
      }
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
409conflict_errorexternal_id_takenA profile with this external_id exists; update it instead.
400invalid_request_errorinvalid_localelocale or timezone is not a recognised value.
401authentication_errorinvalid_api_keyThe key is missing, unknown, revoked or expired.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?