SynFutures Orders API
Order list, calldata build, One Click send/cancel, and tx recording
Order list, calldata build, One Click send/cancel, and tx recording
openapi: 3.0.3
info:
title: SynFutures RWA Trading Cash Orders API
version: v1
description: RESTful API for SynFutures tokenized stock (Real-World Asset) trading. Covers market data, portfolio, order placement (calldata build + One Click delegated send), cash and stock deposits/withdrawals, and One Click (1CT) delegation management. All /api/v1 endpoints require HMAC-SHA256 request authentication with an IP-whitelisted partner API key.
contact:
name: SynFutures
url: https://docs.synfutures.com/rwa-trading-apis/readme
x-logo:
url: https://www.synfutures.com/assets/trade_every_asset.png
servers:
- url: https://base-api.synfutures.com/rwa/trading
description: RWA Trading API (base path /api/v1)
security:
- ApiKeyAuth: []
ApiTimestamp: []
ApiNonce: []
ApiSignature: []
ApiChainId: []
ApiProduct: []
tags:
- name: Orders
description: Order list, calldata build, One Click send/cancel, and tx recording
paths:
/api/v1/orders:
get:
operationId: listOrders
tags:
- Orders
summary: Order list
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Limit'
responses:
'200':
$ref: '#/components/responses/PagedEnvelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/calldata:
post:
operationId: buildOrderCalldata
tags:
- Orders
summary: Build order calldata
description: Builds the on-chain calldata for an order for self-submission.
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/send:
post:
operationId: sendOrder
tags:
- Orders
summary: One Click order
description: Places an order via One Click delegated submission.
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/with-deposit/calldata:
post:
operationId: buildOrderWithDepositCalldata
tags:
- Orders
summary: Build order-with-deposit calldata
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/with-deposit/send:
post:
operationId: sendOrderWithDeposit
tags:
- Orders
summary: One Click order with deposit
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/tx:
post:
operationId: recordOrderTx
tags:
- Orders
summary: Record order tx
description: Records a self-submitted order transaction hash.
requestBody:
$ref: '#/components/requestBodies/Generic'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/tx/{txHash}:
get:
operationId: getOrderByTx
tags:
- Orders
summary: Order by tx
parameters:
- name: txHash
in: path
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/{orderId}:
get:
operationId: getOrder
tags:
- Orders
summary: Order detail
parameters:
- $ref: '#/components/parameters/OrderId'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/{orderId}/calldata:
delete:
operationId: buildCancelOrderCalldata
tags:
- Orders
summary: Cancel calldata
parameters:
- $ref: '#/components/parameters/OrderId'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/orders/{orderId}/send:
delete:
operationId: sendCancelOrder
tags:
- Orders
summary: One Click cancel
parameters:
- $ref: '#/components/parameters/OrderId'
responses:
'200':
$ref: '#/components/responses/Envelope'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
Envelope:
type: object
description: All responses share this envelope.
properties:
code:
type: integer
description: 200 on success; error code otherwise.
example: 200
errMsg:
type: string
description: Empty on success; descriptive message on error.
data:
description: Response payload (shape varies per endpoint).
uuid:
type: string
nullable: true
description: Request/trace identifier (null when not applicable).
t:
type: integer
nullable: true
description: Server timestamp (null when not applicable).
PagedEnvelope:
allOf:
- $ref: '#/components/schemas/Envelope'
- type: object
properties:
data:
type: object
properties:
total:
type: integer
description: Total matching records.
rows:
type: array
description: Current page of records.
items:
type: object
responses:
Unauthorized:
description: Authentication failed (invalid key, signature, drift, or empty IP whitelist)
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
PagedEnvelope:
description: Paged response envelope
content:
application/json:
schema:
$ref: '#/components/schemas/PagedEnvelope'
Envelope:
description: Standard response envelope
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
requestBodies:
Generic:
required: true
content:
application/json:
schema:
type: object
parameters:
Page:
name: page
in: query
required: false
schema:
type: integer
default: 1
minimum: 1
Limit:
name: limit
in: query
required: false
schema:
type: integer
default: 10
minimum: 1
maximum: 100
OrderId:
name: orderId
in: path
required: true
schema:
type: string
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Partner API key (must be active, unexpired, and IP-whitelisted).
ApiTimestamp:
type: apiKey
in: header
name: x-api-ts
description: Unix millisecond timestamp; must be within 45s drift tolerance.
ApiNonce:
type: apiKey
in: header
name: x-api-nonce
description: Unique replay-prevention nonce per key within the 45s window (UUID recommended).
ApiSignature:
type: apiKey
in: header
name: x-api-sign
description: HMAC-SHA256 signature over the canonical request, hex-encoded (case-insensitive).
ApiChainId:
type: apiKey
in: header
name: x-api-chain-id
description: Chain identifier (e.g. 8453 Base, 1 Ethereum, 143 Monad).
ApiProduct:
type: apiKey
in: header
name: x-api-p
description: Product type; use "Synfutures".