Moneyhub Holdings API

The holdings API from Moneyhub — 3 operation(s) for holdings.

Operations 3

GET /accounts/{accountId}/holdings Retrieve the holdings for an account
GET /accounts/{accountId}/holdings/{holdingId} Retrieves a single holding for an account with matched ISIN codes
GET /accounts/{accountId}/holdings-with-matches Retrieve the holdings for an account with matched ISIN codes

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/moneyhub-holdings-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

moneyhub-holdings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Documentation for the Moneyhub data API. <br/>Authentication is via bearer token. <br/>
  title: Moneyhub Data Holdings API
  version: 2.0.0
  x-build-sha: 5d5191d
servers:
- url: https://api.moneyhub.co.uk/v2.0
security:
- Bearer: []
tags:
- name: holdings
paths:
  /accounts/{accountId}/holdings:
    get:
      summary: Retrieve the holdings for an account
      description: Requires **accounts:read** scope.
      parameters:
      - description: The Account Id
        in: path
        name: accountId
        required: true
        x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful Holdings Response
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/HoldingsValuation'
                    type: array
                  links:
                    $ref: '#/components/schemas/Links'
                  meta:
                    type: object
                type: object
        '401':
          description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Unsuccessful Response - Forbidden - Invalid scopes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Unsuccessful Response - Resource Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - holdings
  /accounts/{accountId}/holdings/{holdingId}:
    get:
      summary: Retrieves a single holding for an account with matched ISIN codes
      description: Requires **accounts:read** scope.
      parameters:
      - description: The Account Id
        in: path
        name: accountId
        required: true
        x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
        schema:
          type: string
          format: uuid
      - description: The Holding Id
        in: path
        name: holdingId
        required: true
        x-example: 0b4e6488-6de0-420c-8f56-fee665707d58
        schema:
          type: string
      responses:
        '200':
          description: Successful Holding Response
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/HoldingWithMatchesAndHistory'
                  links:
                    $ref: '#/components/schemas/Links'
                  meta:
                    type: object
                type: object
        '401':
          description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Unsuccessful Response - Forbidden - Invalid scopes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Unsuccessful Response - Resource Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - holdings
  /accounts/{accountId}/holdings-with-matches:
    get:
      summary: Retrieve the holdings for an account with matched ISIN codes
      description: Requires **accounts:read** scope.
      parameters:
      - description: The Account Id
        in: path
        name: accountId
        required: true
        x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Successful Holdings Response
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/HoldingWithMatches'
                    type: array
                  links:
                    $ref: '#/components/schemas/Links'
                  meta:
                    type: object
                type: object
        '401':
          description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Unsuccessful Response - Forbidden - Invalid scopes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Unsuccessful Response - Resource Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - holdings
