API Reference

Programmatically manage connections and trigger syncs via the REST API.

Authentication

All API requests require a Bearer token in the Authorization header. Generate API keys at Dashboard > Settings > API Keys.

Authorization: Bearer YOUR_API_KEY

Keys use the smrt_ prefix. Keep your keys secret — they grant full access to your account data.

Base URL

https://your-domain.com/api/v1
GET

/api/v1/status

Returns account status including client info, plan, and connection count.

Example Request

curl -H "Authorization: Bearer smrt_abc123..." \
  https://your-domain.com/api/v1/status

Example Response

{
  "client": {
    "name": "Acme Inc",
    "slug": "acme",
    "plan": "pro",
    "created_at": "2025-01-15T10:30:00.000Z"
  },
  "connections": 5,
  "last_sync_at": "2026-04-01T03:00:00.000Z"
}
GET

/api/v1/connections

Returns all connections for your account with their sync status.

Example Request

curl -H "Authorization: Bearer smrt_abc123..." \
  https://your-domain.com/api/v1/connections

Example Response

{
  "data": [
    {
      "id": "conn_abc123",
      "connector_type": "shopify",
      "label": "Shopify - Main Store",
      "status": "active",
      "last_sync_at": "2026-04-01T03:00:00.000Z",
      "last_sync_status": "succeeded",
      "created_at": "2025-06-10T14:00:00.000Z"
    }
  ]
}
POST

/api/v1/connections/:id/sync

Triggers a manual sync for a specific connection. Returns the sync job info.

Path Parameters

ParameterTypeDescription
idstringThe connection ID

Example Request

curl -X POST \
  -H "Authorization: Bearer smrt_abc123..." \
  https://your-domain.com/api/v1/connections/conn_abc123/sync

Example Response

{
  "job": {
    "jobId": 12345,
    "connectionId": "airbyte-conn-id",
    "status": "pending",
    "jobType": "sync"
  }
}
GET

/api/v1/connections/:id/jobs

Returns recent sync jobs for a specific connection.

Path Parameters

ParameterTypeDescription
idstringThe connection ID

Example Request

curl -H "Authorization: Bearer smrt_abc123..." \
  https://your-domain.com/api/v1/connections/conn_abc123/jobs

Example Response

{
  "data": [
    {
      "jobId": 12345,
      "connectionId": "airbyte-conn-id",
      "status": "succeeded",
      "jobType": "sync",
      "startTime": "2026-04-01T03:00:00.000Z",
      "bytesSynced": 1048576,
      "rowsSynced": 15420,
      "duration": "PT2M35S"
    }
  ]
}

Error Responses

All endpoints return errors in a consistent format:

{
  "error": "Unauthorized — invalid or missing API key"
}
StatusMeaning
401Invalid or missing API key
404Resource not found or does not belong to your account
400Bad request (e.g. connection missing Airbyte mapping)
500Internal server error

Rate Limiting

API requests are limited to 100 requests per minute per API key. Exceeding this limit returns a 429 status code.

Getting Started