Integrations
Integrations are the top-level containers that group flows, connections, exports, imports, and other resources into a logical unit. Each integration appears as a tile on the Celigo Home page.
Two flavors exist:
Standard integrations — user-created containers that group custom flows.
Integration App installations — created from a published connector/template, with install/uninstall steps, settings forms, editions, and optional child integrations. These have
_connectorIdand_templateIdset.
Integrations support Integration Lifecycle Management (ILM): clone an integration across environments, then use revisions (snapshot, pull, revert) to promote changes between them. Lifecycle operations carry every resource the integration contains.
Integration schema
Returns all integrations in the account. Supports field projection via include/exclude.
Comma-separated list of fields to project into each returned record.
Triggers summary projection: the response contains a minimal identity
set (_id, name, plus resource-specific fields) with the requested
fields added on top. Supports dot notation for nested fields.
Mutually exclusive with exclude.
_integrationId,disabled,lastModifiedComma-separated list of fields to strip from the default response.
Unlike include, does not trigger summary projection — returns the
full record with the named fields removed. Protected identity fields
(e.g. name) cannot be stripped. Mutually exclusive with include.
createdAt,lastModifiedMaximum number of integrations to return per page. When more results exist, the response includes a Link header with a rel="next" URL.
100Successfully retrieved list of integrations.
No integrations exist in the account
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/integrations HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"mode": "settings",
"sandbox": false,
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7",
"6553ebdeda62bb22e7fa81ff"
],
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [],
"apiGroupings": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2026-05-02T01:02:27.378Z"
}
]Creates a new integration. Only name is required — the server populates all other fields with defaults. Do not include Integration App fields (_connectorId, _templateId, install, installSteps, etc.) unless you are creating an IA installation.
Fields that can be sent when creating or updating an integration.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Version of the Integration App (or template) currently installed in this integration. For Integration Apps the connector's update workflow sets it; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Integration created successfully.
Integration object as returned by the API.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Version of the Integration App (or template) currently installed in this integration. For Integration Apps the connector's update workflow sets it; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZConnections registered to this integration. Managed by the platform when users register connections through the UI or the integration's registerConnection operation; client-sent values are ignored (PUT-verified).
Lookup caches registered to this integration, managed by the platform.
Topics registered to this integration, so its flows can subscribe to or publish on them.
Maintained by the platform: added through the integration's topic register operations,
POST /v1/topics with __integrationIds, or automatically when a flow in the integration
is saved with a step bound to a topic; removed by the DELETE …/register operation or when
the topic is deleted. Client-sent values are ignored (PUT-verified). Absent on integrations
that have never had a topic registered.
["6aab2870265e1cf39fcbee4d"]Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
POST /v1/integrations HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"name": "Shopify → NetSuite Orders"
}{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"sandbox": false,
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [],
"apiGroupings": [],
"_registeredConnectionIds": [],
"_registeredLookupCacheIds": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2025-06-05T23:19:47.141Z"
}Returns the full integration object.
Integration id.
6842261335b64c0bcb308e4fSuccessfully retrieved integration.
Integration object as returned by the API.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Version of the Integration App (or template) currently installed in this integration. For Integration Apps the connector's update workflow sets it; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZConnections registered to this integration. Managed by the platform when users register connections through the UI or the integration's registerConnection operation; client-sent values are ignored (PUT-verified).
Lookup caches registered to this integration, managed by the platform.
Topics registered to this integration, so its flows can subscribe to or publish on them.
Maintained by the platform: added through the integration's topic register operations,
POST /v1/topics with __integrationIds, or automatically when a flow in the integration
is saved with a step bound to a topic; removed by the DELETE …/register operation or when
the topic is deleted. Client-sent values are ignored (PUT-verified). Absent on integrations
that have never had a topic registered.
["6aab2870265e1cf39fcbee4d"]Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory.",
"mode": "settings",
"sandbox": false,
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7"
],
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [
{
"_id": "69d42d09b9c28ea0b7e7c0c0",
"name": "Order sync"
}
],
"apiGroupings": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2026-05-02T01:02:27.378Z"
}Replaces the integration's mutable fields. Send the full object -- omitted fields revert to defaults. GET the integration first, modify the fields you need, then PUT back. For partial updates to settings, flowGroupings, or apiGroupings, prefer PATCH with JSON Patch instead.
Integration id.
6842261335b64c0bcb308e4fFields that can be sent when creating or updating an integration.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Version of the Integration App (or template) currently installed in this integration. For Integration Apps the connector's update workflow sets it; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Integration updated successfully.
Integration object as returned by the API.
Human-readable name for the integration.
Use a short, descriptive label that helps users identify the integration in the UI.
Shopify → NetSuite OrdersOptional description of the integration's purpose and behavior.
Helpful for documentation, onboarding, and clarifying what the integration does.
Long-form README content for the integration (typically Markdown).
Use this to provide setup instructions, prerequisites, and operational notes.
Integration App (connector) identifier when this integration is based on an installed Integration App.
If you are not working with an Integration App installation, omit this field.
5b3c8f9a2e1d4c0011223344Template identifier used to create/initialize this integration (commonly for Integration Apps).
Omit unless you are creating/updating an integration from a template.
5c1a7b8d4f2e6a0011556677Integration App lifecycle mode.
Use this only when dealing with Integration App lifecycle workflows.
installPossible values: Version of the Integration App (or template) currently installed in this integration. For Integration Apps the connector's update workflow sets it; omit unless you are explicitly controlling versions.
1.2.0Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
instance-2When true, an Integration App update workflow is currently running. Settable via the API, but normally managed by the platform's update workflow.
When true, Celigo Agent actions scoped to this integration are allowed to run automatically without a manual approval step.
Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
Timestamp indicating when the most recent install/update workflow was resolved/completed.
Typically system-managed; omit in normal create/update payloads.
2026-01-15T09:30:00.000ZParent integration ID when this integration was created as a child of another integration. Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
6842261335b64c0bcb308e4fDisplay name used for a child integration created during installation.
Omit unless creating/updating child integrations.
West region storeSystem-assigned source identifier for the integration.
Typically system-managed; omit in normal create/update payloads.
6842261335b64c0bcb308e4fIndicates this integration is a sample/demo integration (used for templates/examples).
Typically system-managed.
Indicates whether this integration uses Sync resources.
Typically system-managed.
Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZConnections registered to this integration. Managed by the platform when users register connections through the UI or the integration's registerConnection operation; client-sent values are ignored (PUT-verified).
Lookup caches registered to this integration, managed by the platform.
Topics registered to this integration, so its flows can subscribe to or publish on them.
Maintained by the platform: added through the integration's topic register operations,
POST /v1/topics with __integrationIds, or automatically when a flow in the integration
is saved with a step bound to a topic; removed by the DELETE …/register operation or when
the topic is deleted. Client-sent values are ignored (PUT-verified). Absent on integrations
that have never had a topic registered.
["6aab2870265e1cf39fcbee4d"]Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
PUT /v1/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 181
{
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"mode": "settings",
"flowGroupings": [
{
"name": "Order sync"
}
]
}{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"description": "Syncs orders, customers, and inventory between Shopify and NetSuite.",
"mode": "settings",
"sandbox": false,
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7"
],
"install": [],
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [
{
"_id": "69d42d09b9c28ea0b7e7c0c0",
"name": "Order sync"
}
],
"apiGroupings": [],
"createdAt": "2025-06-05T23:19:47.141Z",
"lastModified": "2026-06-09T17:32:31.412Z"
}Deletes an integration. The integration is soft-deleted and retained in the recycle bin for 30 days before permanent removal.
Integration id.
6842261335b64c0bcb308e4fintegration deleted successfully
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
The resource has dependents that must be deleted first. Each entry
in the errors array names one blocking resource.
DELETE /v1/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Partially updates an integration using a JSON Patch document (RFC 6902). Only the replace operation is supported, and only on the following whitelisted paths:
/settings
Integration settings object
/flowGroupings
Flow grouping configuration
/apiGroupings
API grouping configuration
All other paths are rejected with 422. A successful patch returns no body, so the server-assigned _id of a grouping added through /flowGroupings or /apiGroupings is only available from a follow-up GET.
Integration id.
6842261335b64c0bcb308e4fA JSON Patch document (RFC 6902). Send an array of patch operations on whitelisted fields — all other paths are rejected with 422.
The operation to perform.
JSON Pointer (RFC 6901) to the field to patch. Only
whitelisted paths are accepted — unlisted paths return
422 with "<path> is not a whitelisted property".
The new value to set. Required for replace and add, omit for remove.
Integration patched successfully
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
PATCH /v1/integrations/{_id} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 68
[
{
"op": "replace",
"path": "/settings",
"value": {
"region": "us-west-2"
}
}
]No content
Creates a copy of an existing integration. Supports optionally remapping referenced connections (via connectionMap).
The unique identifier of the integration to clone
69680d7111d1437fbcbce534Request body for cloning an integration.
Name for the cloned integration. If omitted, the server generates "Clone - ".
Clone - Integration 1Description for the cloned integration.
Cloned copy of the Shopify to NetSuite orders integration.Environment to create the clone in, taken from GET /v1/environments. Omit to
clone within the current environment. The name has no leading underscore:
_envId is ignored, and the clone is created in the current environment.
67b123456789abcdef012345Integration cloned successfully
Response body for a clone operation. Some clone endpoints return the cloned resource, while others may return a list of related created resources.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
POST /v1/integrations/{_id}/clone HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 207
{
"name": "Clone - Shopify → NetSuite Orders",
"envId": "67b123456789abcdef012345",
"connectionMap": {
"626168f90b6ef816b50c82d7": "64a1234567890abcdef12345",
"6553ebdeda62bb22e7fa81ff": "64a1234567890abcdef12346"
}
}[
{
"model": "Integration",
"_id": "68f52162f00a35a1b26eaafb",
"name": "Clone - Shopify → NetSuite Orders"
}
]Returns a preview of the resources that would be created by cloning the specified integration. The response includes the integration and all transitive dependencies — flows, connections, exports, imports, scripts, async helpers, lookup caches, and tools. No resources are created by this endpoint.
The unique identifier of the integration to preview cloning
69680d7111d1437fbcbce534Clone preview retrieved successfully
Preview of the resources that would be created by a clone operation.
Each object in the objects array represents a resource that will be
cloned, including the target resource and all transitive dependencies
(connections, scripts, exports, imports, etc.).
Whether the clone requires a stack (connector-level) environment to proceed.
The stack id associated with the resource, or null if no stack is involved.
5f8d43a1b9e5a80011a35f2cThe _id is not a valid ObjectId.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/clone/preview HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"objects": [
{
"model": "Integration",
"doc": {
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders"
}
},
{
"model": "Flow",
"doc": {
"_id": "69f54d6b7009ea11abad707a",
"name": "Shopify orders → NetSuite",
"_integrationId": "6842261335b64c0bcb308e4f"
}
},
{
"model": "Export",
"doc": {
"_id": "69f54d6a3469e3f5597848a1",
"name": "Shopify new orders",
"_connectionId": "626168f90b6ef816b50c82d7"
}
},
{
"model": "Import",
"doc": {
"_id": "69f54d6c1e7f3a22cc7848b2",
"name": "NetSuite sales orders",
"_connectionId": "6553ebdeda62bb22e7fa81ff"
}
},
{
"model": "Connection",
"doc": {
"_id": "626168f90b6ef816b50c82d7",
"name": "Shopify storefront",
"type": "http"
}
},
{
"model": "Tool",
"doc": {
"_id": "69d462d5b9c28ea0b7f82522",
"name": "Get Shopify Order",
"_integrationId": "6842261335b64c0bcb308e4f"
}
}
],
"stackRequired": false,
"_stackId": null
}Returns every revision entry (snapshots, pulls, reverts) for the integration, newest first. An integration with no revision history returns an empty response (204), not [].
Integration id.
6842261335b64c0bcb308e4fRevision history, newest first.
List of revisions for an integration, newest first. Empty history returns
an empty response rather than [].
Revision id.
6a28d2af6d42eb08f8e863e7Id of the integration this revision belongs to.
6842261335b64c0bcb308e4fFor pull / revert revisions, the id of the source integration the changes originated from.
For snapshot revisions this equals _integrationId.
6842261335b64c0bcb308e4fEnvironment id of the source integration.
67b123456789abcdef012345Display name of the source integration at revision time (frozen copy).
Shopify → NetSuite OrdersRevision kind.
Lifecycle status. completed revisions are terminal; inprogress (pull/revert) revisions can
be diffed and either applied or canceled. failed revisions surfaced an error mid-process;
canceled revisions were aborted before apply.
Human-entered label describing what the revision captures.
Stable baseline before deploying v2Content hash of the integration state prior to this revision.
34b7ae8d56563e242bc0bd42fd28874442657e58Transaction hash of the revision write. Present on pull and revert revisions; absent on
plain snapshots.
a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179Content hash of the integration state after the revision was applied. Present on pull and
revert revisions.
7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40Storage key of the error file written when the apply step fails. Present only on failed
revisions; the file's records are read through GET /v1/integrations/{_id}/revisions/{_revisionId}/errors.
a574f7e1294645f68e141ac6ab4eed92For revert revisions, the id of the target revision being reverted to.
6a28d2af6d42eb08f8e863e7Content hash of the revision being reverted to — echoes beforeRevisionHash of the
_revertToRevisionId revision.
34b7ae8d56563e242bc0bd42fd28874442657e58User id of the creator.
624774a6a7574d3ed9f9a5ccWhen the revision was created.
2026-06-10T02:57:51.483ZLast update time of the revision record.
2026-06-10T02:57:51.483ZNo revisions exist for this integration.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/revisions HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6a28d2af6d42eb08f8e863e7",
"type": "snapshot",
"status": "completed",
"description": "Stable baseline before deploying v2",
"_integrationId": "6842261335b64c0bcb308e4f",
"_fromIntegrationId": "6842261335b64c0bcb308e4f",
"fromIntegrationName": "Shopify → NetSuite Orders",
"beforeRevisionHash": "34b7ae8d56563e242bc0bd42fd28874442657e58",
"sandbox": false,
"_createdByUserId": "624774a6a7574d3ed9f9a5cc",
"installSteps": [],
"createdAt": "2026-06-10T02:57:51.483Z",
"lastModified": "2026-06-10T02:57:51.483Z"
}
]Returns the full revision record. The list endpoint already surfaces every field, so this is primarily useful when you have a _revisionId in hand (e.g. from a webhook, audit log, or external reference) and want to verify state without re-listing.
Integration id.
6842261335b64c0bcb308e4fRevision id.
6a28d2af6d42eb08f8e863e7Revision record.
Integration Lifecycle Management (ILM) revision entry. Revisions capture point-in-time state of an integration and drive snapshot, pull, and revert workflows across environments.
Revision id.
6a28d2af6d42eb08f8e863e7Id of the integration this revision belongs to.
6842261335b64c0bcb308e4fFor pull / revert revisions, the id of the source integration the changes originated from.
For snapshot revisions this equals _integrationId.
6842261335b64c0bcb308e4fEnvironment id of the source integration.
67b123456789abcdef012345Display name of the source integration at revision time (frozen copy).
Shopify → NetSuite OrdersRevision kind.
Lifecycle status. completed revisions are terminal; inprogress (pull/revert) revisions can
be diffed and either applied or canceled. failed revisions surfaced an error mid-process;
canceled revisions were aborted before apply.
Human-entered label describing what the revision captures.
Stable baseline before deploying v2Content hash of the integration state prior to this revision.
34b7ae8d56563e242bc0bd42fd28874442657e58Transaction hash of the revision write. Present on pull and revert revisions; absent on
plain snapshots.
a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179Content hash of the integration state after the revision was applied. Present on pull and
revert revisions.
7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40Storage key of the error file written when the apply step fails. Present only on failed
revisions; the file's records are read through GET /v1/integrations/{_id}/revisions/{_revisionId}/errors.
a574f7e1294645f68e141ac6ab4eed92For revert revisions, the id of the target revision being reverted to.
6a28d2af6d42eb08f8e863e7Content hash of the revision being reverted to — echoes beforeRevisionHash of the
_revertToRevisionId revision.
34b7ae8d56563e242bc0bd42fd28874442657e58User id of the creator.
624774a6a7574d3ed9f9a5ccWhen the revision was created.
2026-06-10T02:57:51.483ZLast update time of the revision record.
2026-06-10T02:57:51.483ZUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/revisions/{_revisionId} HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"_id": "6a28d2af6d42eb08f8e863e7",
"type": "snapshot",
"status": "completed",
"description": "Stable baseline before deploying v2",
"_integrationId": "6842261335b64c0bcb308e4f",
"_fromIntegrationId": "6842261335b64c0bcb308e4f",
"fromIntegrationName": "Shopify → NetSuite Orders",
"beforeRevisionHash": "34b7ae8d56563e242bc0bd42fd28874442657e58",
"sandbox": false,
"_createdByUserId": "624774a6a7574d3ed9f9a5cc",
"installSteps": [],
"createdAt": "2026-06-10T02:57:51.483Z",
"lastModified": "2026-06-10T02:57:51.483Z"
}Takes a point-in-time snapshot of the integration's current state and writes it to the revision history. The returned revision has type: snapshot and status: completed immediately -- snapshots are synchronous and do not require an apply step. This is the only revision type that can be created via the public API; pull and revert revisions require the Celigo UI.
Integration id.
6842261335b64c0bcb308e4fRequest body for POST /v1/integrations/{_id}/revisions/create. Creates a snapshot revision of
the integration's current state.
Human-readable label shown in the Revisions tab. Required — the UI enforces a non-empty value and so does the API.
Stable baseline before deploying v2Snapshot revision created.
Integration Lifecycle Management (ILM) revision entry. Revisions capture point-in-time state of an integration and drive snapshot, pull, and revert workflows across environments.
Revision id.
6a28d2af6d42eb08f8e863e7Id of the integration this revision belongs to.
6842261335b64c0bcb308e4fFor pull / revert revisions, the id of the source integration the changes originated from.
For snapshot revisions this equals _integrationId.
6842261335b64c0bcb308e4fEnvironment id of the source integration.
67b123456789abcdef012345Display name of the source integration at revision time (frozen copy).
Shopify → NetSuite OrdersRevision kind.
Lifecycle status. completed revisions are terminal; inprogress (pull/revert) revisions can
be diffed and either applied or canceled. failed revisions surfaced an error mid-process;
canceled revisions were aborted before apply.
Human-entered label describing what the revision captures.
Stable baseline before deploying v2Content hash of the integration state prior to this revision.
34b7ae8d56563e242bc0bd42fd28874442657e58Transaction hash of the revision write. Present on pull and revert revisions; absent on
plain snapshots.
a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179Content hash of the integration state after the revision was applied. Present on pull and
revert revisions.
7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40Storage key of the error file written when the apply step fails. Present only on failed
revisions; the file's records are read through GET /v1/integrations/{_id}/revisions/{_revisionId}/errors.
a574f7e1294645f68e141ac6ab4eed92For revert revisions, the id of the target revision being reverted to.
6a28d2af6d42eb08f8e863e7Content hash of the revision being reverted to — echoes beforeRevisionHash of the
_revertToRevisionId revision.
34b7ae8d56563e242bc0bd42fd28874442657e58User id of the creator.
624774a6a7574d3ed9f9a5ccWhen the revision was created.
2026-06-10T02:57:51.483ZLast update time of the revision record.
2026-06-10T02:57:51.483ZBad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
POST /v1/integrations/{_id}/revisions/create HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 53
{
"description": "Stable baseline before deploying v2"
}{
"_id": "6a28d2af6d42eb08f8e863e7",
"type": "snapshot",
"status": "completed",
"description": "Stable baseline before deploying v2",
"_integrationId": "6842261335b64c0bcb308e4f",
"_fromIntegrationId": "6842261335b64c0bcb308e4f",
"fromIntegrationName": "Shopify → NetSuite Orders",
"beforeRevisionHash": "34b7ae8d56563e242bc0bd42fd28874442657e58",
"sandbox": false,
"_createdByUserId": "624774a6a7574d3ed9f9a5cc",
"installSteps": [],
"createdAt": "2026-06-10T02:57:51.483Z",
"lastModified": "2026-06-10T02:57:51.483Z"
}Returns the before/after diff for a pull or revert revision. The diff is materialized on pull and revert revisions and is retained on their completed state -- available for both inprogress and completed pull/revert revisions. Snapshot revisions are not diffable (there is no source integration to diff against), and canceled revisions drop their diff.
The response body is a {before, after} envelope where each side is a map keyed by resource type (e.g. flow, export, connection, api, tool) whose values are maps of resourceId to full resource snapshot.
Integration id.
6842261335b64c0bcb308e4fRevision id. Must be a pull or revert revision in inprogress or completed state.
6a28d2af6d42eb08f8e863e7Diff envelope for the pending revision.
Structured before/after diff for a revision. Only available while the revision is in a pending
state (e.g. a queued pull or revert). Completed snapshot revisions are read-only and return
HTTP 400 invalid_revision_state — the diff is computed during the apply window, not retained.
Shape is the platform's internal diff document — a map of resource type → per-resource before/after blocks. Treated as an opaque envelope here; specific field layout is not guaranteed stable across platform versions.
Revision is not in a diffable state. Error code invalid_revision_state. Occurs on
snapshot revisions (no source to diff against), canceled revisions (diff dropped),
failed revisions (read their cause from
GET /v1/integrations/{_id}/revisions/{_revisionId}/errors instead), and
inprogress revisions whose install steps haven't materialized yet.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/revisions/{_revisionId}/diff HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"before": {
"flow": {
"69f54d6b7009ea11abad707a": {
"name": "Shopify orders → NetSuite",
"disabled": true
}
}
},
"after": {
"flow": {
"69f54d6b7009ea11abad707a": {
"name": "Shopify orders → NetSuite",
"disabled": false
}
}
}
}Returns the error records recorded while a pull or revert revision was being applied — the same list the Revisions tab shows for a failed revision. Read this, not the diff, to learn why a revision failed: GET /v1/integrations/{_id}/revisions/{_revisionId}/diff rejects failed revisions with invalid_revision_state. Only failed revisions have error records; every other state is rejected with the same invalid_revision_state code.
Each record names the resource the apply step rejected. Ids inside a message use the revision's change-set keys: a LifeCycleError of the form <type> - <id> references a deleted resource: <type> - <id>.deleted reports that the merged document still points at an entry the same change set marks .deleted. The suffix is that marker, not the resource's state in the account — the resource may still exist there.
Integration id.
6842261335b64c0bcb308e4fRevision id. Must be a revision in failed state.
6a28d2af6d42eb08f8e863e7Error records for the failed revision.
Error records for one revision, oldest first.
Error record id; the Revisions tab uses it to open the record's detail view.
6aaceb3c8b19ac878dd7cd41Error class assigned by the apply step, such as LifeCycleError for change-set consistency failures.
LifeCycleErrorHuman-readable cause. Resource references inside it use the change set's own ids, so a
<id>.deleted suffix identifies an entry of the revision, not the state of the resource in
the account.
integration - 6a90467b117405485e64787e references a deleted resource:lookupcache - 6aa912fd3ec91536bee07e41.deleted.When the error was recorded.
2026-09-18T07:41:37.675ZRevision is not in failed state, so it has no error records. Error code
invalid_revision_state — returned for completed, canceled, and inprogress revisions
of every type, including snapshots.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/revisions/{_revisionId}/errors HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6aaceb3c8b19ac878dd7cd41",
"code": "LifeCycleError",
"message": "integration - 6a90467b117405485e64787e references a deleted resource:lookupcache - 6aa912fd3ec91536bee07e41.deleted.",
"createdAt": "2026-09-18T07:41:37.675Z"
}
]Returns a per-flow count of currently open (unresolved) errors for every flow in the integration. Flows with zero open errors still appear so callers see the full flow roster; lastErrorAt is only populated when numError > 0. Entries do not contain individual error ids -- to get actionable error records, drill into GET /v1/flows/{_flowId}/{_stepId}/errors for each flow and step.
Integration id.
6842261335b64c0bcb308e4fPer-flow open-error summary.
Per-flow open-error summary for an integration. One entry per flow in the integration; flows with zero open errors still appear so callers see the full roster. Empty integrations (no flows) return HTTP 204 with no body.
Id of the flow these counts apply to.
69497fc443fc1f9a03d31bd9Count of currently open (unresolved) errors on this flow. Only errors within the account's data-retention window are counted — older open errors are excluded.
2Timestamp of the most recent open error on this flow, scoped to
the account's data-retention window. Omitted when numError is 0.
2026-04-12T21:51:39.257ZIntegration has no flows with any reported error state.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/errors HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_flowId": "69497fc443fc1f9a03d31bd9",
"numError": 2,
"lastErrorAt": "2026-04-12T21:51:39.257Z"
},
{
"_flowId": "6949809c3f70c4486d2dae88",
"numError": 0
},
{
"_flowId": "683b8ef5774ae78d3b9b8a89",
"numError": 0
}
]Tags a batch of open errors with an assignee. Errors stay open; this does not resolve or retry them. The email must resolve to a user with access to the account.
Prefer PUT /v1/flows/{_flowId}/{_stepId}/errors/assign instead -- it works with a plain bearer token and requires no extra headers. This integration-level endpoint requires an integrator-ashareid header, and account-owner PATs have no ashare pointing at themselves, so they cannot call it directly.
Integration id.
6842261335b64c0bcb308e4fAccount-share id scoping the request to a specific shared-account context. Only accepted
when the bearer token's user is the sharedWithUser of that ashare. Not required by the
per-step fallback — prefer that endpoint instead.
6798f4dc43db9184f4bc8ee0Request body for PUT /v1/integrations/{_id}/errors/assign. Assigns a batch of open errors —
across any flow in the integration — to a user by email. Errors remain open; only the assignee
tag changes.
Ids of open errors to assign. Obtain from the per-step endpoint
GET /v1/flows/{_flowId}/{_stepId}/errors → each entry's errorId. The integration-level
GET /v1/integrations/{_id}/errors only returns per-flow aggregates (no individual error
ids), so the error ids must come from the per-step endpoint. Platform caps batch size around
~1000; chunk larger sets client-side.
Email of the account user to assign the errors to. Must match an existing user with access to the account; the API does not create users implicitly and rejects unknown emails.
user@example.comErrors assigned. Body echoes which ids were affected.
Echo of the mutation — ids of errors that were reassigned. Mirrors the shape of the per-step
PUT /v1/flows/{_id}/{_stepId}/errors/assign response.
Error ids that were affected by the mutation.
Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
integrator-ashareid is malformed (not a 24-char hex id). Error code:
invalid_header_value.
Either the integration is unknown, no integrator-ashareid was sent (code: invalid_ref,
message: "Integration not found."), or the header references a share whose sharedWithUser
isn't the bearer token's user (code: access_restricted).
PUT /v1/integrations/{_id}/errors/assign HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 67
{
"errorIds": [
"6044134138",
"6027562904"
],
"email": "user@example.com"
}{
"errorsToReturn": [
"6044134138"
]
}Returns every member of the integration's clone family -- the original plus every clone (recursively, across environments). Used by ILM to decide which integrations can be pull/push sources or targets for the current integration.
This endpoint requires the integrator-ashareid header to establish a shared-account context. For simpler clone-relationship lookups, the integration's own _sourceId field points to the parent it was cloned from, and GET /v1/integrations?_sourceId=<id> lists the children.
Integration id.
6842261335b64c0bcb308e4fAccount-share id that scopes the request to a specific shared-account context. The bearer
token's user must be the sharedWithUser of this ashare.
6798f4dc43db9184f4bc8ee0Clone family members.
Members of an integration's clone family — the original integration plus every clone (including clones of clones, across environments). Used by ILM to decide which integrations can pull from or push to the current one.
Integration id.
6842261335b64c0bcb308e4fDisplay name of the integration.
Shopify → NetSuite OrdersEnvironment id the integration belongs to.
67b123456789abcdef012345Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Either the integrator-ashareid header is malformed (code: invalid_header_value) or it
was omitted entirely (code: get_not_allowed, "GET resource not allowed for the given
model.").
Integration unknown, or the integrator-ashareid references a share whose sharedWithUser
isn't the bearer token's user (code: access_restricted).
GET /v1/integrations/{_id}/clonefamily HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
integrator-ashareid: 6798f4dc43db9184f4bc8ee0
Accept: */*
[
{
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders"
},
{
"_id": "68f52162f00a35a1b26eaafb",
"name": "Clone - Shopify → NetSuite Orders",
"_envId": "67b123456789abcdef012345"
}
]Returns a bare array of full flow objects for every flow in the integration. Each element is a complete flow resource, the same shape as GET /v1/flows/{_id}.
Integration id.
6842261335b64c0bcb308e4fMaximum number of flow objects to return.
100When true, instance flows generated from abstract (multi-instance) flows are included in the results, which otherwise list only regular and abstract flows.
Array of flow objects.
Bare array of full flow resource objects.
Integration has no flows.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/flows HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6b7009ea11abad707a",
"name": "Shopify orders → NetSuite",
"_integrationId": "6842261335b64c0bcb308e4f",
"disabled": false,
"pageGenerators": [
{
"_exportId": "69f54d6a3469e3f5597848a1"
}
],
"pageProcessors": [
{
"type": "import",
"_importId": "69f54d6c1e7f3a22cc7848b2"
}
],
"createdAt": "2026-05-02T01:03:39.871Z",
"lastModified": "2026-05-02T01:03:39.871Z"
}
]Returns a bare array of full import objects for every import in the integration. Each element is a complete import resource, the same shape as GET /v1/imports/{_id}.
Integration id.
6842261335b64c0bcb308e4fMaximum number of import objects to return. Bug: the server returns N+1 items for a
limit=N value.
100Array of import objects.
Bare array of full import resource objects.
Integration has no imports.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/imports HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6c1e7f3a22cc7848b2",
"name": "NetSuite sales orders",
"_connectionId": "6553ebdeda62bb22e7fa81ff",
"adaptorType": "NetSuiteDistributedImport",
"distributed": true,
"netsuite_da": {
"recordType": "salesorder",
"operation": "add"
},
"createdAt": "2026-05-02T01:03:40.027Z",
"lastModified": "2026-05-02T01:03:40.027Z"
}
]Returns a bare array of full export objects for every export in the integration. Each element is a complete export resource, the same shape as GET /v1/exports/{_id}.
Integration id.
6842261335b64c0bcb308e4fMaximum number of export objects to return. Bug: the server returns N+1 items for a
limit=N value.
100Array of export objects.
Bare array of full export resource objects.
Integration has no exports.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/exports HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "69f54d6a3469e3f5597848a1",
"name": "Shopify new orders",
"_connectionId": "626168f90b6ef816b50c82d7",
"adaptorType": "HTTPExport",
"http": {
"relativeURI": "/admin/api/2024-04/orders.json",
"method": "GET"
},
"createdAt": "2026-05-02T01:03:38.214Z",
"lastModified": "2026-05-02T01:03:38.214Z"
}
]Returns a bare array of full connection objects for every connection registered to the integration. Each element is a complete connection resource, the same shape as GET /v1/connections/{_id}. Unlike the flows/imports/exports sub-resource endpoints, this endpoint rejects unknown integration ids with a 404.
Integration id.
6842261335b64c0bcb308e4fMaximum number of connection objects to return.
100Array of connection objects.
Bare array of full connection resource objects.
Integration has no connections.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/connections HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "626168f90b6ef816b50c82d7",
"name": "Shopify storefront",
"type": "http",
"sandbox": false,
"http": {
"formType": "rest",
"mediaType": "json",
"baseURI": "https://celigo-demo.myshopify.com",
"auth": {
"type": "basic"
}
},
"createdAt": "2022-04-21T14:23:53.118Z",
"lastModified": "2026-05-02T01:02:27.378Z"
}
]Returns a bare array of async-helper objects for every async helper registered to the integration. Each element is a complete async-helper resource, the same shape as GET /v1/asynchelpers/{_id}.
Integration id.
6842261335b64c0bcb308e4fArray of async-helper objects.
Bare array of full async-helper resource objects.
Integration has no async helpers.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/asynchelpers HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "64a1b2c3d4e5f60011223344",
"name": "Salesforce Bulk Query Helper",
"http": {
"submit": {
"sameAsStatus": true
},
"status": {
"_exportId": "63b1c2d3e4f5a60011334455",
"statusPath": "status",
"initialWaitTime": 1,
"pollWaitTime": 4
}
},
"lastModified": "2026-04-15T14:30:15Z"
}
]Returns an array of account-share (ashare) objects for the integration. Each entry describes a user who has been granted access to the integration's owning account, along with their access level and authentication metadata. Unlike other integration sub-resource list endpoints, this always returns an array (an integration with no shares returns []).
Integration id.
6842261335b64c0bcb308e4fArray of account-share objects.
Account shares scoped to the integration.
Ashare id.
6798f4dc43db9184f4bc8ee0When true, the shared user has accepted the invitation.
Access level granted to the user (e.g. administrator, manage, monitor).
administratorWhen true, the account requires SSO for this user.
When true, the account requires MFA for this user.
2025-01-28T15:16:44.327Z2026-05-02T17:02:59.371Z2026-05-02T17:02:59.370ZUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/ashares HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6798f4dc43db9184f4bc8ee0",
"accepted": true,
"accessLevel": "administrator",
"accountSSORequired": false,
"accountMFARequired": false,
"isProductionAdmin": true,
"createdAt": "2025-01-28T15:16:44.327Z",
"lastModified": "2026-05-02T17:02:59.371Z",
"lastSignIn": "2026-05-02T17:02:59.370Z",
"sharedWithUser": {
"_id": "624774a6a7574d3ed9f9a5cc",
"email": "admin@example.com",
"name": "Account Admin",
"allowedToResetMFA": false
}
},
{
"_id": "690954729ef09ab572f65e5d",
"accepted": true,
"accessLevel": "monitor",
"accountSSORequired": false,
"accountMFARequired": false,
"createdAt": "2025-11-04T01:18:42.025Z",
"lastModified": "2026-04-09T18:48:15.653Z",
"sharedWithUser": {
"_id": "69095422a6fa76e8c7c170eb",
"email": "contributor@example.com",
"name": "Integration User",
"allowedToResetMFA": false
}
}
]Register a connection to an integration (by path)
Registers a single connection to the integration by specifying the connection id in the URL path. No request body is needed. To unregister, use DELETE on the same path. Alternatively, use PUT /v1/integrations/{_id}/connections/register to register by request body.
Integration id.
6842261335b64c0bcb308e4fConnection id to register.
626168f90b6ef816b50c82d7Connection registered successfully. No body returned.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/connections/{_connectionId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Unregister a connection from an integration
Removes a connection's registration from the integration. This does not delete the connection itself -- it only removes it from the integration's registered-connections list.
Fails while any resource in the integration still uses the connection. Two references are known to count: any step in one of its flows, Tools, or APIs whose _connectionId is this connection -- every step is an export or import document, whatever its kind (lookup, listener, AI agent, guardrail, Tool wrapper, transfer) -- and an alias on the integration or one of its flows whose _connectionId points at it. Move the steps to another connection first (a whole flow at once with PUT /v1/flows/{_id}/replaceConnection; Tool and API steps through their own step-level replaceConnection), remove or retarget any alias that still points at it, then unregister.
Integration id.
6842261335b64c0bcb308e4fConnection id to unregister.
626168f90b6ef816b50c82d7Connection unregistered successfully. No body returned.
No content
A resource in the integration still uses the connection -- a flow, Tool, or API
step bound to it ("The connection is being actively used by the integration..."),
or an alias on the integration or one of its flows that points at it ("This
connection is being referenced by an alias. Delete the alias before deregistering
the connection."). Error code: not_allowed for both.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/integrations/{_id}/connections/{_connectionId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Registers a single connection to the integration by passing the connection id in the request body. Alternatively, use PUT /v1/integrations/{_id}/connections/{_connectionId}/register to register by path parameter.
Integration id.
6842261335b64c0bcb308e4fThe id of the connection to register.
626168f90b6ef816b50c82d7Connection registered successfully. No body returned.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/connections/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 44
{
"_connectionId": "69680d7111d1437fbcbce534"
}No content
Returns a bare array of full lookup cache objects for every cache in the integration's _registeredLookupCacheIds, sorted by name. Each element is the same shape as GET /v1/lookupcaches/{_id}. Rejects unknown integration ids with a 404.
Integration id.
6842261335b64c0bcb308e4fMaximum number of lookup caches to return per page.
100Opaque cursor for forward pagination. Pass the value from the Link
response header (rel="next") to fetch the next page.
Array of lookup cache objects.
No lookup caches are registered to the integration.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/lookupcaches HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "68680d7111d1437fbcbce534",
"_userId": "624cb0346309dc3a543733a2",
"name": "US State Name to State Code",
"includeDataInTemplatesAndCloning": false,
"size": 1887,
"sizeInMB": "<5 MB",
"createdAt": "2026-03-24T19:51:01.266Z",
"lastModified": "2026-04-18T05:40:33.812Z"
}
]Creates a lookup cache exactly as POST /v1/lookupcaches does and, in the same call, adds it to the integration's _registeredLookupCacheIds and an aliases[] entry whose alias is a slug of the cache name — the same side effect as the register operations. Populate the cache afterwards with POST /v1/lookupcaches/{_id}/data.
Integration id.
6842261335b64c0bcb308e4fWritable fields shared by the request and response schemas.
Display name.
Customer ID CachePurpose or contents of the cache.
Maps external customer IDs to internal Salesforce IDs for deduplicationWhether to include the cached key-value data when this cache is
used in templates or cloned. When false (default), only
metadata transfers. Set to true for static reference tables.
falseCaller-supplied identifier for cross-system correlation.
ext-cache-12345Created lookup cache, already registered to the integration.
Lookup cache object as returned by the API.
Display name.
Customer ID CachePurpose or contents of the cache.
Maps external customer IDs to internal Salesforce IDs for deduplicationWhether to include the cached key-value data when this cache is
used in templates or cloned. When false (default), only
metadata transfers. Set to true for static reference tables.
falseCaller-supplied identifier for cross-system correlation.
ext-cache-12345Unique identifier for the resource. Format is a 24-character hexadecimal string.
5f8d43a1b9e5a80011a35f2cTimestamp when the resource was created. Set automatically and cannot be modified.
2023-04-01T09:15:32ZTimestamp when the resource was last updated. Changes whenever any property is modified.
2023-04-15T14:30:15ZTimestamp when the resource was soft-deleted. When null or absent, the resource is active.
2023-05-20T11:45:32ZUser who owns this lookup cache.
624cb0346309dc3a543733a2Template this lookup cache was installed from, when it originated from a template.
6a27a36f9cea1a85192e72cdOrigin resource ID when this cache was created by cloning or installing a template.
5f8d43a1b9e5a80011a35f2cCurrent size of the cached data in bytes. Maximum 50 MB per cache; 1 GB aggregate per environment.
Human-readable size rounded up to the nearest 5 MB increment.
"0 MB" for empty caches, "<5 MB" through "<50 MB" for
non-empty caches, "50 MB" at the per-cache cap.
0 MBWhen true, this cache was created as a draft by the AI-assisted builder and has not yet been confirmed.
trueWhen the draft cache expires and will be automatically deleted. Only present when draft is true.
2026-05-08T17:29:30.726ZUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
POST /v1/integrations/{_id}/lookupcaches HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 28
{
"name": "Customer ID Cache"
}{
"_id": "6ab1f6f37c4b4e699fe8c72c",
"_userId": "624cb0346309dc3a543733a2",
"name": "Customer ID Cache",
"includeDataInTemplatesAndCloning": false,
"size": 0,
"sizeInMB": "0 MB",
"createdAt": "2026-09-22T03:33:07.337Z",
"lastModified": "2026-09-22T03:33:07.367Z"
}Register a lookup cache to an integration (by path)
Registers a single lookup cache to the integration by specifying the lookup cache id in the URL path. No request body is needed. To unregister, use DELETE on the same path. Alternatively, use PUT /v1/integrations/{_id}/lookupcaches/register to register several caches at once by request body.
Registration also adds an entry to the integration's aliases[] when the cache does not already have one: alias is a slug of the cache name (lowercased, whitespace and special characters stripped, _2/_3/… appended on collision) and _lookupCacheId points at the cache. Scripts and hooks use the alias as a stable handle for the cache, and deregistering the cache is blocked until the alias is removed.
Integration id.
6842261335b64c0bcb308e4fLookup cache id to register.
68680d7111d1437fbcbce534Lookup cache registered successfully. No body returned.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Unregister a lookup cache from an integration
Removes a lookup cache's registration from the integration. This does not delete the lookup cache itself — it only removes it from the integration's _registeredLookupCacheIds list. Fails when the cache is not registered on the integration, when a flow step in the integration still references it, or when an alias on the integration (or one of its flows) still points at it — including the alias that registration itself created. Remove the flow-step references and the alias (update the aliases array on the integration or flow) first, then retry.
Integration id.
6842261335b64c0bcb308e4fLookup cache id to unregister.
68680d7111d1437fbcbce534Lookup cache unregistered successfully. No body returned.
No content
The cache is not registered on this integration ("The lookup cache
which you are trying to deregister is not registered on the
integration."), is still referenced by a flow step in the
integration ("The lookup cache is being actively used by a flow
step in this integration..."), or is still referenced by an alias
("The lookup cache is referenced by an alias in this integration.
Remove the alias before deregistering."). Error code: not_allowed
for all three.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Registers one or more lookup caches to the integration, adding them to its _registeredLookupCacheIds list. The request body is a bare JSON array of lookup cache ids; duplicates are collapsed. Alternatively, use PUT /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register to register a single cache by path parameter.
Registration also adds an entry to the integration's aliases[] for each newly registered cache that does not already have one: alias is a slug of the cache name (lowercased, whitespace and special characters stripped, _2/_3/… appended on collision) and _lookupCacheId points at the cache. Scripts and hooks use the alias as a stable handle for the cache, and deregistering the cache is blocked until the alias is removed.
Integration id.
6842261335b64c0bcb308e4fLookup cache ids to register.
Lookup caches registered successfully. No body returned.
No content
An entry in the array is not a valid ObjectId.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/lookupcaches/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
[
"68680d7111d1437fbcbce534",
"68680d7111d1437fbcbce535"
]No content
Returns a bare array of full topic objects for every topic in the integration's _registeredTopicIds, sorted by name. Each element is the same shape as GET /v1/topics/{_id}. Rejects unknown integration ids with a 404. The externalId filter of GET /v1/topics is not applied here.
Integration id.
6842261335b64c0bcb308e4fMaximum number of topics to return per page.
100Opaque cursor for forward pagination. Pass the value from the Link
response header (rel="next") to fetch the next page.
Array of topic objects.
No topics are registered to the integration.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/topics HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"_id": "6aab2870265e1cf39fcbee4d",
"_userId": "624cb0346309dc3a543733a2",
"name": "orders.created",
"description": "One event per order placed. Consumed by the fulfillment and finance flows.",
"retentionMs": 604800000,
"createdAt": "2026-09-16T23:38:24.578Z",
"lastModified": "2026-09-16T23:38:24.578Z"
}
]Creates a topic exactly as POST /v1/topics does and, in the same call, adds it to the integration's _registeredTopicIds. Use this when the topic is being built for one integration's flows; to share a topic across several integrations, create it with POST /v1/topics and register it on each with the register operations.
Integration id.
6842261335b64c0bcb308e4fWritable fields for creating or updating a topic.
Display name shown in the UI and recorded as deletedInfo.name on audit entries. Names need
not be unique — exports and imports bind to the topic id, so renaming never breaks a
subscription. Script tags and other unsafe HTML are stripped on save.
orders.createdWhat the topic carries and which flows consume it. Shown in the UI only; it plays no part in routing. Send null to clear a previous value.
One event per order placed. Consumed by the fulfillment and finance flows.How long a published message stays readable, in milliseconds, before it is dropped from the
stream whether or not a listener consumed it. The default keeps a week of messages, enough for
a listener that is paused over a weekend to catch up; the ceiling is further capped by the
account license's topics.retentionCeilingDays. Changing it on an existing topic
re-configures the stream, so messages older than the new window are no longer retained.
604800000Example: 604800000Caller-chosen key for finding the topic again without storing its id — filter the list with
GET /v1/topics?externalId=…. Integration Apps use it to locate a topic across installs.
erp-orders-createdIntegrations to register the new topic on immediately after creation, so flows in those
integrations can subscribe to it. Honored only on POST /v1/topics (ignored on PUT), never
persisted, and not echoed back. Ids are validated before the topic is saved; registration
runs after the save, and per-integration failures are reported in
__failedIntegrationRegistrations on the 201 response without rolling back the new topic.
["6ab1f4a138d7733b45998d99"]Created topic, already registered to the integration.
Topic as returned by the API.
Unique identifier for the topic. Topic exports and imports bind to it through
topic._topicId, and it is the _topicId used by every /v1/topics/{_id}/… endpoint.
6ab1f44d7c4b4e699fe84b0aAccount owner whose license and topic quota the topic counts against.
624cb0346309dc3a543733a2Display name shown in the UI. Empty when the topic was created without one; not unique, so
use _id to identify a topic.
orders.createdWhat the topic carries and which flows consume it. Absent or null when never set.
One event per order placed. Consumed by the fulfillment and finance flows.How long a published message stays readable, in milliseconds, before it is dropped from the stream whether or not a listener consumed it. The week-long default applies when the topic was created without one.
604800000Example: 604800000Caller-chosen key set at creation or update. Present only when it was supplied; filter the
list with GET /v1/topics?externalId=….
erp-orders-createdIntegration App installation that owns the topic. Present only on topics created by an
Integration App; absent on topics you create directly, which are shared across integrations
through _registeredTopicIds instead.
6ab1f4a138d7733b45998d99Integration App (connector) that installed the topic. Present only on connector-managed topics, which the connector — not the user — registers and deregisters.
5b3c8f9a2e1d4c0011223344Template the topic was installed from. Present only when it originated from a template.
6a27a36f9cea1a85192e72cdTopic this one was cloned or installed from. Present only on copies.
6aab2870265e1cf39fcbee4dWhen true, the topic was created as a draft by the AI-assisted builder and has not been confirmed yet. Absent on ordinary topics.
trueTimestamp when an unconfirmed draft is deleted automatically. Present only when draft is true.
2026-09-24T03:30:27.432ZTimestamp when the topic was created.
2026-09-16T23:38:24.578ZTimestamp when the topic was last updated by PUT or PATCH.
2026-09-22T02:51:12.733ZTimestamp when the topic was moved to the recycle bin. Present only on the copy returned by
GET /v1/recycleBinTTL/topics/{_id}; deleted topics are hidden from every other endpoint.
2026-09-22T03:29:50.803ZUnauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
The topic body failed validation — the same codes as POST /v1/topics.
POST /v1/integrations/{_id}/topics HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 140
{
"name": "orders.created",
"description": "One event per order placed. Consumed by the fulfillment and finance flows.",
"retentionMs": 604800000
}{
"_id": "6aab2870265e1cf39fcbee4d",
"_userId": "624cb0346309dc3a543733a2",
"name": "orders.created",
"description": "One event per order placed. Consumed by the fulfillment and finance flows.",
"retentionMs": 604800000,
"createdAt": "2026-09-16T23:38:24.578Z",
"lastModified": "2026-09-16T23:38:24.578Z"
}Adds a single topic to the integration's _registeredTopicIds so flows in the integration can subscribe to or publish on it. No request body is needed; registering an already-registered topic succeeds without duplicating it. To unregister, use DELETE on the same path; to register several topics at once, use PUT /v1/integrations/{_id}/topics/register.
Registration also happens automatically when a flow in the integration is saved with a step bound to the topic. Unlike lookup caches, registering a topic adds no aliases[] entry.
Integration id.
6842261335b64c0bcb308e4fTopic id to register.
6aab2870265e1cf39fcbee4dTopic registered successfully. No body returned.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The integration does not exist, or the topic does not exist in this account.
PUT /v1/integrations/{_id}/topics/{_topicId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Removes a topic's registration from the integration. This does not delete the topic — it only removes it from the integration's _registeredTopicIds. Fails when the topic is not registered on the integration, or while any flow step in the integration (an export or import with topic._topicId set) still uses it. Repoint or delete those steps first, then retry.
Integration id.
6842261335b64c0bcb308e4fTopic id to unregister.
6aab2870265e1cf39fcbee4dTopic unregistered successfully. No body returned.
No content
The topic is not registered on this integration ("The topic which you are trying to
deregister is not registered on the integration."), or a flow step in the integration still
uses it ("The topic is being actively used by a step in this integration…"). Error code:
not_allowed for both.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
DELETE /v1/integrations/{_id}/topics/{_topicId}/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Adds one or more topics to the integration's _registeredTopicIds. The request body is a bare JSON array of topic ids; duplicates and already-registered ids are collapsed, and an empty array is accepted as a no-op. Every id must name a topic in this account or nothing is registered. Alternatively, use PUT /v1/integrations/{_id}/topics/{_topicId}/register to register a single topic by path parameter.
Integration id.
6842261335b64c0bcb308e4fTopic ids to register.
Topics registered successfully. No body returned.
No content
The body is not a JSON array ("Maximum batch size is …", code batch_size_exceeded), or an
entry is not a valid ObjectId ("Please provide a valid _topicId.", code invalid_ref).
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
The integration does not exist, or one of the topics does not exist in this account.
PUT /v1/integrations/{_id}/topics/register HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
[
"6aab2870265e1cf39fcbee4d",
"6aab2870bb44c84f7b77e9f7"
]No content
Returns structural metadata for the integration and its child integrations. The response includes install steps, flow groupings, API groupings, registered connection ids, uninstall steps, and change-edition steps, plus a childIntegrations array with the same structure for each child. Primarily useful for Integration App integrations that have install/uninstall steps and child integrations.
Integration id.
6842261335b64c0bcb308e4fIntegration tree metadata.
Metadata for the integration itself, including install steps, flow groupings, API groupings, registered connection ids, uninstall steps, and change-edition steps.
Metadata for child integrations (empty array if none).
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/tree/metadata HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"integration": {
"_id": "6842261335b64c0bcb308e4f",
"name": "Shopify → NetSuite Orders",
"installSteps": [],
"uninstallSteps": [],
"changeEditionSteps": [],
"flowGroupings": [
{
"_id": "69d42d09b9c28ea0b7e7c0c0",
"name": "Order sync"
}
],
"apiGroupings": [],
"_registeredConnectionIds": [
"626168f90b6ef816b50c82d7"
]
},
"childIntegrations": []
}Resumes a paused Integration App integration. Requires that the integration belongs to an Integration App. No request body is needed.
Integration id.
6842261335b64c0bcb308e4fIntegration resumed successfully.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Integration does not belong to an Integration App. Error code: invalid_ref, message:
"doesnot belongs to any Integration App."
PUT /v1/integrations/{_id}/resume HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Triggers an edition change for an Integration App integration that has a changeEdition function configured. Requires the integration to belong to an Integration App with edition support.
Integration id.
6842261335b64c0bcb308e4fEdition change initiated successfully.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Integration does not belong to an Integration App with changeEdition support. Error code:
invalid_integration_app.
POST /v1/integrations/{_id}/changeEdition HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Initializes a child integration under an Integration App parent. Requires the parent integration to belong to an Integration App with an init script configured.
Integration id (the parent Integration App integration).
6842261335b64c0bcb308e4fChild integration initialized successfully.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
Integration App does not have a valid init script. Error code: invalid_ref, message:
"Script fields invalid or not found."
POST /v1/integrations/{_id}/initChild HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Detaches the license from an integration. Idempotent -- calling it on an integration that already has no license attached is a no-op. No request body is needed.
Integration id.
6842261335b64c0bcb308e4fLicense detached (or was already detached). No body returned.
No content
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
PUT /v1/integrations/{_id}/detachLicense HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Returns the catalog of available fields that can be ignored when pulling changes between related integrations. Keys are lowercase resource types (integration, flow, export, import, connection, script, ...); values are arrays of dot-path field names that can be excluded from an ILM pull/revert. The key set is platform-driven — treat the response, not the example list, as the authoritative catalog.
This endpoint requires the integrator-ashareid header to establish a shared-account context. The current ignore configuration lives on the integration's iLMIgnore field (readable via GET /v1/integrations/{_id}); this endpoint only returns the menu of what can be ignored. To change the configuration, PATCH the integration with [{op:"replace", path:"/iLMIgnore", value:{...}}].
Integration id.
6842261335b64c0bcb308e4fAccount-share id that scopes the request to a specific shared-account context. The bearer
token's user must be the sharedWithUser of this ashare.
6798f4dc43db9184f4bc8ee0Available ignore fields per resource type.
Catalog of resource-type → field-path lists that are available to be ignored during ILM pulls
and reverts. This is the full menu of what can be configured — to see the current ignore
configuration, read the iLMIgnore field on the integration itself via
GET /v1/integrations/{_id}.
Keys are lowercase resource type names (e.g. integration, flow, export, import,
connection, script). Each value is an array of dot-path strings naming fields that can be
excluded. Only resource types that have configurable ignores appear as keys.
Field paths (dotted) that can be ignored for this resource type.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Either the integrator-ashareid header is malformed (code: invalid_header_value) or it
was omitted entirely (code: get_not_allowed).
Integration unknown, or the integrator-ashareid references a share whose sharedWithUser
isn't the bearer token's user (code: access_restricted).
GET /v1/integrations/{_id}/iLMIgnore HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
integrator-ashareid: 6798f4dc43db9184f4bc8ee0
Accept: */*
{
"integration": [
"name",
"description"
],
"flow": [
"disabled",
"name"
],
"export": [
"name",
"http.body"
]
}Packages the integration as an installable template and returns a signed S3 URL where the template .zip can be downloaded. The URL is pre-signed and short-lived (it expires shortly after issuance), so fetch the file promptly after calling this endpoint.
The downloaded .zip is the same artifact used to install the integration as a template into another account.
Integration id.
6842261335b64c0bcb308e4fSigned download URL for the integration template zip.
Pre-signed, short-lived S3 URL to download the template .zip.
S3 object key for the generated template .zip.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
Not found. The requested resource does not exist or is not visible to the caller.
GET /v1/integrations/{_id}/template HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"signedURL": "https://integrator-templates.s3.us-east-1.amazonaws.com/6842261335b64c0bcb308e4f.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=b117bf598b5535ed024cdbdfec756172f386fd39ad4e4536e40e5efbbf4ff52a",
"key": "6842261335b64c0bcb308e4f.zip"
}Returns the set of resources that depend on the specified resource. The response is an object whose keys are dependent-resource types (e.g. flows, imports) and whose values are arrays of dependency entries. An empty object {} means no other resources depend on the target (also returned for a well-formatted but nonexistent id).
Resource ID.
6842261335b64c0bcb308e4fDependency map. Keys are resource-type strings; values are arrays
of dependency entries. Returns {} when no dependents exist.
Map of dependent-resource types to arrays of dependency entries.
Keys are plural resource type strings (e.g. flows, imports,
connections). An empty object {} means no dependents.
Unauthorized. The request lacks a valid bearer token, or the provided token failed to authenticate.
Note: the 401 response is produced by the auth middleware before the
request reaches the endpoint handler, so it does not follow the
standard {errors: [...]} envelope. Instead the body is a bare
{message: string} object with no code, no errors array. Callers
handling 401s should key off the HTTP status and the message string,
not try to destructure an errors[].
GET /v1/integrations/{_id}/dependencies HTTP/1.1
Host: api.integrator.io
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{}Last updated
Was this helpful?