---
title: "Connects different external providers with Custody"
method: POST
path: "/v1/domains/{domainId}/compliance/providers"
tags: ["Compliance"]
---

# Connects different external providers with Custody

`POST /v1/domains/{domainId}/compliance/providers`

## Request

- Base URL: `https://docs.ripple.com` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.ripple.com/v1/domains/{domainId}/compliance/providers`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ripple/apis/ripple-custody-api/docs/v1/domains/:domainId/compliance/providers/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `domainId` string, uuid, required

## Request body

- union
  - object
    - `provider` 'ELLIPTIC', required
    - `credential` object, required
      - `apiKey` string, required
      - `secret` string, required
  - object
    - `provider` 'CHAINALYSIS', required
    - `credential` object, required
      - `apiKey` string, required
  - object
    - `provider` 'NOTABENE', required
    - `credential` object, required
      - `clientId` string, required
      - `clientSecret` string, required
      - `entityDid` string, required
      - `audience` string, required

## Response `202`

Accepted

- ComplianceProviderConnectionResponse
  - `connectionId` string, uuid
  - `provider` 'ELLIPTIC' | 'CHAINALYSIS' | 'NOTABENE'
  - `status` 'CONNECTED' | 'PAUSED'
  - `readyForScreening` boolean
  - `previewScreeningEnabled` boolean

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `500`: Internal Server Error

---

[API](https://skmtc.dev/ripple/apis/ripple-custody-api.md) - [All operations](https://skmtc.dev/ripple/apis/ripple-custody-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ripple/apis/ripple-custody-api/revisions/c6f0ad6b70c0?raw)
