curl --request GET \
--url https://api.entendre.finance/v1/reports/closing-positions \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/reports/closing-positions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/reports/closing-positions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"token": "ETH",
"quantity": "100.00",
"cost_basis": "100.00",
"weighted_average_cost": "2500.00",
"current_price": "100.00",
"market_value": "100.00",
"unrealized_gain": "100.00",
"date": null
}
],
"has_more": false,
"next_cursor": null,
"total_count": 1,
"data_quality": {
"has_negative_positions": false,
"negative_positions": [],
"negative_position_count": 0,
"negative_market_value": "0.00",
"unmeasured_position_count": 0,
"warnings": []
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"request_id": "req_example"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Get closing positions
Returns end-of-period quantities, valuations and data-quality warnings.
curl --request GET \
--url https://api.entendre.finance/v1/reports/closing-positions \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/reports/closing-positions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/reports/closing-positions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"token": "ETH",
"quantity": "100.00",
"cost_basis": "100.00",
"weighted_average_cost": "2500.00",
"current_price": "100.00",
"market_value": "100.00",
"unrealized_gain": "100.00",
"date": null
}
],
"has_more": false,
"next_cursor": null,
"total_count": 1,
"data_quality": {
"has_negative_positions": false,
"negative_positions": [],
"negative_position_count": 0,
"negative_market_value": "0.00",
"unmeasured_position_count": 0,
"warnings": []
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"request_id": "req_example"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}as_of for a reporting date, or omit it for current positions.Authorizations
Your organization API key. Some operations also need a key that is associated with a user; their pages say so.
Query Parameters
Prefixed financial account IDs (fac_). Up to 100 IDs.
Asset types to include.
Source IDs to include.
Maximum number of records to return.
1 <= x <= 100The next_cursor value from the previous page. Keep the other filters unchanged.
Legal entities to include (le_…). Omit to include all.
100Legal entity ID (le_…).
Reporting date. Omit to return current positions.
"2026-08-31T12:00:00Z"
Include rows where quantity, cost_basis, market_value, and unrealized_gain are all zero. Default: true (include). Set to false to drop zero-balance positions.
true, false Response
The request succeeded.
The records.
Show child attributes
Show child attributes
Whether another page is available.
Cursor for the next page, or null on the last page.
Total positions across all pages after filtering.
Checks all positions in the requested scope before pagination and fiat-row filtering. A clean filtered result does not certify the whole organization.
Show child attributes
Show child attributes