components:
  schemas:
    Links:
      additionalProperties: false
      properties:
        next:
          description: The url to retrieve the next page of results from
          format: uri
          type: string
        prev:
          description: The url to retrieve the previous page of results from
          format: uri
          type: string
        self:
          description: The url of the current resource(s)
          format: uri
          type: string
      required:
      - self
      type: object
    HoldingsValuation:
      additionalProperties: false
      type: object
      properties:
        date:
          description: Date of the valuation
          example: '2018-07-11'
          format: date
          type: string
        items:
          items:
            additionalProperties: false
            type: object
            properties:
              id:
                description: The unique identity of the holding.
                example: ac9bd177-d01e-449c-9f29-d3656d2edc2e
                type: string
              codes:
                items:
                  additionalProperties: false
                  properties:
                    code:
                      example: GB00B39TQT96
                      type: string
                    type:
                      enum:
                      - ISIN
                      - SEDOL
                      - MEX
                      example: ISIN
                      type: string
                  type: object
                type: array
              description:
                example: Dynamic Bond Fund
                type: string
              quantity:
                description: The total number of units. This value reflects the quantity of the holding in its local currency context and is used to calculate the total value as unitPrice * quantity.
                example: 100
                type: number
              total:
                properties:
                  value:
                    description: The total value of the holding in minor units of the currency (e.g. pence for GBP).
                    example: 123400
                    type: number
                  currency:
                    description: The currency of the total.
                    example: GBP
                    type: string
                required:
                - value
                - currency
                type: object
              unitPrice:
                properties:
                  value:
                    description: The price per unit in minor units of the holding. Provided by the holdings data source in its original currency.
                    example: 1234
                    type: number
                  currency:
                    description: The currency of the unit price.
                    example: GBP
                    type: string
                required:
                - value
                - currency
                type: object
              costBasis:
                description: In a one-off security purchase, the cost basis is the quantity acquired multiplied by the price paid per unit plus any commission. In the event the same position is acquired in different lots on different days at different prices, the sum total of the cost incurred is divided by the total units acquired to arrive at the average cost basis.
                example: 120050
                type: number
              currency:
                description: The currency of the holding
                example: GBP
                type: string
            required:
            - description
            - quantity
            - unitPrice
            - total
            - codes
          type: array
      required:
      - date
      - items
    HoldingWithMatches:
      additionalProperties: false
      type: object
      properties:
        date:
          description: Date of the valuation
          example: '2018-07-11'
          format: date
          type: string
        id:
          description: The id of the holding
          example: 6a8b01768a50b095a8c0445c1b080900f1096fd0b6e40863c6b82d63607c3bbe
          type: string
        matched:
          items:
            additionalProperties: false
            properties:
              isin:
                description: The ISIN code of the match
                example: GB00B39TQT96
                type: string
              name:
                description: The name of the match
                example: Dynamic Bond Fund Acc
                type: string
              score:
                example: 0.8
                type: number
              priceGBP:
                description: The unit price of the holding match converted to GBP. The unitPrice is converted from the local currency (e.g. USD) to GBP on a daily basis during our import of holdings data.
                example: 12.34
                type: number
              price:
                properties:
                  value:
                    description: The unit price in minor units of the currency (e.g. pence for GBP)
                    example: 1234
                    type: number
                  currency:
                    description: The currency of the matched holding
                    example: GBP
                    type: string
                required:
                - value
                - currency
                type: object
              date:
                description: Date of the valuation
                example: '2018-07-11'
                format: date
                type: string
            type: object
          type: array
        codes:
          items:
            additionalProperties: false
            properties:
              code:
                example: GB00B39TQT96
                type: string
              type:
                enum:
                - ISIN
                - SEDOL
                - MEX
                example: ISIN
                type: string
            type: object
          type: array
        name:
          example: Dynamic Bond Fund
          type: string
        quantity:
          description: The total number of units. This value reflects the quantity of the holding in its local currency context and is used to calculate the total value as unitPrice * quantity.
          example: 100
          type: number
        total:
          properties:
            value:
              description: The value of the total in minor units of the currency, eg. pennies for GBP.
              example: 123400
              type: number
            currency:
              description: The currency of the total.
              example: GBP
              type: string
          required:
          - value
          - currency
          type: object
        unitPrice:
          properties:
            value:
              description: The price per unit of the holding. Provided by the holdings data source in its original currency.
              example: 1234
              type: number
            currency:
              description: The currency of the unit price.
              example: GBP
              type: string
          required:
          - value
          - currency
          type: object
        costBasis:
          description: In a one-off security purchase, the cost basis is the quantity acquired multiplied by the price paid per unit plus any commission. In the event the same position is acquired in different lots on different days at different prices, the sum total of the cost incurred is divided by the total units acquired to arrive at the average cost basis.
          example: 120050
          type: number
        currency:
          description: The currency of the holding
          example: GBP
          type: string
      required:
      - name
      - quantity
      - unitPrice
      - total
      - codes
      - id
      - matched
    HoldingWithMatchesAndHistory:
      additionalProperties: false
      type: object
      properties:
        id:
          description: The id of the holding
          example: 6a8b01768a50b095a8c0445c1b080900f1096fd0b6e40863c6b82d63607c3bbe
          type: string
        date:
          description: Date of the valuation
          example: '2018-07-11'
          format: date
          type: string
        history:
          items:
            additionalProperties: false
            properties:
              total:
                properties:
                  value:
                    description: The value of the total in minor units of the currency, eg. pennies for GBP.
                    example: 123400
                    type: number
                  currency:
                    description: The currency of the total.
                    example: GBP
                    type: string
                required:
                - value
                - currency
                type: object
              unitPrice:
                properties:
                  value:
                    description: The value of the unit price in minor units of the currency, eg. pennies for GBP.
                    example: 1234
                    type: number
                  currency:
                    description: The currency of the unit price.
                    example: GBP
                    type: string
                required:
                - value
                - currency
                type: object
              costBasis:
                description: In a one-off security purchase, the cost basis is the quantity acquired multiplied by the price paid per unit plus any commission. In the event the same position is acquired in different lots on different days at different prices, the sum total of the cost incurred is divided by the total units acquired to arrive at the average cost basis.
                example: 120050
                type: number
              quantity:
                description: The total number of units held for this security at the specified historical date.
                example: 100
                type: number
              date:
                description: Date of the valuation
                example: '2018-07-11'
                format: date
                type: string
            type: object
          type: array
        matched:
          items:
            additionalProperties: false
            properties:
              isin:
                description: The ISIN code of the match
                example: GB00B39TQT96
                type: string
              name:
                description: The name of the match
                example: Dynamic Bond Fund Acc
                type: string
              score:
                example: 0.8
                type: number
              priceGBP:
                description: The unit price of the holding match converted to GBP. The unitPrice is converted from the local currency (e.g. USD) to GBP on a daily basis during our import of holdings data.
                example: 12.34
                type: number
              price:
                properties:
                  value:
                    description: The unit price in minor units of the currency (e.g. pence for GBP)
                    example: 1234
                    type: number
                  currency:
                    description: The currency of the matched holding
                    example: GBP
                    type: string
                required:
                - value
                - currency
                type: object
              date:
                description: Date of the valuation
                example: '2018-07-11'
                format: date
                type: string
            type: object
          type: array
        codes:
          items:
            additionalProperties: false
            properties:
              code:
                example: GB00B39TQT96
                type: string
              type:
                enum:
                - ISIN
                - SEDOL
                - MEX
                example: ISIN
                type: string
            type: object
          type: array
        name:
          example: Dynamic Bond Fund
          type: string
        quantity:
          description: The total number of units. This value reflects the quantity of the holding in its local currency context and is used to calculate the total value as unitPrice * quantity.
          example: 100
          type: number
        total:
          properties:
            value:
              description: The value of the total in minor units of the currency, eg. pennies for GBP.
              example: 123400
              type: number
            currency:
              description: The currency of the total.
              example: GBP
              type: string
          required:
          - value
          - currency
          type: object
        unitPrice:
          properties:
            value:
              description: The price per unit of the holding. Provided by the holdings data source in its original currency.
              example: 1234
              type: number
            currency:
              description: The currency of the unit price.
              example: GBP
              type: string
          required:
          - value
          - currency
          type: object
        costBasis:
          description: In a one-off security purchase, the cost basis is the quantity acquired multiplied by the price paid per unit plus any commission. In the event the same position is acquired in different lots on different days at different prices, the sum total of the cost incurred is divided by the total units acquired to arrive at the average cost basis.
          example: 120050
          type: number
        currency:
          description: The currency of the holding
          example: GBP
          type: string
      required:
      - name
      - quantity
      - unitPrice
      - total
      - codes
      - history
      - matched
      - id
    Error:
      additionalProperties: false
      properties:
        code:
          description: The error code
          type: string
        message:
          description: The error message
          type: string
        correlationId:
          description: Id that identifies the request and can be used to ask for more details related to the error
          type: string
        id:
          description: Id of the resource
          type: string
        userId:
          description: UserId of the resource
          type: string
      required:
      - code
      type: object
  securitySchemes:
    Bearer:
      type: apiKey
      name: Authorization
      in: header