River Markets Subaccounts API
Manage trading subaccounts. Each subaccount can have its own exchange credentials and positions.
Manage trading subaccounts. Each subaccount can have its own exchange credentials and positions.
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/river-markets-subaccounts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: River Markets Subaccounts API
description: '# Getting Started
River Markets provides users with a unified prime brokerage interface for prediction markets, including
- Liquidity aggregation
- Order routing
- Market and data search
This API guide will help you get up and running quickly.'
contact:
name: River Markets
url: https://rivermarkets.com/
license:
name: Proprietary
version: 1.0.0
servers:
- url: https://api.rivermarkets.com
security:
- SignedRequestKeyId: []
SignedRequestTimestamp: []
SignedRequestSignature: []
- BearerAuth: []
tags:
- name: Subaccounts
description: Manage trading subaccounts. Each subaccount can have its own exchange credentials and positions.
paths:
/v1/subaccounts:
get:
tags:
- Subaccounts
summary: List Subaccounts
description: 'Enumerate all trading subaccounts accessible to the user.
Returns list of accounts with identifiers and metadata.'
operationId: list_subaccounts_v1_subaccounts_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/SubaccountResponse'
type: array
title: Response List Subaccounts V1 Subaccounts Get
post:
tags:
- Subaccounts
summary: Create Subaccount
description: Create a new trading subaccount for the authenticated user.
operationId: create_subaccount_v1_subaccounts_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountCreate'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/subaccounts/{subaccount_id}:
get:
tags:
- Subaccounts
summary: Get Subaccount
description: 'Fetch configuration and metadata for a specific subaccount.
Returns account configuration, limits, and descriptive metadata.'
operationId: get_subaccount_v1_subaccounts__subaccount_id__get
parameters:
- name: subaccount_id
in: path
required: true
schema:
type: string
title: Subaccount Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- Subaccounts
summary: Update Subaccount
description: Update an existing subaccount.
operationId: update_subaccount_v1_subaccounts__subaccount_id__patch
parameters:
- name: subaccount_id
in: path
required: true
schema:
type: string
title: Subaccount Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountUpdate'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Subaccounts
summary: Delete Subaccount
description: 'Delete a subaccount. Custodial subaccounts cannot be deleted.
This is a soft delete: the row is marked is_active = false so the audit trail
(orders, fills, ledger entries) stays intact. The user never sees it again.'
operationId: delete_subaccount_v1_subaccounts__subaccount_id__delete
parameters:
- name: subaccount_id
in: path
required: true
schema:
type: string
title: Subaccount Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
SubaccountResponse:
properties:
subaccount_id:
type: string
format: uuid
title: Subaccount Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
account_type:
$ref: '#/components/schemas/AccountType'
is_active:
type: boolean
title: Is Active
inserted_at:
type: string
title: Inserted At
type: object
required:
- subaccount_id
- name
- account_type
- is_active
- inserted_at
title: SubaccountResponse
description: Schema for subaccount response.
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
SubaccountUpdate:
properties:
name:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Name
description:
anyOf:
- type: string
maxLength: 500
- type: 'null'
title: Description
type: object
title: SubaccountUpdate
description: Schema for updating a subaccount.
SubaccountCreate:
properties:
name:
type: string
maxLength: 100
title: Name
description:
anyOf:
- type: string
maxLength: 500
- type: 'null'
title: Description
account_type:
$ref: '#/components/schemas/AccountType'
default: non_custodial
type: object
required:
- name
title: SubaccountCreate
description: Schema for creating a new subaccount.
AccountType:
type: string
enum:
- custodial
- non_custodial
title: AccountType
description: Type of trading subaccount.
securitySchemes:
SignedRequestKeyId:
type: apiKey
in: header
name: X-River-Key-Id
description: UUID of your API key (from Settings → API Keys).
SignedRequestTimestamp:
type: apiKey
in: header
name: X-River-Timestamp
description: Current unix seconds. Must be within 30s of server time.
SignedRequestSignature:
type: apiKey
in: header
name: X-River-Signature
description: 'Base64 Ed25519 signature over the canonical request: METHOD\nPATH\nSORTED_QUERY\nTIMESTAMP\nSHA256(body) hex. See /api-reference/authentication for the full recipe.'
BearerAuth:
type: http
scheme: bearer
description: JWT bearer token for web client authentication.