MemorySync
API Reference

GitHub Configuration

Connect GitHub through OAuth, confirm the connection, and start synchronization. Repository visibility follows the access granted to the connected GitHub account; there is no separate repository-selection endpoint.

Operations on this page

OperationMethod and pathPythonNode.js
Read GitHub capabilitiesGET /api/v2/integrations/providers/githubproviders.getproviders.get
Start GitHub OAuthPOST /api/v2/integrations/oauth/initiateconnections.oauth.initiateconnections.oauth.initiate
Confirm the connectionGET /api/v2/integrations/connections/{connection_id}connections.getconnections.get
Start synchronizationPOST /api/v2/integrations/connections/{connection_id}/syncconnections.trigger_syncconnections.triggerSync

Authentication and scope

RequirementContract
CredentialAn API key sent as X-API-Key. Connector operations are not end-user scoped.
Read scopeintegrations:read for every GET.
Write scopeintegrations:write for every POST, PUT, PATCH and DELETE.
TenantDerived from the authenticated key. There is no tenant parameter to pass or to get wrong.
X-End-User-IDNot used. A connection belongs to the organization, not to one end user.

1. Check GitHub availability

Read the provider record before showing a connect button. It reports whether GitHub is available and the object and sync capabilities enabled by this deployment.

import os
from memorysync import MemorySyncClient
client = MemorySyncClient(
api_key=os.environ["MEMORYSYNC_API_KEY"],
base_url="https://api.memorysync.io",
)
provider = client.providers.get("github")
print(provider["is_available"], provider["capabilities"])
GET/api/v2/integrations/providers/{provider_id}
200 OK

2. Authorize GitHub

Start OAuth on your server, then redirect the browser to authorization_url. Keep connection_id so you can verify the result after consent.

import os
from memorysync import MemorySyncClient
client = MemorySyncClient(
api_key=os.environ["MEMORYSYNC_API_KEY"],
base_url="https://api.memorysync.io",
)
result = client.connections.oauth.initiate(
"github",
redirect_url="https://app.example.com/connections/callback",
)
print(result["authorization_url"], result["connection_id"])
POST/api/v2/integrations/oauth/initiate
200 OK

3. Confirm and sync

Confirm status is connected before queuing the first incremental sync.

import os
from memorysync import MemorySyncClient
client = MemorySyncClient(
api_key=os.environ["MEMORYSYNC_API_KEY"],
base_url="https://api.memorysync.io",
)
connection = client.connections.get("conn_8f21a4")
if connection["status"] == "connected":
job = client.connections.trigger_sync("conn_8f21a4", job_type="incremental")
print(job["id"], job["status"])
GET/api/v2/integrations/connections/{connection_id}
200 OK
POST/api/v2/integrations/connections/{connection_id}/sync
202 Accepted

Errors and next action

StatusMeaningNext action
401Missing, malformed or inactive API key.Check server configuration without printing the key.
403The key lacks integrations:read or integrations:write.Grant the scope on the key, or use a key that has it.
404The connection, object or job is not visible to this tenant.Confirm the identifier belongs to this organization.
409The connection is in a state that forbids the operation.Read the connection status first and act on it.
429Rate limited, either by MemorySync or by the upstream provider.Back off; do not tighten a polling loop in response.
5xxService failure.Treat a write outcome as uncertain and reconcile by reading the connection back.