---
updatedAt: 2025-09-02T14:38:13.000Z
agentTools:
  projectIndex: https://help.investglass.com/llms.txt
---

# Fetch proposal states

Fetch proposal states from the company

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "InvestGlass Client Portal APIs",
    "description": "# Introduction\n\nThis is the **InvestGlass** **API**, where, if you are a registered user, call the functions you and your company already is used to. We at [InvestGlass](https://www.investglass.com) are starting our journey as API providers to offer our customers a smoother and more interoperable service. **InvestGlass** **API** provides methods for retrieving data from financial institutions on behalf of clients, advisors, and other users. This documentation includes detailed explanations of API endpoints and common data definitions. Please note that this documentation does not list all API endpoints. Additionally, you may not have access to all of the listed endpoints depending on the services you’ve purchased from [InvestGlass](https://www.investglass.com).\n\n# Making Requests\n\nThe base URL for all InvestGlass API requests is [https://app.investglass.com/api/v1](https://app.investglass.com/api/v1). The API is built on RESTful principles with resource-oriented URL endpoints. HTTP status codes are used to indicate any API errors and all responses are returned in JSON format. All requests must be made over an HTTPS connection to ensure a secure transmission of data. Following a RESTful structure, requests should hit API endpoints using the appropriate HTTP method, which will depend on the desired action.\n\n| Method | Description |\n| --- | --- |\n| **GET** | Use the **GET** method to retrieve information about your users, their accounts, and any associated financial data. This will always be a read-only request, so queried objects will never be modified by a **GET** request. |\n| **POST** | Use a **POST** method to update an object, such as a new user or connection. Request parameters should be given in JSON format. The response body will typically return the newly created resource. |\n| **PUT** | Use a **PUT** method to create a new object, such as a new user or connection. Request parameters should be given in JSON format. The response body will typically return the newly created resource. |\n| **DELETE** | Use a **DELETE** method to delete an object, such as deleting one of your users. Successful **DELETE** requests will typically return an empty response body. |\n\n# Responses\n\nAll non-empty response bodies, including errors, will be formatted as JSON objects. In general, a successful GET request (or any other request that retrieves data) will return an object with the data contained inside a single key-value pair. This key is always associated with the relevant endpoint. For example, `GET /api/v1/company_clients` will return an object with users as the key and the list of users as its value.\n\nIf You are fetching multiple entries, such as the previous `GET /api/v1/users` example, the data will be returned as a list. If you are fetching a single entry, such as `GET api/v1/users/31175`, the data will be returned as a single object.\n\nAdditionally, InvestGlass's API use standard HTTP status codes to indicate the status of a request.\n\nBelow is a brief overview of the most common status codes\n\n| Code | Definition |\n| --- | --- |\n| 1xx | Informational. |\n| 2xx | Success. |\n| 201 | Created - Returned after a new object was created. Typically, the newly created object will be available in the response body. |\n| 204 | No Content - Usually returned on a DELETE request. This indicates that the object was successfully removed, but there is no actual data to return. |\n| 4xx | Client-side error. |\n| 400 | Bad Request - There was an issue with the given parameters. This could be due to a missing required field, a malformed parameter, etc. |\n| 401 | Unauthorized - The API credentials or access token used is incorrect. |\n| 403 | Forbidden - You do not have access to the requested endpoint or action. |\n| 404 | Not Found - Returned if the given resource either does not exist or you do not have access to it. |\n| 409 | Conflict - This indicates that you are trying to perform an action that would interrupt or conflict with another ongoing action. |\n| 5xx | Server Error |\n| 500 | Internal Server Error - There are internal or API-related errors on InvestGlass's side. Additional requests will not resolve the issue. |\n| 503 | Service Unavailable - The targeted endpoint is currently unavailable. This is caused by temporary issues; access to the endpoint will return momentarily. |\n\n# Errors\n\nIf there is an error with your request, a JSON containing an error ID and message will be returned.\n\nThe status will always match the returned HTTP status code. While there are unique error IDs and messages, most invalid request errors (400s) will return an id of either invalid_parameter or bad_request. The associated message will detail simple request errors such as missing required fields or improperly formatted date parameters.\n\n# Pagination\n\nPagination is used for any endpoint with a sufficiently large set of data, mainly the /api/v1/company_clients and /api/v1/transactions endpoints. Using the page method of Kaminari to get a `page` (ten, in our case) of results. We're passing `params[:page]` to the page method so that we can control which page we get. And if `params[:page]` is nil, we'll get the first page, so it works by default.\n\nYou can then pass `page=2` to go to the second page data set. For example, to retrieve the next set of clients, you would pass specific page when requesting clients (`GET /api/v1/company_clients?page=2`).",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://app.investglass.com"
    }
  ],
  "tags": [
    {
      "name": "Proposals"
    }
  ],
  "paths": {
    "/client_portal_api/proposals/proposal_states": {
      "get": {
        "tags": [
          "Proposals"
        ],
        "summary": "Fetch proposal states",
        "description": "Fetch proposal states from the company",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "example": "application/json"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "Content-Type": {
                "schema": {
                  "type": "string",
                  "example": "application/json"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {}
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "example": ""
              }
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  }
}
```