FileRelay
Documentation
Try for Free

Connections API

API endpoints for managing connections (pipelines) that wire sources to destinations in FileRelay.

Connections (pipelines) wire sources (repositories) to destinations (connectors). When a document arrives at a source, it's forwarded to all destinations linked via active connections.

List Connections

GET /api/{userSlug}/{workspaceSlug}/connections

Query Parameters:

Parameter Type Description
is_active boolean Filter by active/inactive status

Response: 200 OK

{
  "data": [
    {
      "id": "01kn...",
      "name": "Invoice Pipeline",
      "is_active": true,
      "repositories": [
        { "id": "01kn...", "repo_id": "Z1", "description": "FI Invoices" }
      ],
      "destinations": [
        { "id": "01kn...", "type": "s3", "name": "S3 Archive" },
        { "id": "01kn...", "type": "email", "name": "AP Notifications" }
      ],
      "settings": {},
      "created_at": "2026-04-01T10:00:00Z",
      "updated_at": "2026-04-01T10:00:00Z"
    }
  ]
}

Get Connection

GET /api/{userSlug}/{workspaceSlug}/connections/:id

Response: 200 OK

Returns a single connection object with its linked repositories and destinations.

Create Connection

POST /api/{userSlug}/{workspaceSlug}/connections

Request Body:

{
  "name": "Invoice Pipeline",
  "is_active": true,
  "repository_ids": ["01kn..."],
  "destination_ids": ["01kn...", "01kn..."]
}
Field Type Required Description
name string Yes Display name for the connection
is_active boolean No Whether the pipeline is active (default: true)
repository_ids array Yes Array of repository IDs to wire as sources
destination_ids array Yes Array of destination IDs to wire as targets
settings object No Additional pipeline settings

Response: 201 Created

{
  "data": {
    "id": "01kn...",
    "name": "Invoice Pipeline",
    "is_active": true,
    "repositories": [...],
    "destinations": [...]
  }
}

Update Connection

PATCH /api/{userSlug}/{workspaceSlug}/connections/:id

Request Body:

{
  "name": "Updated Pipeline Name",
  "is_active": false,
  "repository_ids": ["01kn..."],
  "destination_ids": ["01kn...", "01kn...", "01kn..."]
}

All fields are optional. Only include the fields you want to change. Passing repository_ids or destination_ids replaces the entire set (not a merge).

Response: 200 OK

Delete Connection

DELETE /api/{userSlug}/{workspaceSlug}/connections/:id

Response: 200 OK

{
  "message": "Connection deleted"
}

Toggle Connection Active Status

A shorthand for enabling or disabling a pipeline without changing its configuration:

PATCH /api/{userSlug}/{workspaceSlug}/connections/:id
{
  "is_active": false
}

When a connection is inactive, documents arriving at its linked repositories are still received and stored, but they are not forwarded to the connection's destinations.

Fan-Out Example

To create a fan-out pipeline where repository Z1 forwards to S3, email, and Slack simultaneously:

{
  "name": "FI Fan-Out",
  "repository_ids": ["repo-id-z1"],
  "destination_ids": [
    "dest-id-s3-archive",
    "dest-id-email-ap",
    "dest-id-slack-alerts"
  ]
}

Each destination receives the document independently. If one destination fails, the others still succeed. Delivery status is tracked per-destination in the document's delivery_status field.

Error Responses

Status Description
400 Invalid request body or missing required fields
404 Connection not found or belongs to another workspace
422 Validation failed (e.g. invalid repository or destination IDs)