Altruist Positions API

The positions API from Altruist — 2 operation(s) for positions.

Operations 2

GET /api/v1/positions/{account_id} Get the most recent positions for a given account #
GET /v2/accounts/{account_id}/positions Get the most recent positions for a given account #

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/altruist:altruist-positions-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

altruist-positions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 0.0.2
  title: Altruist Open Positions API
  description: A RESTFul API for accessing information from the Altruist Platform. Intended for partners that integrate with the Altruist Platform to access information that is maintained on the platform
  license:
    name: MIT
servers:
- url: https://openapi.altruist.com/altruist-open-api/
security:
- Authorization:
  - households:read
  - accounts:read
  - positions:read
  - cost_basis:read
  - transactions:read
tags:
- name: Positions
paths:
  /api/v1/positions/{account_id}:
    get:
      summary: Get the most recent positions for a given account
      description: Get the most recent positions for a given account Returns a list of the most recent positions within a given account
      operationId: listPositions
      tags:
      - Positions
      parameters:
      - name: account_id
        in: path
        description: ID of the account
        required: true
        schema:
          type: string
        example: c87d1cd9511f5ab47d2eb9b55afb0bf6a23346e6af9b8b7e709a19389b93e989
      - name: page
        in: query
        description: desired page number, defaults to 0
        required: false
        schema:
          type: integer
          format: int32
        example: 1
      - name: page_size
        in: query
        description: desired number of entries per page, defaults to 100, max value is 1000
        required: false
        schema:
          type: integer
          format: int32
        example: 25
      - name: X-API-Request-ID
        in: header
        description: household-provided request id
        required: false
        schema:
          type: string
        example: 2f047e95
      responses:
        '200':
          description: A successful response for /positions request
          content:
            application/json:
              schema:
                type: object
                properties:
                  paging:
                    $ref: '#/components/schemas/Pagination'
                    description: paging information for response
                  data:
                    $ref: '#/components/schemas/Positions'
                    description: a list of positions
              examples:
                first:
                  value:
                    paging:
                      page: 1
                      page_size: 25
                      total_pages: 3
                    data:
                      account_id: c87d1cd9511f5ab47d2eb9b55afb0bf6a23346e6af9b8b7e709a19389b93e989
                      positions:
                      - id: f5b46399dcd17b3a6e4f7142801a32742b3e56c3fa8216a4b518f0e78a91aac2
                        cusip: 46429B663
                        symbol: HDV
                        description: ISHARES CORE HIGH DIVIDEND ETF
                        long_short_indicator: long
                        currency_code: USD
                        quantity: 50
                        as_of_date: 2022/08/15
                        security_type: ETF
                        market_value: 5100
                      - id: 974833d6fe6da59bfd66d2ad8f2fe8fd21221e396a167449266b33f1ee1ee5b1
                        cusip: 46429B663
                        symbol: EFA
                        description: ISHARES MSCI EAFE ETF
                        long_short_indicator: long
                        currency_code: USD
                        quantity: 100
                        as_of_date: 2022/08/15
                        security_type: ETF
                        market_value: 7200
        '400':
          description: Bad request error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: bad_request
                    message: invalid or missing user id
        '403':
          description: Unauthorized error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: unauthorized
                    message: user is not authorized
        '404':
          description: Not found error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: resource_not_found
                    message: Account not found
        '500':
          description: Internal error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: internal_error
                    message: unable to connect to the data source
      security:
      - Authorization:
        - positions:read
  /v2/accounts/{account_id}/positions:
    get:
      summary: Get the most recent positions for a given account
      description: Get the most recent positions for a given account Returns a list of the most recent positions within a given account
      operationId: listPositionsV2
      tags:
      - Positions
      parameters:
      - name: account_id
        in: path
        description: ID of the account
        required: true
        schema:
          type: string
        example: c87d1cd9511f5ab47d2eb9b55afb0bf6a23346e6af9b8b7e709a19389b93e989
      - name: page
        in: query
        description: desired page number, defaults to 0
        required: false
        schema:
          type: integer
          format: int32
        example: 1
      - name: page_size
        in: query
        description: desired number of entries per page, defaults to 100, max value is 1000
        required: false
        schema:
          type: integer
          format: int32
        example: 25
      responses:
        '200':
          description: A successful response for /positions request
          content:
            application/json:
              schema:
                type: object
                properties:
                  paging:
                    $ref: '#/components/schemas/Pagination'
                    description: paging information for response
                  data:
                    $ref: '#/components/schemas/Positions'
                    description: a list of positions
              examples:
                first:
                  value:
                    paging:
                      page: 1
                      page_size: 25
                      total_pages: 3
                    data:
                      account_id: c87d1cd9511f5ab47d2eb9b55afb0bf6a23346e6af9b8b7e709a19389b93e989
                      positions:
                      - id: f5b46399dcd17b3a6e4f7142801a32742b3e56c3fa8216a4b518f0e78a91aac2
                        cusip: 46429B663
                        symbol: HDV
                        description: ISHARES CORE HIGH DIVIDEND ETF
                        long_short_indicator: long
                        currency_code: USD
                        quantity: 50
                        as_of_date: 2022/08/15
                        security_type: ETF
                        market_value: 5100
                      - id: 974833d6fe6da59bfd66d2ad8f2fe8fd21221e396a167449266b33f1ee1ee5b1
                        cusip: 46429B663
                        symbol: EFA
                        description: ISHARES MSCI EAFE ETF
                        long_short_indicator: long
                        currency_code: USD
                        quantity: 100
                        as_of_date: 2022/08/15
                        security_type: ETF
                        market_value: 7200
        '400':
          description: Bad request error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: bad_request
                    message: invalid or missing user id
        '403':
          description: Unauthorized error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: unauthorized
                    message: user is not authorized
        '404':
          description: Not found error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: resource_not_found
                    message: Account not found
        '500':
          description: Internal error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                first:
                  value:
                    error_type: internal_error
                    message: unable to connect to the data source
      security:
      - Authorization:
        - positions:read
