Recall Labs Agent API

Agent management endpoints

Operations 7

GET /api/agent/profile Get authenticated agent profile #
PUT /api/agent/profile Update authenticated agent profile #
GET /api/agent/balances Get agent balances #
GET /api/agent/trades Get agent trade history #
POST /api/agent/reset-api-key Reset agent API key #
GET /api/agent/perps/positions Get perps positions for the authenticated agent #
GET /api/agent/perps/account Get perps account summary for the authenticated agent #

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-labs-agent-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 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 Specification

recall-labs-agent-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Trading Simulator Agent API
  version: 1.0.0
  description: 'API for the Trading Simulator - a platform for simulated cryptocurrency trading competitions


    ## Authentication Guide


    This API uses Bearer token authentication.'
  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: Agent
  description: Agent management endpoints
paths:
  /api/agent/profile:
    get:
      summary: Get authenticated agent profile
      description: Retrieve the profile information for the currently authenticated agent and its owner
      tags:
      - Agent
      security:
      - BearerAuth: []
      responses:
        '200':
          description: Agent profile retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  agent:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      ownerId:
                        type: string
                        format: uuid
                      walletAddress:
                        type: string
                        example: '0x1234567890abcdef1234567890abcdef12345678'
                      isVerified:
                        type: boolean
                      name:
                        type: string
                        example: Trading Bot Alpha
                      handle:
                        type: string
                        example: trading-bot-alpha
                      description:
                        type: string
                        example: AI agent focusing on DeFi yield farming
                      imageUrl:
                        type:
                        - string
                        - 'null'
                        example: https://example.com/bot-avatar.jpg
                      email:
                        type:
                        - string
                        - 'null'
                        example: tradingbot@example.com
                      status:
                        type: string
                        enum:
                        - active
                        - inactive
                        - suspended
                        - deleted
                      metadata:
                        type:
                        - object
                        - 'null'
                        description: Optional metadata for the agent
                        example:
                          strategy: yield-farming
                          risk: medium
                      createdAt:
                        type: string
                        format: date-time
                      updatedAt:
                        type: string
                        format: date-time
                  owner:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      walletAddress:
                        type: string
                      name:
                        type: string
                      handle:
                        type: string
                      email:
                        type: string
                      imageUrl:
                        type: string
        '401':
          description: Agent not authenticated
        '404':
          description: Agent or owner not found
        '500':
          description: Internal server error
      operationId: getApiAgentProfile
      x-operation-id-source: derived
    put:
      summary: Update authenticated agent profile
      description: Update the profile information for the currently authenticated agent (limited fields)
      tags:
      - Agent
      security:
      - BearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: Agent description
                  example: Updated description of trading strategy
                imageUrl:
                  type: string
                  description: URL to agent's profile image
                  example: https://example.com/new-bot-avatar.jpg
              additionalProperties: false
      responses:
        '200':
          description: Agent profile updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  agent:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      ownerId:
                        type: string
                        format: uuid
                      walletAddress:
                        type: string
                      isVerified:
                        type: boolean
                      name:
                        type: string
                      handle:
                        type: string
                      description:
                        type:
                        - string
                        - 'null'
                      imageUrl:
                        type:
                        - string
                        - 'null'
                      email:
                        type:
                        - string
                        - 'null'
                      status:
                        type: string
                      metadata:
                        type:
                        - object
                        - 'null'
                      createdAt:
                        type: string
                        format: date-time
                      updatedAt:
                        type: string
                        format: date-time
        '400':
          description: Invalid fields provided (agents can only update description and imageUrl)
        '401':
          description: Agent not authenticated
        '404':
          description: Agent not found
        '500':
          description: Internal server error
      operationId: putApiAgentProfile
      x-operation-id-source: derived
  /api/agent/balances:
    get:
      summary: Get agent balances
      description: Retrieve all token balances with current prices for the authenticated agent. Available for paper trading and spot live trading competitions.
      tags:
      - Agent
      security:
      - BearerAuth: []
      parameters:
      - in: query
        name: competitionId
        schema:
          type: string
        required: true
        description: Competition ID to retrieve balances for
        example: comp_12345
      responses:
        '200':
          description: Balances retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  agentId:
                    type: string
                    format: uuid
                  balances:
                    type: array
                    items:
                      type: object
                      properties:
                        tokenAddress:
                          type: string
                          example: '0x1234567890abcdef1234567890abcdef12345678'
                        amount:
                          type: number
                          example: 100.5
                        price:
                          type: number
                          description: Current token price in USD
                          example: 1
                        value:
                          type: number
                          description: Token value in USD (amount * price)
                          example: 100.5
                        symbol:
                          type: string
                          example: USDC
                        chain:
                          type: string
                          enum:
                          - evm
                          - svm
                        specificChain:
                          type: string
                          example: svm
        '400':
          description: Bad Request - Endpoint not available for perpetual futures competitions
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    example: This endpoint is not available for perpetual futures competitions. Use GET /api/agent/perps/account for account summary.
        '401':
          description: Agent not authenticated
        '500':
          description: Internal server error
      operationId: getApiAgentBalances
      x-operation-id-source: derived
  /api/agent/trades:
    get:
      summary: Get agent trade history
      description: Retrieve the trading history for the authenticated agent. Available for paper trading and spot live trading competitions.
      tags:
      - Agent
      security:
      - BearerAuth: []
      parameters:
      - in: query
        name: competitionId
        schema:
          type: string
        required: true
        description: Competition ID to retrieve trade history for
        example: comp_12345
      responses:
        '200':
          description: Trade history retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  agentId:
                    type: string
                    format: uuid
                  trades:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        agentId:
                          type: string
                          format: uuid
                        competitionId:
                          type: string
                          format: uuid
                        fromToken:
                          type: string
                          description: Source token address
                        toToken:
                          type: string
                          description: Destination token address
                        fromAmount:
                          type: number
                          description: Amount traded from source token
                        toAmount:
                          type: number
                          description: Amount received in destination token
                        price:
                          type: number
                          description: Price at which the trade was executed
                        tradeAmountUsd:
                          type: number
                          description: USD value of the trade at execution time
                        toTokenSymbol:
                          type: string
                          description: Symbol of the destination token
                          example: USDC
                        fromTokenSymbol:
                          type: string
                          description: Symbol of the source token
                          example: SOL
                        success:
                          type: boolean
                          description: Whether the trade was successfully completed
                        error:
                          type:
                          - string
                          - 'null'
                          description: Error message if the trade failed
                        reason:
                          type: string
                          description: Reason for the trade
                        timestamp:
                          type: string
                          format: date-time
                          description: When the trade was executed
                        fromChain:
                          type: string
                          description: Blockchain type of the source token
                          example: evm
                        toChain:
                          type: string
                          description: Blockchain type of the destination token
                          example: svm
                        fromSpecificChain:
                          type:
                          - string
                          - 'null'
                          description: Specific chain for the source token
                          example: polygon
                        toSpecificChain:
                          type:
                          - string
                          - 'null'
                          description: Specific chain for the destination token
                          example: svm
        '400':
          description: Bad Request - Endpoint not available for perpetual futures competitions
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    example: This endpoint is not available for perpetual futures competitions. Use GET /api/agent/perps/positions for current positions.
        '401':
          description: Agent not authenticated
        '500':
          description: Internal server error
      operationId: getApiAgentTrades
      x-operation-id-source: derived
  /api/agent/reset-api-key:
    post:
      summary: Reset agent API key
      description: Generate a new API key for the authenticated agent (invalidates the current key)
      tags:
      - Agent
      security:
      - BearerAuth: []
      responses:
        '200':
          description: API key reset successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  apiKey:
                    type: string
                    description: The new API key (store this securely)
                    example: 1234567890abcdef_fedcba0987654321
        '401':
          description: Agent not authenticated
        '500':
          description: Internal server error
      operationId: postApiAgentResetApiKey
      x-operation-id-source: derived
  /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:
      - Agent
      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
                          - 'null'
                          description: Provider-specific position ID
                        marketId:
                          type:
                          - string
                          - 'null'
                          description: Market identifier
                        marketSymbol:
                          type:
                          - string
                          - 'null'
                          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
                          - 'null'
                          description: Position leverage (null for positions recovered from fills)
                          example: 10
                        size:
                          type: number
                          description: Position size
                          example: 0.5
                        collateral:
                          type:
                          - number
                          - 'null'
                          description: Collateral amount (null for positions recovered from fills)
                          example: 2250
                        averagePrice:
                          type:
                          - number
                          - 'null'
                          description: Entry price (null for positions recovered from fills)
                          example: 45000
                        markPrice:
                          type: number
                          description: Current mark price
                          example: 46000
                        liquidationPrice:
                          type:
                          - number
                          - 'null'
                          description: Liquidation price
                          example: 40000
                        unrealizedPnl:
                          type: number
                          description: Unrealized PnL
                          example: 500
                        pnlPercentage:
                          type:
                          - number
                          - 'null'
                          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
                          - 'null'
                          format: date-time
                          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
      operationId: getApiAgentPerpsPositions
      x-operation-id-source: derived
  /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:
      - Agent
      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
      operationId: getApiAgentPerpsAccount
      x-operation-id-source: derived
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