Docs

Instrumentos y símbolos

Nombra un mercado una sola vez —XAUUSD, US30, BTCUSD— y opera el símbolo propio del broker de cada cuenta. Lista los símbolos, las especificaciones de contrato y el horario de mercado de cualquier broker conectado.

El mismo mercado tiene un nombre distinto en casi cada broker. El oro es XAUUSD en uno, XAUUSD.a en otro, XAUUSDm o GOLD en un tercero. El Dow es US30, DJ30, WS30 o US30.cash. Si tus miembros operan en brokers distintos, o en distintos tipos de cuenta de un mismo broker, una señal no puede nombrar el símbolo del broker.

Por eso fxapis separa las dos cosas:

  • Un instrumento es un mercado nombrado una sola vez, de una lista fija: XAUUSD, EURUSD, US30, BTCUSD, etc.
  • Un símbolo es como lo llama un broker, exactamente como una orden debe enviarlo.

Nombra un instrumento en una señal y en cada orden, y fxapis opera el símbolo propio de cada cuenta para ese mercado.

Los instrumentos

curl -sS "https://api.fxapis.com/v1/instruments" -H "Authorization: Bearer $FXAPIS_KEY"
{
  "data": [
    { "instrument": "EURUSD", "name": "Euro vs US Dollar", "category": "forex" },
    { "instrument": "XAUUSD", "name": "Gold vs US Dollar", "category": "metals" },
    { "instrument": "US30", "name": "Dow Jones Industrial Average", "category": "indices" },
    { "instrument": "USOIL", "name": "WTI Crude Oil", "category": "energies" },
    { "instrument": "BTCUSD", "name": "Bitcoin vs US Dollar", "category": "crypto" }
  ]
}

La lista cubre los pares mayores de forex, los cruces y los exóticos comunes, los metales, los principales índices bursátiles, el petróleo y el gas, y las principales criptomonedas. Filtra con ?category=forex|metals|indices|energies|crypto. No necesita cuenta ni broker, así que es la lista con la que construir un editor de señales.

Operar un instrumento

Envía instrument en lugar de symbol. Todo lo demás no cambia:

curl -sS -X POST "https://api.fxapis.com/v1/accounts/$ACCOUNT_ID/orders/market" \
  -H "Authorization: Bearer $FXAPIS_KEY" \
  -H "Idempotency-Key: signal_9931:member_4821" \
  -H "Content-Type: application/json" \
  -d '{ "instrument": "XAUUSD", "side": "buy", "volume": "0.05", "stopLoss": "2338.50", "takeProfit": "2371.00" }'

La orden registra ambos nombres: symbol es lo que se operó en el broker de esta cuenta, e instrument es lo que pediste.

{ "data": { "id": "…", "symbol": "XAUUSD.a", "instrument": "XAUUSD", "state": "filled", "filledPrice": "2351.20" } }

La traducción nunca llega al broker y no agrega tiempo a la orden. Se decide a partir de una lista que fxapis ya tiene, y se rechaza, antes de enviar nada, cuando no se puede hacer de forma segura:

CódigoEstadoSignificado
INSTRUMENT_NOT_OFFERED422El broker de esta cuenta no ofrece el instrumento. (Un símbolo que el broker lista pero en el que esta cuenta no puede abrir posiciones nunca se asigna automáticamente: vuelve como INSTRUMENT_AMBIGUOUS, con ese motivo en details).
INSTRUMENT_AMBIGUOUS422El broker tiene más de un símbolo plausible (por ejemplo, un índice al contado y un futuro). details los lista; envía el que quieras como symbol.
UNKNOWN_INSTRUMENT400No es un instrumento de la lista. Envía un symbol del broker en su lugar.
SYMBOLS_NOT_SYNCED409La cuenta nunca ha estado en línea —o su nombre de servidor cambió mientras estaba fuera de línea—, así que todavía no se conocen los símbolos de su broker. Ponla en línea una vez.

symbol sigue funcionando exactamente como antes; envía uno u otro, no ambos. Las órdenes pendientes aceptan instrument de la misma forma.

Cómo se elige un símbolo

Cuando una cuenta se pone en línea, fxapis lee cada símbolo que su broker le ofrece, con la especificación de contrato de cada uno, y asigna los instrumentos a ellos:

  • Gana el propio nombre del instrumento. Un broker que tiene XAUUSD se opera como XAUUSD, aunque también tenga XAUUSD.r.
  • Si no, un nombre que los brokers usan para él, sin el sufijo del broker: XAUUSD.a, XAUUSDm, GOLD, US30.cash, DJ30.
  • El contrato tiene que coincidir. Cuando un mercado tiene un contrato estándar (100 onzas de oro por lote, 100,000 unidades de un par de divisas), nunca se elige un símbolo con un tamaño de contrato distinto, por bueno que sea su nombre. El oro cotizado por gramo nunca se toma por oro por onza.
  • No se adivina entre dos símbolos plausibles. El instrumento se marca como ambiguous con ambos candidatos, y una orden que lo nombra se rechaza hasta que nombres uno.
  • Un símbolo que la cuenta no puede operar (desactivado, o solo de cierre) nunca se elige.

Consulta el resultado para cualquier cuenta:

