Quickstart
From zero to a live call in under a minute
Every fund-data example on this page uses the published demo key against a synthetic fixture: copy, paste, run.
/api/v1/fund/overview needs one header: a Bearer key. The demo key below works with zero setup.
cURL
curl -s -X GET "https://nyxsuite.com/api/v1/fund/overview" \
-H "Authorization: Bearer nyx_dk_demo000000000000000000000000000000000000000"JavaScript
const res = await fetch("https://nyxsuite.com/api/v1/fund/overview", {
method: "GET",
headers: { Authorization: "Bearer nyx_dk_demo000000000000000000000000000000000000000" },
})
const data = await res.json()Python
# GET https://nyxsuite.com/api/v1/fund/overview
import requests
res = requests.get(
"https://nyxsuite.com/api/v1/fund/overview",
headers={"Authorization": "Bearer nyx_dk_demo000000000000000000000000000000000000000"},
)
data = res.json()SDK
// TypeScript (@nyxsuite/sdk)
import { NyxClient } from '@nyxsuite/sdk'
const client = new NyxClient({ apiKey: 'nyx_dk_demo000000000000000000000000000000000000000', baseUrl: 'https://nyxsuite.com/api/v1' })
const data = await client.fundOverview()
# Python (nyxsuite)
from nyxsuite import NyxClient
client = NyxClient(api_key="nyx_dk_demo000000000000000000000000000000000000000", base_url="https://nyxsuite.com/api/v1")
data = client.fund_overview()Or skip the terminal: send the same call from the browser.
Object(3)
Object(3)
Array(1)
Object(8)
Object(4)
Calculator endpoints need no auth at all: /api/v1/calc/fee-calculator is stateless, illustrative fee math.
cURL
curl -s -X POST "https://nyxsuite.com/api/v1/calc/fee-calculator" \
-H "Content-Type: application/json" \
-d '{"startingNavUsd":25000000,"annualGrossReturnPct":15,"mgmtFeePct":2,"perfFeePct":20,"hurdlePct":null,"hasHwm":true,"crystallization":"annual","horizonYears":5}'JavaScript
const res = await fetch("https://nyxsuite.com/api/v1/calc/fee-calculator", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"startingNavUsd": 25000000,
"annualGrossReturnPct": 15,
"mgmtFeePct": 2,
"perfFeePct": 20,
"hurdlePct": null,
"hasHwm": true,
"crystallization": "annual",
"horizonYears": 5
}),
})
const data = await res.json()Python
# POST https://nyxsuite.com/api/v1/calc/fee-calculator
import requests
res = requests.post(
"https://nyxsuite.com/api/v1/calc/fee-calculator",
json={"startingNavUsd": 25000000, "annualGrossReturnPct": 15, "mgmtFeePct": 2, "perfFeePct": 20, "hurdlePct": None, "hasHwm": True, "crystallization": "annual", "horizonYears": 5},
)
data = res.json()SDK
// Calculators are public, keyless POST endpoints — neither SDK wraps them with a
// dedicated method (they need no API key at all). Call the REST endpoint directly:
// POST https://nyxsuite.com/api/v1/calc/fee-calculator
// See the cURL / JavaScript / Python tabs for a ready-to-run example.The public MCP server needs no key either: one command wires it into Claude Code.
Claude Code
Add the NYX Suite public MCP server with one `claude mcp add` command.
claude mcp add --transport http nyx-suite https://nyxsuite.com/api/mcp/publicClaude Desktop
Paste a custom connector entry into your Claude Desktop config.
{
"nyx-suite": {
"type": "http",
"url": "https://nyxsuite.com/api/mcp/public"
}
}Cursor
Install via a one-click deeplink, or paste the config JSON yourself.
{
"mcpServers": {
"nyx-suite": {
"url": "https://nyxsuite.com/api/mcp/public"
}
}
}ChatGPT
Add as a custom connector where your ChatGPT plan and workspace support MCP.
ChatGPT's MCP connector support (Settings, Connectors, Add custom connector: on plans and workspaces where it's enabled) accepts an HTTP MCP server URL:
https://nyxsuite.com/api/mcp/public
If a header is required, add it as a custom header: "Authorization: Bearer <your API key>". Availability depends on your ChatGPT plan and workspace configuration.Any MCP client (JSON-RPC)
Speak raw MCP JSON-RPC over HTTP: works with any spec-compliant client.
# 1. Initialize the MCP session
curl -s -X POST "https://nyxsuite.com/api/mcp/public" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2026-06-18","capabilities":{},"clientInfo":{"name":"example-client","version":"1.0.0"}}}'
# 2. Call a tool
curl -s -X POST "https://nyxsuite.com/api/mcp/public" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_fund_overview","arguments":{}}}'Beyond reads: 4 propose endpoints stage a maker-checker proposal for a human manager to approve (an Idempotency-Key header makes a retry safe), webhooks push signed, retried deliveries for nav.published, report.distributed, proposal.approved, and proposal.rejected, and two official SDKs: @nyxsuite/sdk (TypeScript) and nyxsuite (Python), zero runtime dependencies in either, wrap the full read + propose surface. See the propose endpoints and the SDK tab on any endpoint above for a ready-to-run example.
Ready to call your own fund's real data? Create a nyx_dk_ key in the developer console: the demo key never has fund-data scope.