Copper.co Clearloop API
The clearloop API from Copper.co — 9 operation(s) for clearloop.
The clearloop API from Copper.co — 9 operation(s) for clearloop.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/copper-co-clearloop-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
description: 'Copper API is based on the REST API interface provided for data exchange between a client and a server with the use of HTTPS requests and responses.
By default, the request should include a Content-Type header set as application/json. Some requests require different header fields, as well as other Content-Type values. In this case, a proper header will be stated in an example.
When interacting with the API, please note that all numerical values, such as order amounts or timestamps, should be transmitted as strings. This ensures consistent data representation and prevents potential issues with floating-point precision'
title: Copper Platform Clearloop API
version: latest
servers:
- description: platform.copper.co
url: https://api.copper.co/platform
- description: demo.copper.co
url: https://api.stage.copper.co/platform
- description: testnet.copper.co
url: https://api.testnet.copper.co/platform
tags:
- name: clearloop
paths:
/clearloop/actions:
get:
parameters:
- description: Unix timestamp (in milliseconds) to retrieve records from this point in time
in: query
name: fromTimestamp
required: false
schema:
type: string
- description: Unix timestamp (in milliseconds) to retrieve records up to this point in time
in: query
name: toTimestamp
required: false
schema:
type: string
- description: Unique identifier of the exchange account for which records are retrieved
in: query
name: clientAccountId
required: false
schema:
type: string
- description: List of Copper portfolio IDs to filter records
in: query
name: portfolioIds
required: false
schema:
items:
type: string
type: array
- description: 'Type of action: `add-funds` (delegate to the exchange) or `remove-funds` (undelegate from the exchange)'
in: query
name: actionType
required: false
schema:
type: string
- description: Maximum number of records to return (pagination limit)
in: query
name: limit
required: false
schema:
type: string
- description: Number of records to skip before starting to return results (pagination offset)
in: query
name: offset
required: false
schema:
type: string
- description: 'Sort order for results: `asc` for ascending or `desc` for descending'
in: query
name: sortDirection
required: false
schema:
default: asc
type: string
- description: If true, only return records for actions that have been successfully executed (i.e., funds have been successfully added or removed).If false, include all records regardless of execution status
in: query
name: filterExecuted
required: false
schema:
default: 'false'
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetActionsResponse'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Actions
tags:
- clearloop
/clearloop/actions/{actionId}:
get:
parameters:
- in: path
name: actionId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopAction'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Action by ID
tags:
- clearloop
/clearloop/balances:
get:
parameters:
- description: Unique Copper account identifier for which records can be retrieved
in: query
name: portfolioId
required: false
schema:
type: string
- description: If `true`, only balances with non-zero values will be returned
in: query
name: nonEmpty
required: false
schema:
default: 'true'
type: boolean
- description: If `true`, includes `totalAvailableBalanceToUndelegate` across both the main account and subaccounts
in: query
name: fetchSubaccounts
required: false
schema:
default: 'false'
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopBalances'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Balances
tags:
- clearloop
/clearloop/exchanges:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopExchangesResponse'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Exchanges
tags:
- clearloop
/clearloop/exchanges/{exchangeId}:
get:
parameters:
- in: path
name: exchangeId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopExchangeInformation'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Exchange by ID
tags:
- clearloop
/clearloop/portfolios:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopPortfoliosResponse'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Portfolios
tags:
- clearloop
/clearloop/portfolios/{portfolioId}:
get:
parameters:
- in: path
name: portfolioId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopPortfolioResponse'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Portfolio by Id
tags:
- clearloop
/clearloop/settlements:
get:
parameters:
- description: Unique Copper account identifier for which records can be retrieved
in: query
name: portfolioId
required: false
schema:
type: string
- description: Exchange account unique identifier for which records can be retrieved
in: query
name: clientAccountId
required: false
schema:
type: string
- description: Unique exchange settlement identifier per instruction, defined by client account and settlement currency. Guaranteed to be unique within each exchange.
in: query
name: exchangeSettlementId
required: false
schema:
type: string
- description: Unix timestamp in milliseconds to filter settlements created after this time
in: query
name: createdAfter
required: false
schema:
type: string
- description: Unix timestamp in milliseconds to filter settlements created before this time
in: query
name: createdBefore
required: false
schema:
type: string
- description: Unix timestamp (in milliseconds) of the date and time when the settlement cycle has started
in: query
name: cycleStartTimestamp
required: false
schema:
type: string
- description: The number of most recent cycles that you want to retrieve for every exchange. For example, specifying 1 will return the last settlement for every queried exchange
in: query
name: cycles
required: false
schema:
type: string
- description: Comma separated list with statuses to be included. [See details](/enums/ClearLoopSettlementStatus)
in: query
name: clearLoopSettlementStatuses
required: false
schema:
items:
$ref: '#/components/schemas/ClearLoopSettlementStatus'
type: array
- description: Comma separated list with statuses not to be included. [See details](/enums/ClearLoopSettlementStatus)
in: query
name: clearLoopSettlementStatusesNotIn
required: false
schema:
items:
$ref: '#/components/schemas/ClearLoopSettlementStatus'
type: array
- description: Maximum number of records to return (pagination limit)
in: query
name: limit
required: false
schema:
default: '1000'
type: string
- description: 'The sorting order of settlement records, which are sorted by their `createdAt` field: `asc` (ascending) or `desc` (descending)'
in: query
name: sortDirection
required: false
schema:
default: asc
type: string
- description: Number of records to skip before starting to return results (pagination offset)
in: query
name: offset
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopSettlementsResponseV2'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Settlements
tags:
- clearloop
/clearloop/settlements/{settlementId}:
get:
parameters:
- in: path
name: settlementId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ClearLoopSettlementV2'
description: OK
'400':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- bad-request
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Bad Request
'403':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- forbidden
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Forbidden
'409':
content:
application/json:
schema:
properties:
error:
description: The machine-readable error code
examples:
- conflict
type: string
message:
description: A human-readable message providing more details about the error
type: string
type: object
description: Conflict
summary: Get ClearLoop Settlement by ID
tags:
- clearloop
components:
schemas:
ClearLoopPortfolioResponse:
properties:
clientAccountId:
description: Identifier of the client account associated with the ClearLoop portfolio
type: string
custodyType:
$ref: '#/components/schemas/PortfolioCustodyType'
description: Custody type of the ClearLoop portfolio, which indicates how the portfolio is held by the custodian. Possible values include `segregated-trust-wallet`, `clearloop-omnibus`, and `external`.. [See details](/enums/PortfolioCustodyType)
delegationsEnabled:
description: Indicates whether delegations are enabled for the ClearLoop portfolio
type: boolean
disabledDelegationsReason:
description: 'Reason why delegations are disabled for the ClearLoop portfolio. Example: `CL-SETTLEMENTS-1`, which means that delegation is disabled due to an upcoming or pending settlement'
type: string
disabledUndelegationsReason:
description: 'Reason why undelegations are disabled for the ClearLoop portfolio. Example: `CL-SETTLEMENTS-1`, which means that undelegation is disabled due to an upcoming or pending settlement'
type: string
organizationId:
description: Identifier of the client organisation holding the ClearLoop portfolio
type: string
portfolioId:
description: Identifier of the ClearLoop portfolio
type: string
settlementDetails:
$ref: '#/components/schemas/PortfolioSettlementDetails'
description: Settlement details associated with the ClearLoop portfolio
type: object
settlementStatus:
$ref: '#/components/schemas/PortfolioSettlementStatus'
description: Settlement status of the last settlement cycle. [See details](/enums/PortfolioSettlementStatus)
undelegationsEnabled:
description: Indicates whether undelegations are enabled for the ClearLoop portfolio
type: boolean
type: object
ClearLoopPortfoliosResponse:
properties:
portfolios:
description: An array of ClearLoop portfolios (i.e. accounts) held at Copper
items:
$ref: '#/components/schemas/ClearLoopPortfolioResponse'
type: array
type: object
ClearLoopSettlementInstruction:
properties:
balance:
description: Client's delegated balance in Copper, fetched at the time of settlement
type: string
currency:
description: Settlement currency
type: string
orderId:
description: Identifier of the order linked to the settlement for the specified client account and currency
type: string
orderStatus:
$ref: '#/components/schemas/OrderStatus'
description: Status of the order associated with the settlement for the given client account and currency. [See details](/enums/OrderStatus)
settlementAmount:
description: Aggregate amount to be settled across main and subaccounts within the exchange
type: string
settlementAmountUSD:
description: USD equivalent of the `settlementAmount`
type: string
settlementInstructionId:
description: Unique identifier for the settlement instruction (per client account and currency per cycle)
type: string
status:
$ref: '#/components/schemas/ClearLoopSettlementStatus'
description: Status of the settlement at client account and currency level. [See details](/enums/ClearLoopSettlementStatus)
required:
- currency
- settlementAmount
type: object
ClearLoopBalances:
properties:
balances:
description: Array of balance records per wallet
items:
$ref: '#/components/schemas/ManagedFund'
type: array
required:
- balances
type: object
ClearLoopSettlementStatus:
enum:
- new
- pending-exchange-confirmation
- in-progress
- completed
- failed
- cancelled
- partially-completed
- ignored
- on-chain-orders-in-progress
- excluded
type: string
ClearLoopSettlementsResponseV2:
properties:
pagination:
$ref: '#/components/schemas/ClearLoopPagination'
type: object
settlements:
items:
$ref: '#/components/schemas/ClearLoopSettlementV2'
type: array
required:
- settlements
type: object
ClearLoopPagination:
properties:
limit:
description: Numerical limit of records for any given page
type: string
page:
description: Current page index (numerical)
type: string
pages:
description: Total number of pages matching the query
type: string
totalItems:
description: Total number of records returned
type: string
type: object
ClearLoopSettlementV2:
properties:
completedAt:
description: Unix timestamp (in milliseconds) of the date and time when the settlement was fully completed
type: string
createdAt:
description: Unix timestamp (in milliseconds) of the date and time when the settlement started
type: string
custodian:
description: Custodian associated to settlement
type: string
cycleEndTimestamp:
description: Unix timestamp (in milliseconds) of the date and time when the settlement cycle has ended
type: string
cycleStartTimestamp:
description: Unix timestamp (in milliseconds) of the date and time when the settlement cycle has started
type: string
deadline:
description: Unix timestamp (in milliseconds) of the settlement deadline
type: string
exchange:
description: Exchange name
type: string
exchangeId:
description: Exchange identifier
type: string
failureReason:
type: string
settlementDetails:
description: Array of settlement detail records for each client account linked to a given settlement ID
items:
$ref: '#/components/schemas/ClearLoopSettlementDetails'
type: array
settlementId:
description: Unique Copper settlement identifier
type: string
settlementStatus:
$ref: '#/components/schemas/ClearLoopSettlementStatus'
description: Status describing the settlement. [See details](/enums/ClearLoopSettlementStatus)
settlementSubStatus:
$ref: '#/components/schemas/ClearLoopSettlementSubStatus'
description: Sub-status providing additional context to the status of the settlement
required:
- settlementId
- settlementStatus
- settlementSubStatus
- cycleStartTimestamp
- exchange
- exchangeId
type: object
ManagedFund:
properties:
amount:
description: 'Delegated available balance: full delegated amount minus reserved balance'
type: string
available:
description: 'Available balance to undelegate: minimum between exchange funds and delegated balance'
type: string
balance:
description: Total balance value held in the account
type: string
clientAccountId:
description: Unique identifier for the client's exchange account
type: string
currency:
description: Currency associated with the balance
type: string
delegatedOrganizationId:
description: Identifier of the organisation on the exchange to which the balance is delegated
type: string
exchangeId:
description: Identifier of the exchange where the balance is held
type: string
mainCurrency:
description: Network or main currency associated with the wallet
type: string
organizationId:
description: Identifier of the client organisation owning the account
type: string
portfolioId:
description: Unique Copper portfolio identifier
type: string
reserve:
description: Reserved balance allocated for open orders
type: string
totalAvailableToUndelegate:
description: 'Total available balance to undelegate: minimum across all exchange funds (main and subaccounts) and Copper delegated balance'
type: string
required:
- currency
- balance
- amount
- clientAccountId
- portfolioId
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/copper-co/refs/heads/main/openapi/copper-co-clearloop-api-openapi.yml