curl -sS "https://api.fxapis.com/v1/accounts/$ACCOUNT_ID/instruments" -H "Authorization: Bearer $FXAPIS_KEY"
{
  "data": [
    { "instrument": "XAUUSD", "status": "mapped", "symbol": "XAUUSD.a", "reason": "its name once the broker's suffix is removed, contract size agrees", "candidates": [] },
    { "instrument": "US30", "status": "ambiguous", "symbol": null, "candidates": [
      { "symbol": "US30.cash", "confidence": 0.95, "reason": "its name once the broker's suffix is removed" },
      { "symbol": "US30.fut", "confidence": 0.95, "reason": "its name once the broker's suffix is removed" }
    ] },
    { "instrument": "BTCUSD", "status": "missing", "symbol": null, "candidates": [] }
  ],
  "meta": { "syncedAt": "2026-10-03T00:42:48Z", "server": "VantageInternational-Live 11", "symbolCount": 812 }
}

Vale la pena llamarlo cuando un miembro se conecta: dile de inmediato cuáles de tus instrumentos puede seguir su cuenta.

Los símbolos de un broker

curl -sS "https://api.fxapis.com/v1/accounts/$ACCOUNT_ID/symbols?search=gold" -H "Authorization: Bearer $FXAPIS_KEY"
{
  "data": [
    {
      "name": "XAUUSD.a",
      "description": "Gold vs US Dollar",
      "path": "Metals\\XAUUSD.a",
      "digits": 2,
      "contractSize": 100,
      "volumeMin": 0.01,
      "volumeMax": 50,
      "volumeStep": 0.01,
      "tradable": true,
      "currencyBase": "XAU",
      "currencyProfit": "USD",
      "currencyMargin": "USD"
    }
  ],
  "meta": { "syncedAt": "2026-10-03T00:42:48Z", "server": "VantageInternational-Live 11", "symbolCount": 812 },
  "page": { "hasMore": false, "nextCursor": null }
}

Cada símbolo que el broker ofrece a esta cuenta, tal como se leyó la última vez que la cuenta estuvo en línea, así que responde mientras la cuenta está fuera de línea. Parámetros de consulta:

Parámetro
searchSolo los símbolos cuyo nombre o descripción contiene esto.
tradabletrue para los símbolos en los que esta cuenta puede abrir posiciones; false para el resto.
limit, cursorHasta 1,000 por página; pasa nextCursor como cursor para la siguiente.

volumeMin, volumeStep y volumeMax son lo que el tamaño de lote de un miembro debe respetar en ese broker. contractSize es lo que equivale a un lote.

Horario de mercado

Cada broker define su propio horario para cada símbolo: cuándo abre el forex el domingo por la noche, cuándo hace el oro su pausa diaria, si las criptomonedas operan el fin de semana. fxapis lo lee del broker del miembro —SymbolInfoSessionTrade de MetaTrader, para cada símbolo—, así que una pantalla de señales puede mostrar el horario real del miembro en lugar de una suposición.

curl -sS "https://api.fxapis.com/v1/accounts/$ACCOUNT_ID/sessions?instrument=XAUUSD" -H "Authorization: Bearer $FXAPIS_KEY"
{
  "data": {
    "symbol": "XAUUSD",
    "instrument": "XAUUSD",
    "server": "VantageMarkets-Demo",
    "utcOffsetSeconds": 10800,
    "sessionsSyncedAt": "2026-10-03T02:41:10Z",
    "openNow": false,
    "nextOpen": "2026-10-04T22:01:00Z",
    "nextClose": null,
    "trade": {
      "server": [
        { "day": "monday", "open": "01:01", "close": "23:58" },
        { "day": "tuesday", "open": "01:01", "close": "23:58" }
      ],
      "utc": [
        { "day": "sunday", "open": "22:01", "close": "24:00" },
        { "day": "monday", "open": "00:00", "close": "20:58" }
      ]
    },
    "quote": { "server": [], "utc": [] }
  }
}
  • Nombra un instrument (se usa el símbolo de esta cuenta para él) o el symbol del broker.
  • trade es cuándo se pueden enviar órdenes; quote es cuándo se cotizan precios. Cada uno se da en la hora del servidor del broker —como los muestra su plataforma— y en UTC.
  • utcOffsetSeconds es el reloj del broker menos UTC, medido desde la terminal cuando se leyó el horario; muchos brokers lo cambian con el horario de verano, y la actualización diaria lo sigue.
  • openNow, nextOpen y nextClose se calculan en el momento en que preguntas. Un mercado abierto toda la semana (la mayoría de las criptomonedas) no tiene próxima apertura ni próximo cierre.
  • close: "24:00" es el final del día. Un mercado abierto a través de la medianoche aparece como dos ventanas.

GET /v1/accounts/{id}/symbols también lleva las sessions de cada símbolo, en hora del servidor, con meta.utcOffsetSeconds.

El horario es el calendario configurado por el broker. Un feriado que el broker no carga en él no aparece aquí, y en ese día una orden se rechaza con ORDER_REJECTED (Market closed): no se abre nada. Se lee más o menos un minuto después de que la cuenta se pone en línea por primera vez, y luego a diario; hasta entonces el endpoint responde 409 SESSIONS_NOT_SYNCED.

Cuándo se lee la lista

  • Cuando una cuenta se pone en línea, si fxapis no tiene una lista para ella, la lista es de otro nombre de servidor o tiene un día de antigüedad.
  • Cuando lo pides: POST /v1/accounts/{id}/symbols/sync la vuelve a leer ahora. La cuenta tiene que estar en línea (ready). La mayoría de las integraciones nunca lo necesitan.

Una cuenta que nunca ha estado en línea todavía no tiene lista. GET /v1/accounts/{id}/symbols y GET /v1/accounts/{id}/instruments responden 409 SYMBOLS_NOT_SYNCED, igual que una orden que nombra un instrumento. Poner la cuenta en línea una vez mientras el miembro todavía está en la pantalla de conexión —lo que la guía de señales ya hace para comprobar la contraseña— lo resuelve.

En esta página