PhoenixPerpetualsDocs API v1
Get an API key

API reference ยท Risk and history

GET/v1/accounts/{account_id}/progress

Get progress⁠.

Read

Each objective (profit target, trading days) and each loss limit, with where it stands.

Path parameters#

Responses#

200OK
  • stagestringrequired

    Where the account is in the programme.

    One ofevaluationfundedsandbox

  • objectivesobjectrequired
    Show 3 fields
    • profit_targetobject or nullrequired
      Show 5 fields
      • goal_balancedecimal stringrequired

        The balance that reaches it.

      • remainingdecimal stringrequired

        Still to make.

      • progress_pctdecimal string or nullrequired

        How far, in percent.

      • requires_flatbooleanrequired

        Positions must be closed when it is reached.

      • statusstringrequired

        Whether it is reached.

        One ofopenmet

    • min_trading_daysobject or nullrequired
      Show 3 fields
      • requiredintegerrequired

        Days the rule needs.

      • countinteger or nullrequired

        Days with a trade so far.

      • statusstringrequired

        Whether it is reached.

        One ofopenmet

    • min_calendar_daysobject or nullrequired
      Show 3 fields
      • requiredintegerrequired

        Calendar days the rule needs.

      • countintegerrequired

        Calendar days so far.

      • statusstringrequired

        Whether it is reached.

        One ofopenmet

  • limitsobjectrequired
    Show 2 fields
    • daily_lossLimitStanding or nullrequired
      Show 11 fields
      • limitdecimal string

        The limit, in USD.

      • floordecimal string

        The equity at which it is breached.

      • roomdecimal string

        How much more the account may lose before it.

      • used_pctdecimal string or null

        How much of it is used, in percent.

      • resets_atinteger, Unix ms

        Daily loss only: when it resets (midnight New York).

      • on_breachstring

        Daily loss only: what happens when it is reached.

        One offail_accountflattenflatten_and_pause

      • estimatedboolean

        Daily loss only: the day's start is estimated (the engine does not publish it).

      • modestring

        Max drawdown only: how the reference moves.

        One ofend_of_dayend_of_tradestaticintraday_equity

      • at_leastboolean

        Max drawdown only: the engine may hold a higher floor than shown (it follows equity highs).

      • liftedbooleanrequired

        The rule no longer applies this limit (its cut-off was reached).

      • statusstringrequired

        Where it stands.

        One ofokwarningcriticalbreached

    • max_drawdownLimitStanding or nullrequired
      Show 11 fields
      • limitdecimal string

        The limit, in USD.

      • floordecimal string

        The equity at which it is breached.

      • roomdecimal string

        How much more the account may lose before it.

      • used_pctdecimal string or null

        How much of it is used, in percent.

      • resets_atinteger, Unix ms

        Daily loss only: when it resets (midnight New York).

      • on_breachstring

        Daily loss only: what happens when it is reached.

        One offail_accountflattenflatten_and_pause

      • estimatedboolean

        Daily loss only: the day's start is estimated (the engine does not publish it).

      • modestring

        Max drawdown only: how the reference moves.

        One ofend_of_dayend_of_tradestaticintraday_equity

      • at_leastboolean

        Max drawdown only: the engine may hold a higher floor than shown (it follows equity highs).

      • liftedbooleanrequired

        The rule no longer applies this limit (its cut-off was reached).

      • statusstringrequired

        Where it stands.

        One ofokwarningcriticalbreached

  • payoutobject or nullrequired
    Show 4 fields
    • eligiblebooleanrequired

      A payout may be requested now.

    • availabledecimal stringrequired

      What may be paid out.

    • min_payoutdecimal string or nullrequired

      The smallest payout.

    • paid_outdecimal stringrequired

      Paid out so far.

  • as_ofinteger, Unix msrequired

    When the oldest figure here was read.

401The request has no Authorization header.
{
  "error": {
    "type": "authentication",
    "code": "missing_api_key",
    "message": "No API key: send it as Authorization: Bearer <key>.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": false,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#missing_api_key"
  }
}
403The key only works from the addresses you listed.
{
  "error": {
    "type": "permission",
    "code": "ip_not_allowed",
    "message": "This address is not on the key's allowlist.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": false,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#ip_not_allowed"
  }
}
404The account does not exist in this environment, or the key does not reach it.
{
  "error": {
    "type": "not_found",
    "code": "account_not_found",
    "message": "No account with that id is reachable with this key.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": false,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#account_not_found"
  }
}
409The account exists but is not open on the trading engine yet.
{
  "error": {
    "type": "conflict",
    "code": "account_not_ready",
    "message": "This account is still being opened.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": true,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#account_not_ready"
  }
}
429A request budget is used up (details.scope says which).
{
  "error": {
    "type": "rate_limit",
    "code": "rate_limited",
    "message": "Too many requests: slow down.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": true,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#rate_limited"
  }
}
500An error we did not expect.
{
  "error": {
    "type": "server",
    "code": "internal_error",
    "message": "Something went wrong on our side.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": true,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#internal_error"
  }
}
503The trading engine did not give a complete answer in time; nothing partial is returned.
{
  "error": {
    "type": "engine",
    "code": "state_unavailable",
    "message": "The account's figures cannot be read right now.",
    "request_id": "req_0f9c2a7d8e1b4c6a9f3e5d7b1a2c4e6f",
    "retryable": true,
    "doc_url": "https://docs.phoenixperpsfunding.com/reference/errors#state_unavailable"
  }
}

Errors#

Codes this endpoint can return. Match on the code, never on the message.

Guides, endpoints, fields and error codes.