components:
  schemas:
    Pagination:
      type: object
      description: Description of a paginated response
      properties:
        page:
          type: integer
          format: int32
          description: Desired page number, default is 0
          default: 0
          example: 1
        page_size:
          type: integer
          format: int32
          description: Page size, default is 100 items
          default: 100
          example: 25
        total_pages:
          type: integer
          format: int32
          description: Total number of pages
          default: 1
          example: 3
      required:
      - page
      - page_size
      - total_pages
    Error:
      type: object
      required:
      - error_type
      - message
      properties:
        error_type:
          type: string
          description: Describes the type or source of error
          enum:
          - internal_error
          - bad_request
          - dependency_unavailable
          - resource_not_found
          - resource_already_exists
          - unauthorized
          example: unauthorized
        message:
          type: string
          description: Error message corresponding to the error code
          example: User is not authorized
    Position:
      type: object
      description: A description of a Position
      required:
      - id
      - cusip
      - symbol
      - currency_code
      - quantity
      - as_of_date
      properties:
        id:
          type: string
          example: 730f75dafd73e047b86acb2dbd74e75dcb93272fa084a9082848f2341aa1abb6
          description: the id has length of 64 lower-case alphanumeric chars
        cusip:
          type: string
          example: 46429B663
        symbol:
          type: string
          example: HDV
        description:
          type: string
          example: ISHARES CORE HIGH DIVIDEND ETF
        security_type:
          type: string
          example: null
        currency_code:
          type: string
          example: USD
        quantity:
          type: number
          example: 50
        market_value:
          type: number
          example: 5100
        price:
          type: number
          example: 20
        as_of_date:
          type: string
          example: 2021/03/11
    Positions:
      type: object
      description: A description of positions within a given account
      properties:
        account_id:
          type: string
          description: Account Id
          example: 20f2d5c4ef1a51e6d0a002518b1da224fe64f5a60d458dcbc5cb25231af3bed8
        positions:
          type: array
          description: A list of Positions
          items:
            $ref: '#/components/schemas/Position'
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: Access Token
x-provenance:
  method: searched
  source: https://developer.altruist.com/reference
  harvested: '2026-10-13'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developer.altruist.com/reference/accountsv1.md
  - https://developer.altruist.com/reference/accountsv2.md
  - https://developer.altruist.com/reference/costbasisv1.md
  - https://developer.altruist.com/reference/costbasisv2.md
  - https://developer.altruist.com/reference/disabledatafeedbyid.md
  - https://developer.altruist.com/reference/enabledatafeed.md
  - https://developer.altruist.com/reference/getdatafeedbyid.md
  - https://developer.altruist.com/reference/getdatafeeds.md
  - https://developer.altruist.com/reference/householdsv1.md
  - https://developer.altruist.com/reference/householdsv2.md
  - https://developer.altruist.com/reference/positionsv1.md
  - https://developer.altruist.com/reference/positionsv2.md
  - https://developer.altruist.com/reference/requesthistoricaldatafile.md
  - https://developer.altruist.com/reference/transactionsv2.md
  merge:
    pages: 14
    deduped: 45
    conflicts_kept_first: 0