# Custom connectors

Custom connectors turn reusable HTTPS API calls into workflow palette actions for the current workspace.

## Manifest shape

A connector manifest needs an `id`, `displayName`, and at least one HTTP action. Each action runs as an `httpRequest` node and can define `inputSchema`, `outputSchema`, credential fields, docs, and default request data.

```json
{
  "id": "acme_api",
  "displayName": "Acme API",
  "credentialProviders": ["http_bearer", "custom"],
  "actions": [
    {
      "id": "create_record",
      "label": "Create record",
      "handler": "http",
      "nodeType": "httpRequest",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": { "type": "string" }
        }
      },
      "defaultData": {
        "method": "POST",
        "url": "https://api.example.com/v1/records",
        "authType": "bearerSecret",
        "body": "{\n  \"name\": \"{input.name}\"\n}"
      }
    }
  ]
}
```

## Validation

Use **Validate** in Production > Connectors before saving. Validation checks the same security rules as save, but does not create or update the connector.

The result includes blocking errors, warnings, normalized manifest data, action count, and the palette operation ids that will be generated after save.

Common warnings include placeholder API hosts, `{input.*}` fields missing from `inputSchema.properties`, and request bodies on GET actions.

## Action preview

Use **Preview** on a saved connector action to render the HTTP request with sample input. Preview does not save changes, execute the workflow, or send an external request.

The preview shows method, URL, headers, body, missing sample inputs, unresolved templates, and whether a credential will be required at runtime. Authentication headers are described with redacted values only.

## Workflow impact

The Connectors page checks which workflows in the current workspace use the selected connector. Review this impact before disabling or deleting a connector, especially when live workflows are listed.

## Marketplace

Use **Publish** on a saved connector to create a marketplace snapshot. Other workspaces can preview the manifest, see actions and diagnostics, then install it as their own custom connector.

Installation is blocked if the target workspace already has a built-in or custom connector with the same connector/action ids. Saved credentials are not copied; installers must select their own credentials when they use the connector action in a workflow.

When you publish a workflow that uses a custom connector action, the workflow listing includes a snapshot of the connector manifest too. Installing that workflow can automatically install missing bundled connectors before the draft workflow is created.

## Use in workflow templates

When a marketplace workflow uses a custom connector action, the portable contract is the connector id plus action id. Keep `id` and action `id` stable after workflow templates depend on them. Renaming either one creates a new `connectorOperationId`; existing workflow listings keep their bundled snapshot, while edited workflows need their nodes updated to the new operation.

Workflow listings can bundle custom connector manifests for template portability. Connector listings are still useful for standalone discovery, reuse, reviews, and explicit installation. Mention the connector id/action ids in workflow descriptions or tags so users can recognize dependencies and collisions.

Credentials stay outside both listings. A workflow snapshot can carry `credentialRequired` setup markers; a connector manifest can carry credential field definitions, not credential values.

## Security rules

Connector actions must use absolute HTTPS URLs. The scheme and host cannot be templated.

Do not put credentials, raw tokens, credential ids, `Authorization`, `X-API-Key`, or other authentication headers in the manifest. Use `authType` with a saved HTTP credential instead.

---

*Source: https://agentbuilder.systalink.sn/docs/custom-connectors — human documentation.*
*Other language: [/docs-md/fr/custom-connectors.md](/docs-md/fr/custom-connectors.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
