REST API · v1

The Serendipity Engine

One API call. Every hidden connection in your data. Plug in an email address or handle — get back the complete overlap graph: shared places, events, and context scores.

curl
$ curl https://serendipity.aureus.cx/api/v1/connections \
-H "Authorization: Bearer sk_live_…" \
-G --data-urlencode "[email protected]"
// Response
{
"user": {
"handle": "sarah_chen",
"name": "Sarah Chen",
"email": "[email protected]",
"city": "New York, NY"
},
"connections": [
{ "handle": "marcus", "overlap_count": 4, "top_score": 92 }
],
"total": 12
}

Built for teams that care about context

Conference & events

Submit your attendee list before the event. Surface who already has hidden history with each other. Unlock ice-breakers that actually mean something.

HR & recruiting

Find candidates who share meaningful background with your existing team — same universities, same conferences, same cities at the same time.

Sales intelligence

Before the call: does your prospect have hidden overlap with anyone on your team? The warm intro that wasn't even on LinkedIn.

Authentication

Bearer tokens.
Simple. Secure.

Every request must include your API key in the Authorization header. Tokens are generated once and stored as a one-way hash — we can't recover them, so keep yours safe.

  • Keys never expire — you deactivate them
  • Daily rate limit resets at midnight UTC
  • Per-client usage tracking in the admin panel
HTTP headers
Authorization: Bearer sk_live_a1b2c3d4e5f6…
Content-Type: application/json
Rate limit headers in response
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 994
X-RateLimit-Reset: 2026-03-14
Endpoints

Four endpoints. All the context.

GET /api/v1/ping Token verify + usage

Verifies your token is valid and returns current usage stats. Use as a health check.

Parameters

None required

// 200 OK
{
"status": "ok",
"client": "Acme Corp",
"requests_today": 6,
"rate_limit": 1000
}
GET /api/v1/connections Connection graph for a user

Returns all connections for a user. Requires email or phone — both are globally unique identifiers.

Parameters
email string — user's email address required*
phone string — E.164 or digits only required*
page integer — page number (default: 1)

* Provide one of email or phone.

// 200 OK
{
"user": {
"handle": "sarah_chen",
"name": "Sarah Chen",
"email": "[email protected]",
"phone": "****4821",
"city": "New York, NY"
},
"connections": [
{
"handle": "marcus",
"overlap_count": 4,
"top_score": 92,
"shared_places": ["SXSW", "Madrid"]
}
],
"total": 12, "page": 1
}
GET /api/v1/overlaps Overlap history for a user

Returns every detected place-overlap for the user: what happened, where, when, and who else was there.

Parameters
email string — user's email address required*
phone string — E.164 or digits only required*

* Provide one of email or phone.

// 200 OK
{
"overlaps": [
{
"place": "SXSW Austin",
"category": "conference",
"lat": 30.2672, "lng": -97.74,
"year": 2024, "score": 88
}
]
}
POST /api/v1/batch/overlaps Pairwise overlap matrix

Submit up to 50 emails. Get back every pairwise overlap relationship in the group — ideal for pre-event intelligence.

Body (JSON)
emails array — up to 50 email addresses
// Request body
// 200 OK
{
"matrix": [
{ "user_a": "alice", "user_b": "bob",
"overlap_count": 3, "score": 74 }
],
"unmatched_emails": []
}

Error codes

401 Unauthorized Invalid or missing Bearer token.
404 Not Found The email or phone provided doesn't match any Serendipity user.
429 Too Many Requests Daily rate limit exceeded. Resets at midnight UTC.
400 Bad Request Missing required parameters or malformed request body.
500 Internal Server Error Something went wrong on our side. We're paged automatically.

Ready to integrate?

Request your API key. We review every integration to ensure user data is handled responsibly. Typical turnaround is 24–48 hours.