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.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | optional | Connector slug. |
name | string | optional | Display name. |
category | string | optional | chat | docs | code | tickets. |
auth_type | string | optional | oauth2 | api_key | token. |
scopes_required | string[] | optional | Provider scopes the connector requests. |
status | string | optional | ga | 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
| Status | Code | Description |
|---|---|---|
| 400 | validation_error | Body or query failed schema validation. The error includes the offending field name. |
| 401 | unauthenticated | Missing or invalid bearer token / API key. |
| 403 | forbidden | Authenticated principal lacks the required scope, role, or project access. |
| 404 | not_found | Target resource does not exist or is not visible to the calling tenant. |
| 429 | rate_limited | Per-IP or per-route limit exceeded. Respect the Retry-After header. |
| 500 | internal_error | Unhandled 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 Clientclient = 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.