Sondex

Sondex API Docs

This service is API-only. Every endpoint accepts a Sondex API key in the Authorization header:Bearer YOUR_SONDEX_KEY.

1. Quick Start

  1. Sign up at /login.
  2. Open /account and generate your Sondex API key.
  3. Call the context endpoint before every model reply.
curl -sS \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  "https://sondexai.com/api/v1/context/alex%40example.com?type=email"

2. Authentication

Use Bearer auth for all protected API routes.

Authorization: Bearer YOUR_SONDEX_KEY

Public routes: /, /docs, /login, /auth/callback, and webhook endpoints under /api/webhooks/*.

3. Context API

GET/api/v1/context/:identifier?type=email|phone|stripe_customer_id

Get relationship context

Auth: Bearer

Request

Path:
  identifier = URL-encoded email/phone/customer id

Query:
  type = email (default) | phone | stripe_customer_id

Response

{
  "lookup": { "type": "email", "identifier": "jane@acme.com" },
  "contact_profile": { "id": "...", "summary": "..." },
  "financials": { "lifetime_value": 12400 },
  "recent_interactions": [],
  "workflows": []
}

curl

curl -sS \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  "https://sondexai.com/api/v1/context/jane%40acme.com?type=email"

4. Contacts API

GET/api/contacts?search=:term&tag=:tag

List contacts

Auth: Bearer

Request

Query (optional):
  search, tag

Response

{ "contacts": [{ "id": "...", "email": "jane@acme.com" }] }

curl

curl -sS \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  "https://sondexai.com/api/contacts?search=jane"
POST/api/contacts

Create contact

Auth: Bearer

Request

{
  "email": "jane@acme.com",
  "name": "Jane Doe",
  "company": "Acme",
  "tags": ["customer"]
}

Response

{ "contact": { "id": "...", "email": "jane@acme.com" } }

curl

curl -sS -X POST \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@acme.com","name":"Jane Doe"}' \
  "https://sondexai.com/api/contacts"
PATCH/api/contacts/:id

Get or update one contact

Auth: Bearer

Request

{
  "summary": "Updated summary",
  "tags": ["vip"],
  "regenerate_summary": true
}

Response

{ "contact": { "id": "..." }, "summary": "..." }

curl

curl -sS -X PATCH \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tags":["vip"]}' \
  "https://sondexai.com/api/contacts/<contact_id>"

5. Webhooks

Configure your providers to send events to these endpoints:

6. OpenClaw Integration

Add this snippet to your OpenClaw skill/tooling docs:

## Sondex Memory Tool

Before generating any user-facing reply:
1) Call GET /api/v1/context/:identifier
2) Use returned summary + workflow status in response planning
3) If contact missing, create via POST /api/contacts

For inbound OpenClaw events, set webhook URL to:https://sondexai.com/api/webhooks/openclaw?user_id=<your_user_id>&key=<openclaw_key>

7. Merging

POST/api/contacts/:id/merge

Merge duplicate contacts

Auth: Bearer

Request

{ "mergeFromId": "<duplicate_contact_id>" }

Response

{ "contact": { "id": "..." }, "merged": true }

curl

curl -sS -X POST \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mergeFromId":"<other_id>"}' \
  "https://sondexai.com/api/contacts/<target_id>/merge"

8. Summaries

POST/api/summary/refresh

Refresh a contact summary

Auth: Bearer

Request

{ "contact_id": "<contact_uuid>" }

Response

{ "contact_id": "...", "summary": "..." }

curl

curl -sS -X POST \
  -H "Authorization: Bearer $SONDEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contact_id":"<contact_uuid>"}' \
  "https://sondexai.com/api/summary/refresh"