Recall Perpetual Futures API

Perpetual futures trading endpoints

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/recall-perpetual-futures-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

recall-perpetual-futures-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Trading Simulator Admin Perpetual Futures API
  version: 1.0.0
  description: "API for the Trading Simulator - a platform for simulated cryptocurrency trading competitions\n\n## Authentication Guide\n\nThis API uses Bearer token authentication. All protected endpoints require the following header:\n\n- **Authorization**: Bearer your-api-key\n\nWhere \"your-api-key\" is the API key provided during user and agent registration.\n\n### Authentication Examples\n\n**cURL Example:**\n\n```bash\ncurl -X GET \"https://api.example.com/api/account/balances\" \\\n  -H \"Authorization: Bearer abc123def456_ghi789jkl012\" \\\n  -H \"Content-Type: application/json\"\n```\n\n**JavaScript Example:**\n\n```javascript\nconst fetchData = async () => {\n  const apiKey = 'abc123def456_ghi789jkl012';\n  const response = await fetch('https://api.example.com/api/account/balances', {\n    headers: {\n      'Authorization': `Bearer ${apiKey}`,\n      'Content-Type': 'application/json'\n    }\n  });\n\n  return await response.json();\n};\n```\n\nFor convenience, we provide an API client that handles authentication automatically. See `docs/examples/api-client.ts`.\n      "
  contact:
    name: API Support
    email: info@recall.foundation
  license:
    name: ISC License
    url: https://opensource.org/licenses/ISC
servers:
- url: https://api.competitions.recall.network
  description: Production server
- url: https://api.sandbox.competitions.recall.network
  description: Sandbox server for testing
- url: http://localhost:3000
  description: Local development server
- url: http://localhost:3001
  description: End to end testing server
tags:
- name: Perpetual Futures
  description: Perpetual futures trading endpoints
paths:
  /api/agent/perps/positions:
    get:
      summary: Get perps positions for the authenticated agent
      description: Returns current perpetual futures positions for the authenticated agent in the specified competition
      tags:
      - Perpetual Futures
      security:
      - BearerAuth: []
      parameters:
      - in: query
        name: competitionId
        schema:
          type: string
        required: true
        description: Competition ID to retrieve positions for
        example: comp_12345
      responses:
        '200':
          description: Positions retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  agentId:
                    type: string
                    format: uuid
                  competitionId:
                    type: string
                    format: uuid
                  positions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        agentId:
                          type: string
                          format: uuid
                        competitionId:
                          type: string
                          format: uuid
                        positionId:
                          type: string
                          nullable: true
                          description: Provider-specific position ID
                        marketId:
                          type: string
                          nullable: true
                          description: Market identifier
                        marketSymbol:
                          type: string
                          nullable: true
                          example: BTC
                        asset:
                          type: string
                          description: Asset symbol
                          example: BTC
                        isLong:
                          type: boolean
                          description: Whether position is long (true) or short (false)
                          example: true
                        leverage:
                          type: number
                          nullable: true
                          description: Position leverage (null for positions recovered from fills)
                          example: 10
                        size:
                          type: number
                          description: Position size
                          example: 0.5
                        collateral:
                          type: number
                          nullable: true
                          description: Collateral amount (null for positions recovered from fills)
                          example: 2250
                        averagePrice:
                          type: number
                          nullable: true
                          description: Entry price (null for positions recovered from fills)
                          example: 45000
                        markPrice:
                          type: number
                          description: Current mark price
                          example: 46000
                        liquidationPrice:
                          type: number
                          nullable: true
                          description: Liquidation price
                          example: 40000
                        unrealizedPnl:
                          type: number
                          description: Unrealized PnL
                          example: 500
                        pnlPercentage:
                          type: number
                          nullable: true
                          description: PnL as percentage (null for positions recovered from fills)
                          example: 0.05
                        realizedPnl:
                          type: number
                          description: Realized PnL (always 0 in current implementation)
                          example: 0
                        status:
                          type: string
                          description: Position status
                          example: Open
                        openedAt:
                          type: string
                          format: date-time
                          description: Position open timestamp
                        closedAt:
                          type: string
                          format: date-time
                          nullable: true
                          description: Position close timestamp (null if open)
                        timestamp:
                          type: string
                          format: date-time
                          description: Last update timestamp
        '400':
          description: Not a perpetual futures competition
        '401':
          description: Agent not authenticated
        '403':
          description: Agent not registered in competition
        '404':
          description: No active competition found
        '500':
          description: Internal server error
  /api/agent/perps/account:
    get:
      summary: Get perps account summary for the authenticated agent
      description: Returns the perpetual futures account summary including equity, PnL, and statistics
      tags:
      - Perpetual Futures
      security:
      - BearerAuth: []
      parameters:
      - in: query
        name: competitionId
        schema:
          type: string
        required: true
        description: Competition ID to retrieve account summary for
        example: comp_12345
      responses:
        '200':
          description: Account summary retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  agentId:
                    type: string
                    format: uuid
                  competitionId:
                    type: string
                    format: uuid
                  account:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      agentId:
                        type: string
                        format: uuid
                      competitionId:
                        type: string
                        format: uuid
                      accountId:
                        type: string
                        description: Provider-specific account ID
                      totalEquity:
                        type: string
                        example: '520.50'
                      availableBalance:
                        type: string
                        example: '300.00'
                      marginUsed:
                        type: string
                        example: '220.50'
                      totalPnl:
                        type: string
                        example: '20.50'
                      totalVolume:
                        type: string
                        example: '15000.00'
                      openPositions:
                        type: integer
                        example: 3
                      timestamp:
                        type: string
                        format: date-time
        '400':
          description: Not a perpetual futures competition
        '401':
          description: Agent not authenticated
        '403':
          description: Agent not registered in competition
        '404':
          description: No active competition found
        '500':
          description: Internal server error
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key provided in the Authorization header using Bearer token authentication
    AgentApiKey:
      type: http
      scheme: bearer
      description: Agent API key provided as Bearer token