AltoIRA Investment API

The actions are performed as the manager of an offering, not as a specific user. Authentication uses the `Basic Auth` header (same as the Offering endpoints)

Operations 5

GET /api/platform/offering/{external_id}/{alto_user_id}/investment View specific details of existing investments #
POST /api/platform/investment/{external_id}/{alto_user_id}/refund Refund the investor some/all of their capital #
POST /api/platform/investment/{external_id}/{alto_user_id}/cancel Cancel investment if funds haven't already been sent #
POST /api/platform/investment/{external_id}/{alto_user_id}/distribution Pay out a distribution #
POST /api/platform/investment/{external_id}/{alto_user_id}/issue_new_capital_call Issue a new capital call #

Documentation

Specifications

Other Resources

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/altoira-investment-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

altoira-investment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: AltoIRA.com Investment API
  contact:
    name: AltoIRA
    email: help@altoira.com
    url: https://www.altoira.com
  description: The actions are performed as the manager of an offering, not as a specific user. Authentication uses the `Basic Auth` header (same as the Offering endpoints)
servers:
- url: https://altoira.sandbox.altoira.com
  description: Test API / Sandbox
- url: https://www.altoira.com
  description: Production API
tags:
- name: investment
  description: The actions are performed as the manager of an offering, not as a specific user. Authentication uses the `Basic Auth` header (same as the Offering endpoints)
paths:
  /api/platform/offering/{external_id}/{alto_user_id}/investment:
    get:
      security:
      - PlatformAuth: []
      tags:
      - investment
      summary: View specific details of existing investments
      description: This endpoint allows you to retrieve details about one of your investments using the ID numbers you specified on creation (not the Alto offering ID).
      operationId: getInvestment
      parameters:
      - $ref: '#/components/parameters/external_id'
      - name: alto_user_id
        in: path
        required: true
        schema:
          type: number
      - name: investment_id
        in: query
        required: false
        description: (Optional) Scopes the lookup to a specific investment when the investor has more than one investment in this offering.
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Investment'
  /api/platform/investment/{external_id}/{alto_user_id}/refund:
    post:
      security:
      - PlatformAuth: []
      tags:
      - investment
      summary: Refund the investor some/all of their capital
      description: Used AFTER Alto has already wired the money to you when the deal is closing if the deal is canceled or prorated. You are sending us the NEW investment amount. Specifying 0 as the investment amount will remove the user from the deal. Alto will expect a wire to be sent for the difference between the new and old investment amount.
      operationId: investmentRefund
      parameters:
      - $ref: '#/components/parameters/external_id'
      - name: alto_user_id
        in: path
        required: true
        schema:
          type: number
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                refund_amount:
                  type: number
                  example: 200
                new_commitment_amount:
                  type: number
                  example: 800.35
                investment_currency:
                  type: string
                  enum:
                  - USD
      responses:
        '200':
          description: Successful
  /api/platform/investment/{external_id}/{alto_user_id}/cancel:
    post:
      security:
      - PlatformAuth: []
      tags:
      - investment
      summary: Cancel investment if funds haven't already been sent
      description: Used BEFORE Alto has wired any funds to effectively void an investment if the investor has changed their mind and doesn't wish to proceed.
      operationId: investmentCancel
      parameters:
      - $ref: '#/components/parameters/external_id'
      - name: alto_user_id
        in: path
        required: true
        schema:
          type: number
      responses:
        '200':
          description: Successful
        '422':
          description: The investment could not be cancelled. Returned when funds have already been sent, so a refund is required instead ("Cannot cancel, please issue a capital_refund."), or when no matching offering is found ("Offering not found").
  /api/platform/investment/{external_id}/{alto_user_id}/distribution:
    post:
      security:
      - PlatformAuth: []
      tags:
      - investment
      summary: Pay out a distribution
      operationId: investmentDistribution
      parameters:
      - $ref: '#/components/parameters/external_id'
      - name: alto_user_id
        in: path
        required: true
        schema:
          type: number
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  example: 200
                currency:
                  type: string
                  enum:
                  - USD
                distribution_type:
                  type: string
                  enum:
                  - dividend
                investment_id:
                  type: integer
                  example: 556
                  description: (Optional, integer) Scopes the response to the bank account tied to a specific investment. Use this when an investor holds more than one IRA and you need the correct account for a particular investment — the field resolves to that investment's IRA's bank account, regardless of how many investments exist on the offering. Must be a real investment ID belonging to this offering and user. Omitting it, or sending it blank/null, falls back to legacy behavior (no bank_account in the response). When provided and resolved successfully, the response includes a bank_account object for that investment's IRA.
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  distribution_transaction_id:
                    type: integer
                    example: 1234
                  bank_account:
                    type: object
                    description: Only present when investment_id was provided and successfully resolved to a specific investment.
                    properties:
                      bank:
                        type: string
                        example: Pinnacle Financial Partners 150 3rd Ave. South, Suite 900 Nashville, TN 37201
                      recipient:
                        type: string
                        example: Empire Trust, Inc 8801 Jefferson NE Bldg. C Albuquerque, NM 87113
                      routing_number:
                        type: string
                        example: '123456789'
                      account_number:
                        type: string
                        example: '12345689123'
        '404':
          description: Failure
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Investment not found for the given investment_id, offering, and user.
        '422':
          description: Failure
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: No bank account is configured for this investment's IRA.
        '503':
          description: Failure
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Unable to verify bank account information due to a temporary service issue; please retry.
  /api/platform/investment/{external_id}/{alto_user_id}/issue_new_capital_call:
    post:
      security:
      - PlatformAuth: []
      tags:
      - investment
      summary: Issue a new capital call
      operationId: issueNewCapitalCall
      parameters:
      - $ref: '#/components/parameters/external_id'
      - name: alto_user_id
        in: path
        required: true
        schema:
          type: number
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  example: 200
                currency:
                  type: string
                  enum:
                  - USD
      responses:
        '200':
          description: Successful
