1Forge Forex Stream

WebSocket stream that delivers real-time bid/ask updates for subscribed forex and cryptocurrency pairs. Streaming is gated to paid plans.

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/1forge-forex-stream"
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.

AsyncAPI Specification

1forge-forex-stream-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: 1Forge Forex Stream API
  version: '2024.01'
  description: |-
    1Forge streams real-time forex and cryptocurrency price updates over a single
    WebSocket connection at `wss://sockets.1forge.com/socket`. Messages are
    pipe-delimited text frames: `{action}|{body}`, where the body is either a single
    string token or a JSON document for `update` events.

    Clients must authenticate with their API key immediately after the socket opens
    and may subscribe to specific pairs, to all pairs, or unsubscribe at any time.
    WebSocket streaming is not available on free plans.
  contact:
    name: 1Forge Support
    email: contact@1forge.com
    url: https://1forge.com/forex-data-api
  license:
    name: 1Forge Forex API Terms of Use
    url: https://1forge.com/terms
  x-generated-from: documentation
  x-last-validated: '2026-05-28'
servers:
  production:
    url: sockets.1forge.com/socket
    protocol: wss
    description: 1Forge production WebSocket stream.
defaultContentType: text/plain
channels:
  stream:
    description: Single bidirectional channel for control and price-update frames.
    subscribe:
      operationId: receiveStreamFrames
      summary: Receive incoming control or update frames from the 1Forge server.
      message:
        oneOf:
          - $ref: '#/components/messages/LoginPrompt'
          - $ref: '#/components/messages/PostLoginSuccess'
          - $ref: '#/components/messages/Heart'
          - $ref: '#/components/messages/Update'
          - $ref: '#/components/messages/ForceClose'
    publish:
      operationId: sendStreamFrames
      summary: Send control frames (login, subscribe/unsubscribe, heartbeat) to the 1Forge server.
      message:
        oneOf:
          - $ref: '#/components/messages/LoginCommand'
          - $ref: '#/components/messages/SubscribeTo'
          - $ref: '#/components/messages/UnsubscribeFrom'
          - $ref: '#/components/messages/SubscribeToAll'
          - $ref: '#/components/messages/UnsubscribeFromAll'
          - $ref: '#/components/messages/Beat'
components:
  messages:
    LoginPrompt:
      name: LoginPrompt
      title: Login prompt
      summary: Server requests the client send its API key.
      payload:
        type: string
        const: login
        example: login
    LoginCommand:
      name: LoginCommand
      title: Login command
      summary: Client sends API key for authentication.
      payload:
        type: string
        description: Frame of the form `login|{api_key}`.
        example: login|YOUR_API_KEY
      examples:
        - name: LoginCommandDefaultExample
          summary: Default LoginCommand example payload
          x-microcks-default: true
          payload: login|YOUR_API_KEY
    PostLoginSuccess:
      name: PostLoginSuccess
      title: Login success acknowledgement
      summary: Server confirms authentication succeeded.
      payload:
        type: string
        const: post_login_success
        example: post_login_success
    SubscribeTo:
      name: SubscribeTo
      title: Subscribe to symbol
      summary: Subscribe to updates for a single currency pair.
      payload:
        type: string
        description: Frame of the form `subscribe_to|{symbol}`.
        example: subscribe_to|EUR/USD
    UnsubscribeFrom:
      name: UnsubscribeFrom
      title: Unsubscribe from symbol
      summary: Unsubscribe from updates for a single currency pair.
      payload:
        type: string
        example: unsubscribe_from|EUR/USD
    SubscribeToAll:
      name: SubscribeToAll
      title: Subscribe to all
      summary: Subscribe to updates for every available pair.
      payload:
        type: string
        const: subscribe_to_all
        example: subscribe_to_all
    UnsubscribeFromAll:
      name: UnsubscribeFromAll
      title: Unsubscribe from all
      summary: Unsubscribe from every pair currently subscribed.
      payload:
        type: string
        const: unsubscribe_from_all
        example: unsubscribe_from_all
    Update:
      name: Update
      title: Price update
      summary: Real-time bid/ask/price update for a subscribed currency pair.
      payload:
        $ref: '#/components/schemas/Quote'
      examples:
        - name: UpdateDefaultExample
          summary: Default Update example payload
          x-microcks-default: true
          payload:
            s: EUR/USD
            p: 1.181
            b: 1.18099
            a: 1.18101
            t: 1502160794
    Heart:
      name: Heart
      title: Heartbeat prompt
      summary: Server keep-alive prompt; clients respond with `beat`.
      payload:
        type: string
        const: heart
        example: heart
    Beat:
      name: Beat
      title: Heartbeat response
      summary: Client keep-alive response to a server `heart` frame.
      payload:
        type: string
        const: beat
        example: beat
    ForceClose:
      name: ForceClose
      title: Forced disconnect
      summary: Server instructs the client to close the connection.
      payload:
        type: string
        const: force_close
        example: force_close
  schemas:
    Quote:
      title: Quote
      description: A single bid/ask/price snapshot for a forex or cryptocurrency pair streamed over WebSocket.
      type: object
      required:
        - s
        - p
        - b
        - a
        - t
      properties:
        s:
          type: string
          description: Currency pair symbol in `BASE/QUOTE` notation.
          example: EUR/USD
        p:
          type: number
          format: double
          description: Last traded price (midpoint of bid/ask).
          example: 1.181
        b:
          type: number
          format: double
          description: Current bid price.
          example: 1.18099
        a:
          type: number
          format: double
          description: Current ask price.
          example: 1.18101
        t:
          type: integer
          format: int64
          description: Unix epoch timestamp (seconds) of the quote.
          example: 1502160794