Developers

API Documentation

Everything you need to integrate with the SocialSweep API and MCP server — search professional networks in natural language, import connections, and connect AI assistants.

Getting Started

The SocialSweep API is a REST API served over HTTPS. All routes use the /v1 prefix.

Base URL

https://api.socialsweep.ai/v1

Getting an API key

  • Already have a SocialSweep account? Generate a key under Settings → Developers in the app.
  • Building a partner integration and want a test key to evaluate the API? Email support@socialsweep.ai and we’ll set you up with a demo account.

Keep your key private. Anyone with it can access the account and network data it belongs to. Creating a new key automatically revokes the previous one.

Authentication

Authentication uses a simple API key passed as a Bearer token in the Authorization header. No OAuth flow is required. Keys start with ss_ak_ and are long-lived until rotated or revoked.

Using your API key

Authorization: Bearer ss_ak_YOUR_API_KEY

Quick test

curl -H "Authorization: Bearer ss_ak_YOUR_API_KEY" \
  https://api.socialsweep.ai/v1/me

Projects

Organize searches into projects for recruiting, sales, or research.

POST/v1/projects
FieldTypeRequiredDescription
namestringYesProject name (max 500 chars)
queryValuestringNoDefault search query (max 5,000 chars)
dataSourcePlatformsstring[]Nolinkedin, gmail, twitter, calendar
statusstringNodraft, active, or completed
MethodEndpointDescription
GET/v1/projectsList all projects
GET/v1/projects/:idGet a project
PUT/v1/projects/:idUpdate a project
DELETE/v1/projects/:idDelete a project
POST/v1/projects/:id/searchRun a search within the project
GET/v1/projects/:id/candidatesGet people found across all searches
GET/v1/projects/:id/searchesGet search history for the project

Conversations

Track multi-turn search conversations and their results.

MethodEndpointDescription
POST/v1/conversationsCreate a conversation
GET/v1/conversationsList conversations
GET/v1/conversations/:idGet a conversation
GET/v1/conversations/:id/resultsGet conversation results (people)
PUT/v1/conversations/:idUpdate a conversation
DELETE/v1/conversations/:idDelete a conversation
POST/v1/conversations/:conversationId/messagesAdd a message
GET/v1/conversations/:conversationId/messagesList messages in a conversation

Create message body

FieldTypeRequiredDescription
contentstringYesMessage content (max 10,000 chars)

Imports

Import connections from various platforms to build a network graph.

Platform file uploads

Upload platform export files as multipart/form-data with a file field. Max 50 MB per file.

MethodEndpointDescription
POST/v1/imports/linkedin/connectionsUpload LinkedIn connections CSV
POST/v1/imports/twitter/followersUpload Twitter/X followers data
POST/v1/imports/twitter/followingUpload Twitter/X following data
POST/v1/imports/instagram/followersUpload Instagram followers data
POST/v1/imports/instagram/followingUpload Instagram following data
POST/v1/imports/facebook/friendsImport Facebook friends (JSON body)
curl -X POST https://api.socialsweep.ai/v1/imports/linkedin/connections \
  -H "Authorization: Bearer ss_ak_YOUR_API_KEY" \
  -F "file=@Connections.csv"

CSV contact import (two-step)

For generic CSV files with contacts, use a preview → import flow.

Step 1POST/v1/imports/contacts/csv/preview
FieldTypeRequiredDescription
fileFileYesCSV file (max 50 MB)
columnMappingsJSON stringYesArray of column-to-field mappings
delimiterstringYes,;\t or |

Supported target fields: email (required), fullName, firstName, lastName, company, title, phone, linkedinUrl, notes, tags.

Step 2POST/v1/imports/contacts/csv

Same parameters as preview, plus ownerUserId (your user ID).

Checking import status

GET/v1/imports/:id
StatusDescription
PENDINGCreated, waiting to be processed
VALIDATINGFile is being validated
PROCESSINGContacts are being imported
COMPLETEDSuccessfully finished
PARTIALLY_COMPLETEDFinished with some failures
FAILEDProcessing failed
CANCELEDImport was cancelled

Linked Accounts

Manage social platform accounts linked to a profile.

MethodEndpointDescription
GET/v1/me/linked-accountsList your linked accounts
POST/v1/me/linked-accountsLink a new account
PATCH/v1/me/linked-accounts/:linkIdUpdate a linked account
DELETE/v1/me/linked-accounts/:linkIdRemove a linked account

Link account body

FieldTypeRequiredDescription
platformIdintegerYesPlatform ID
handlestringConditionalPlatform username (at least one identifier required)
externalUidstringConditionalExternal user ID
urlstringConditionalProfile URL
isPrimarybooleanNoMark as primary account for this platform

OAuth Integrations

Connect email and contacts providers to automatically sync a network.

Supported providers

ProviderCodeSyncs
GmailgmailEmail contacts and interaction history
OutlookoutlookEmail contacts and interaction history
Google Contactsgoogle-contactsContact list
MethodEndpointDescription
GET/v1/oauth/:provider/authGet authorization URL to start OAuth flow
GET/v1/oauth/:provider/statusCheck if provider is connected
DELETE/v1/oauth/:provider/disconnectDisconnect a provider

Profile & Anchor

