MemorySync
API Reference

Integrations

The /api/v1/integrations/* route group manages connector setup. Reads expose the catalog of available providers and the org's connected instances; writes configure AI providers and remove existing connections.
GET/api/v1/integrations/catalog

Authentication

Accepts a JWT bearer token (Authorization: Bearer eyJ…) or an API key (X-API-Key: ms_live_…). API-key callers should send X-Project-ID unless the key is project-locked. Cross-tenant operators must send X-Tenant-ID.

Response

Returns 200 OK with the following body.

FieldTypeRequiredDescription
idstringoptionalConnector slug.
namestringoptionalDisplay name.
categorystringoptionalchat | docs | code | tickets.
auth_typestringoptionaloauth2 | api_key | token.
scopes_requiredstring[]optionalProvider scopes the connector requests.
statusstringoptionalga | beta | preview.
200.json
[
{
"id": "slack",
"name": "Slack",
"category": "chat",
"auth_type": "oauth2",
"scopes_required": [
"channels:history",
"channels:read"
],
"status": "ga"
},
{
"id": "notion",
"name": "Notion",
"category": "docs",
"auth_type": "oauth2",
"scopes_required": [
"read_content"
],
"status": "ga"
},
{
"id": "github",
"name": "GitHub",
"category": "code",
"auth_type": "oauth2",
"scopes_required": [
"repo",
"issues"
],
"status": "ga"
}
]

Errors

StatusCodeDescription
400validation_errorBody or query failed schema validation. The error includes the offending field name.
401unauthenticatedMissing or invalid bearer token / API key.
403forbiddenAuthenticated principal lacks the required scope, role, or project access.
404not_foundTarget resource does not exist or is not visible to the calling tenant.
429rate_limitedPer-IP or per-route limit exceeded. Respect the Retry-After header.
500internal_errorUnhandled server error. Quote the request_id when contacting support.

Examples

cURL
curl -X GET https://api.memorysync.io/api/v1/integrations/catalog \
-H "Authorization: Bearer $MEMORYSYNC_KEY"
javascript
import { MemorySync } from 'memorysync'
const client = new MemorySync({ apiKey: process.env.MEMORYSYNC_KEY })
const result = await client.request({
method: 'GET',
path: '/api/v1/integrations/catalog',
})
console.log(result)
python
from memorysync import Client
client = Client(api_key=os.environ["MEMORYSYNC_KEY"])
result = client.request(
method="GET",
path="/api/v1/integrations/catalog",
)
print(result)

Behavior & notes

Companion routes: GET /api/v1/integrations/connected, GET /api/v1/integrations/stats, POST /api/v1/integrations/ai-provider/configure, DELETE /api/v1/integrations/{integration_id}. OAuth callbacks land at /integrations/{provider}/callback and are not user-callable directly. Manual sync triggers post to POST /api/v1/integrations/{integration_id}/sync.