components:
  schemas:
    Investment:
      type: object
      properties:
        offering_details:
          type: object
          properties:
            offering_name:
              type: string
              example: Alto Solutions, Inc
            entity_type:
              type: string
              example: llc
            security_type:
              type: string
              example: Shares
        investment:
          type: object
          properties:
            investment_id:
              type: integer
              example: 556
              description: The Alto investment ID.
            external_investment_id:
              type:
              - string
              - 'null'
              example: inv_12345
              description: The ID you assigned to this investment on creation, or null if none was provided.
            amount_invested_to_date:
              type: number
              example: 8000
            amount_committed_to_invest:
              type: number
              example: 10000
            date_investor_esigned:
              type: string
              example: '2019-11-09T10:24:50.000000Z'
            investment_transactions:
              type: object
              properties:
                capital_calls:
                  type: array
                  items:
                    type: object
                    properties:
                      dollar_amount:
                        type: number
                        example: 8000
                      status:
                        type: string
                        example: approved
                        enum:
                        - pending
                        - final_review
                        - approved
                        - cancelled
                      date_created:
                        type: string
                        example: '2020-01-23'
                investments:
                  type: array
                  items:
                    type: object
                    properties:
                      dollar_amount:
                        type: number
                        example: 8000
                      status:
                        type: string
                        example: completed
                        enum:
                        - pending
                        - cancelled
                        - completed
                        - hold
                      date_requested:
                        type: string
                        example: '2020-01-23'
                      date_funds_sent:
                        type: string
                        example: '2020-01-24'
                      date_completed:
                        type: string
                        example: '2020-01-24'
                investment_refunds:
                  type: array
                  items:
                    type: object
                    properties:
                      dollar_amount:
                        type: number
                        example: 8000
                      status:
                        type: string
                        example: completed
                        enum:
                        - pending
                        - cancelled
                        - completed
                        - hold
                      date_requested:
                        type: string
                        example: '2020-01-23'
                      date_funds_sent:
                        type: string
                        example: '2020-01-24'
                      date_completed:
                        type: string
                        example: '2020-01-24'
                distributions:
                  type: array
                  items:
                    type: object
                    properties:
                      dollar_amount:
                        type: number
                        example: 8000
                      distribution_type:
                        type: string
                        example: capital_gains
                      status:
                        type: string
                        example: pending
                        enum:
                        - pending
                        - cancelled
                        - completed
                        - hold
                      date_requested:
                        type: string
                        example: '2020-01-23'
                      date_funds_sent:
                        type: string
                        example: '2020-01-24'
                      date_completed:
                        type: string
                        example: '2020-01-24'
  parameters:
    external_id:
      name: external_id
      example: '12345'
      in: path
      description: The ID you use internally to identify this Offering
      required: true
      schema:
        type: string
  securitySchemes:
    PlatformAuth:
      type: http
      scheme: basic
      description: Basic Auth credentials that were assigned to you by Alto
    UserAuth:
      type: http
      scheme: bearer
      description: 'Specify the OAuth token generated by calling /oauth/token. It will be used in the "Authorization: Bearer" header'
    UserOauth:
      type: oauth2
      description: Redirect your users to /oauth/authorize to get started (see the OAuth section on this documentation)
      flows:
        authorizationCode:
          authorizationUrl: https://altoira.sandbox.altoira.com/oauth/authorize
          tokenUrl: https://altoira.sandbox.altoira.com/oauth/token
          refreshUrl: https://altoira.sandbox.altoira.com/oauth/token/refresh
          scopes: {}
externalDocs:
  description: Webhooks
  url: https://altoira.sandbox.altoira.com/documents/webhooks.txt
x-readme:
  explorer-enabled: true
  proxy-enabled: true
  samples-enabled: true