Guides
Register a third-party provider — Slack in this walkthrough — as a project-scoped integration. Once active, the integration is usable by workflows in the same project.
Before you start
- You have a Mobius API key exported as
MOBIUS_API_KEY. See Create an API key if you do not. - Your project handle is exported as
PROJECTand your API base URL asMOBIUS_BASE_URL. - You have the credentials for the provider ready. Pass sensitive values through the
credentialsfield, notconfig; credentials are encrypted at rest and never returned by the API.
Walkthrough
-
Create the integration with
POST /v1/projects/{project}/integrations. Theproviderstring is free-form and immutable after creation; the(provider, name)pair must be unique within the project. Returns201with the new integration record — captureidasINTEGRATION_ID.The
credentialsshape is provider-defined. This example passes a Slack bot token.curl -X POST "$MOBIUS_BASE_URL/v1/projects/$PROJECT/integrations" \ -H "Authorization: Bearer $MOBIUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "slack-main", "provider": "slack", "credentials": { "token": "xoxb-your-bot-token" } }' -
Confirm the integration is ready with
GET /v1/projects/{project}/integrations/{id}. Astatus: activeresponse means the integration is enabled and usable by workflows.curl "$MOBIUS_BASE_URL/v1/projects/$PROJECT/integrations/$INTEGRATION_ID" \ -H "Authorization: Bearer $MOBIUS_API_KEY" -
List all integrations for this provider with
GET /v1/projects/{project}/integrations. Pass?provider=slackto scope results to a single provider. Returns a paginated{ items, next_cursor, has_more }response.curl "$MOBIUS_BASE_URL/v1/projects/$PROJECT/integrations?provider=slack" \ -H "Authorization: Bearer $MOBIUS_API_KEY"
Follow-ups
- Rotate credentials by sending a replacement blob with
PUT /v1/projects/{project}/integrations/{id}. Bothcredentialsandconfigare fully replaced, not merged. Theproviderfield is immutable. - Disable without deleting:
PUTthe same endpoint with{ "status": "inactive" }. Re-enable by setting"status": "active". - Hard-delete the record and its stored config with
DELETE /v1/projects/{project}/integrations/{id}. - Clone an integration into another project in the same org with
POST /v1/projects/{project}/integrations/copy. Supplysource_project_idandsource_integration_id; the full config blob is copied as-is. Supply a differentnameif the(provider, name)pair conflicts in the destination project.
Troubleshooting
400oncreateIntegration: a required field is missing, or a(provider, name)pair already exists in this project. List existing records with?provider=slackand rename or update the conflicting integration.401on any call: the API key is missing or revoked. Re-issue with Create an API key and re-exportMOBIUS_API_KEY.status: expired: the stored credential has expired. Rotate it withupdateIntegrationusing a freshcredentialsobject.
See also
- Integrations — the integration model, credential storage, and how actions discover enabled providers.
- Redoc reference: integrations — full request and response schemas.