The “anchor” is the Person entity that represents the account owner in the SocialSweep graph.

MethodEndpointDescription
GET/v1/meGet your user profile
GET/v1/me/anchorGet your anchor person
PUT/v1/me/anchorUpdate your anchor
GET/v1/me/networkNetwork summary
GET/v1/me/account-edges/countTotal resolved connections

Update anchor body

FieldTypeRequiredDescription
fullNamestringConditionalYour name (max 255 chars)
headlinestringNoShort headline (max 255 chars)
biostringNoBio (max 2,000 chars)

Rate Limits

Requests that exceed the limit receive a 429 response.

EndpointLimit
POST /v1/search/people100 requests/min
POST /v1/imports/contacts/csv/preview10 requests/min
POST /v1/imports/contacts/csv5 requests/min
OAuth /auth10 requests/min
OAuth /status30 requests/min

Rate limit headers are included in every response:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1709472000

Error Codes

All errors return a JSON object with error.code and error.message.

{
  "error": {
    "code": "INVALID_QUERY",
    "message": "Query cannot be empty"
  }
}
HTTP StatusMeaning
400 Bad request — invalid parameters or validation failure
401Unauthorized — missing or invalid API key
403Forbidden — insufficient permissions
404Not found
429Rate limited — too many requests
500Internal server error
CodeDescription
SEARCH_ERRORGeneral search failure
INVALID_QUERYMalformed or empty search query
UNAUTHORIZEDMissing or invalid API key
RATE_LIMITEDToo many requests
NO_FILE_UPLOADEDFile parameter is missing
VALIDATION_FAILEDCSV has too many invalid rows (>30%)
PROVIDER_NOT_FOUNDInvalid OAuth provider
INTERNAL_ERRORServer error — contact support

MCP Server

The SocialSweep MCP (Model Context Protocol) server lets AI assistants like Claude and Manus search a network on the user's behalf. Connect it once and your AI assistant can find people, run queries, and access the social graph.

SSE URL — Manus, Cursor, Windsurf

https://mcp.socialsweep.ai/sse

Streamable HTTP URL — Claude

https://mcp.socialsweep.ai/mcp

Cu Setting up with Cursor

  1. Open Cursor and go to Settings → MCP.
  2. Click “Add new global MCP server”.
  3. Add the following configuration:
{
  "mcpServers": {
    "socialsweep": {
      "url": "https://mcp.socialsweep.ai/sse",
      "headers": {
        "x-api-key": "ss_ak_YOUR_API_KEY"
      }
    }
  }
}

Replace ss_ak_YOUR_API_KEY with your actual API key.

Save and the MCP server should connect automatically. You can now ask Cursor to search your SocialSweep network in Agent mode.

M Setting up with Manus

  1. Open Manus and navigate to Settings → Integrations → MCP Servers.
  2. Click “Add Server” and enter:
FieldValue
NameSocialSweep
Server URLhttps://mcp.socialsweep.ai/sse
API Key / Header Header x-api-key = ss_ak_YOUR_API_KEY

Save. Manus can now search your SocialSweep network. Try: “Find engineers in my network who work at YC companies.”

W Setting up with Windsurf

  1. Open Windsurf and go to Settings → Cascade → MCP.
  2. Click “Add Server” and select SSE as the transport.
  3. Enter the server URL and header:
{
  "mcpServers": {
    "socialsweep": {
      "serverUrl": "https://mcp.socialsweep.ai/sse",
      "headers": {
        "x-api-key": "ss_ak_YOUR_API_KEY"
      }
    }
  }
}

Replace the API key with your actual key, save, and reconnect.

* Any MCP-compatible client

For any other MCP client, use the following details:

SettingValue
SSE transport URLhttps://mcp.socialsweep.ai/sse
Streamable HTTP URLhttps://mcp.socialsweep.ai/mcp
Auth headerx-api-key: ss_ak_YOUR_API_KEY

Use the SSE URL for clients that support Server-Sent Events transport (most clients). Use the Streamable HTTP URL for clients that support the newer MCP HTTP transport (e.g. Claude).

Available MCP tools

Once connected, your AI assistant will have access to these tools:

ToolDescription
search_peopleSearch your network with a natural language query
get_query_resultsRetrieve full results for a previous search query

Code Examples

Quick-start examples in popular languages.

Python

import requests

API_KEY = "ss_ak_YOUR_API_KEY"
BASE = "https://api.socialsweep.ai/v1"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

resp = requests.post(
    f"{BASE}/search/people",
    headers=HEADERS,
    json={"query": "designers who freelance", "limit": 20},
)

for r in resp.json()["results"]:
    p = r["person"]
    s = r["matchScore"]["percentage"]
    print(f"{p['fullName']} - {p.get('title', 'N/A')} ({s}% match)")

JavaScript / TypeScript

const API_KEY = "ss_ak_YOUR_API_KEY";
const BASE = "https://api.socialsweep.ai/v1";

const res = await fetch(`${BASE}/search/people`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    query: "engineers at YC companies",
    limit: 10,
  }),
});

const data = await res.json();
console.log(`Found ${data.total} people`);

Support

If you run into issues, contact us at support@socialsweep.ai with your request ID (from response headers), the endpoint and request body, and the full error response.