# MeasureOne API The MeasureOne API enables secure, consumer-permissioned data integration into your applications and workflows. Our platform facilitates the entire data-sharing process, from consent management to data delivery, while maintaining the highest standards of privacy and security. \ At its core, our API streamlines the complex process of permissioned data sharing. When users grant consent to share their information, they either **upload their documents** or **provide credentials** through the MeasureOne LINK widget to access their data sources. Our platform then securely connects to these sources, acquires the authorized data, and delivers it through standardized APIs. This process ensures both data integrity and user privacy, with built-in safeguards that enforce consent boundaries and prevent unauthorized access. \ The platform offers comprehensive features including secure consent management, safe credential handling, automated data acquisition, and standardized delivery - all while guaranteeing data authenticity and tamper-proof delivery. By abstracting these complex workflows into straightforward APIs, we enable you to focus on your application while we handle the intricacies of secure data access and privacy compliance. Version: 3.0 ## Servers Production ``` https://api.measureone.com ``` Staging ``` https://api-stg.measureone.com ``` ## Security ### Bearer Enter the token with the `Bearer: ` prefix, e.g. "Bearer \<\\>". Type: apiKey In: header Name: Authorization ### Basic Provide the Base64 representation of your `client_id:secret` e.g. "Basic \<\\>". Type: http Scheme: basic ### Internal Provide the application ID. Type: apiKey In: header Name: applicationId ### None No authorization is required Type: apiKey In: header Name: None ## Download OpenAPI description [MeasureOne API](https://docs.measureone.com/_spec/api/openapi_3.2/openapi.yaml) ## API Keys and Access MeasureOne authenticates your API requests using access tokens. If you do not include the `access_token` when making a request, MeasureOne returns an authentication error. To gain access to the MeasureOne API, reach out to us on sales@measureone.com. Once you’ve completed the signup process, we’ll provide a live `client_id` & `secret` for use in our API. You can access our APIs using Access Tokens Or Public Tokens. The Public Tokens are short lived with limited scope while Access Tokens are long lived. ## Access Tokens Access Tokens are long-lived tokens that give you access to the MeasureOne infrastructure for your account. **Access tokens should be used only from your own server side applications.** ## Public Tokens Public tokens are short-lived tokens with defined `scope` and `policy`. The scope indicates the resources and endpoints you can access using these tokens while policy indicates the data you can access using the APIs. MeasureOne APIs will return a 401 error if the public token is used for scope or policy that is different from the token's scope and policy. **For example**, if you create a public token for policy having **individual_id** `idv_293241AAjy2EZt3R` and if you try to invoke /individuals/get_by_id for another individual, it will return a 401 error. The table below defines the currently supported scope. |API Endpoint|WIDGET|GLOBAL|ENTERPRISE_WIDGET |--- |--- |--- |--- | |/individuals/new|YES|YES|YES |/individuals/get_by_id |YES|YES|YES |/individuals/get_items|YES|YES|NO |/datarequests/new|YES|YES|YES |/datarequests/update|YES|YES|YES |/datarequests/get|YES|YES|YES |/datarequests/get_by_id|YES|YES|YES |/datarequests/generate_invitation_link|YES|YES|YES |/datarequests/notify_user|YES|YES|YES |/datarequests/get_invitation_link|YES|YES|YES |/datarequests/expire_invitation_link|YES|YES|NO |/datarequests/refresh_now|YES|YES|NO |/datarequests/enable_refresh|YES|YES|NO |/datarequests/disable_refresh|YES|YES|NO |/datasources/get|YES|YES|YES |/items/new|YES|YES|YES |/items/upload|YES|YES|YES |/items/get_by_id|YES|YES|YES |/items/get_files|YES|YES|NO |/items/get_pdf|YES|YES|NO |/services/get_academic_summary|NO|YES|YES |/services/get_enrollment_status|NO|YES|YES |/services/gradscore|NO|YES|NO |/services/meritscore|NO|YES|NO |/services/get_digest_by_id|NO|YES|NO |/services/get_employment_summary|NO|YES|YES |/services/get_income_summary|NO|YES|YES |/services/get_income_employment_details|NO|YES|YES |/services/get_insurance_details|NO|YES|YES |/services/get_realized_gains|NO|YES|YES ### Generate Access Token - [POST /v3/auth/generate_access_token](https://docs.measureone.com/api/openapi_3.2/openapi/api-keys-and-access/paths/~1v3~1auth~1generate_access_token/post.md): This API returns the access token required for you to access the MeasureOne APIs. The Authorization header should contain the word word followed by a space and a base64-encoded string . For example, to authorize as demo / p@55w0rd you should send This API does not require any request body ### Invalidate Access Token - [POST /v3/auth/invalidate](https://docs.measureone.com/api/openapi_3.2/openapi/api-keys-and-access/paths/~1v3~1auth~1invalidate/post.md): This API invalidates the provided Access Token. The Authorization header should contain the word word followed by a space and a base64-encoded string . For example, to authorize as demo / p@55w0rd you should send This API does not require any request body ### Generate Public Token - [POST /v3/auth/generate_public_token](https://docs.measureone.com/api/openapi_3.2/openapi/api-keys-and-access/paths/~1v3~1auth~1generate_public_token/post.md): This API returns the Public Token which are short lived tokens required for you to access MeasureOne APIs. The Authorization header should contain the word word followed by a space and a base64-encoded string . For example, to authorize as demo / p@55w0rd you should send ### Public Tokens ## Individuals The Individual is a core resource that represents your user. At the start of the workflow an Individual representing the user must be created. Retrieved Items are associated with the Individual. Almost all Service APIs take the Individual ID as a reference. ### Create a new Individual - [POST /v3/individuals/new](https://docs.measureone.com/api/openapi_3.2/openapi/individuals/paths/~1v3~1individuals~1new/post.md): Creates a new Individual. The returned ID is then used in subsequent API calls to reference Items and Services. ### Get details of an Individual - [POST /v3/individuals/get_by_id](https://docs.measureone.com/api/openapi_3.2/openapi/individuals/paths/~1v3~1individuals~1get_by_id/post.md): Retrieve the details of the given Individual. ### Get Items for an individual - [POST /v3/individuals/get_items](https://docs.measureone.com/api/openapi_3.2/openapi/individuals/paths/~1v3~1individuals~1get_items/post.md): Retrieve the list of items created for an Individual ## Data Requests A consumer-permissioned data workflow is initiated and defined by the Data Request resource. A Data Request specifies or bind together the various elements of a consumer-permissioned data workflow, in particular: the Individual, the set of actions - writing or acquiring data - to be performed, optional reports to be generated, the Link experience, optional schedule to auto-refresh data, optional Individual communication and messaging. MeasureOne supports pre-configured types of data requests catering to different use cases, as well as **CUSTOM** data requests that allow you to request custom data. All services accept `datarequest_id` as a reference. The following table specifies the supported Data Request types. Based on the Data Request type, MeasureOne tailors the consumer-permissioned workflow to satisfy the indicated request for data. | Data Request Type | Description | |-------------------|--------------------------------------------------------- | ACADEMIC_SUMMARY | Request the education summary of the Individual | ENROLLMENT_STATUS | Request the enrollment status of the Individual | EMPLOYMENT_SUMMARY| Request the employment summary of the Individual | INCOME_SUMMARY | Request the income summary for the Individual | INCOME_EMPLOYMENT_DETAILS | Request the VOIE details of the Individual | HOME_INSURANCE_DETAILS | Request the Home insurance details of the individuals | AUTO_INSURANCE_DETAILS | Request the Auto insurance details of the individuals | REALIZED_GAINS | Request 1099-B information from the Individual's brokerage account | CUSTOM | Request custom data from an Individual that is not covered by the above types. ### Create a new Data Request - [POST /v3/datarequests/new](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1new/post.md): Creates a new Data Request. The returned ID is then used in Link and in service calls to reference Items and services. ### Generate invitation link for the Data Request - [POST /v3/datarequests/generate_invitation_link](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1generate_invitation_link/post.md): Generate a shareable invitation link for the Data Request. You can share the invitation link with the Individual for them to complete the Data Request. The invitation link will direct the user to MeasureOne's hosted solution. * If there is a invitation link with status available, it will return the same invitation link. Generating a invitation link when there is already existing available. it will return the same invitation link with the updated as provided. * It will generate a new invitation link if there are no links available for the Data Request. ### Invite the Individual to complete the Data Request - [POST /v3/datarequests/notify_user](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1notify_user/post.md): Send a notification to the user to complete the data request. The API will return an error if the link is already . MeasureOne sends upto 3 reminders, 12 hours apart to notify the user. Call this API on an already active link for which notifications have been sent earlier will reset the counter. ### Get shareable invitation links for Data Request - [POST /v3/datarequests/get_invitation_link](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1get_invitation_link/post.md): Get the list of invitation links associated with a Data Request ### Get the details of Data Request - [POST /v3/datarequests/get_by_id](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1get_by_id/post.md): Get the details of a Data Request. MeasureOne records various events for a Data Request. These events are summarized in the following table. ### Data Request Events |event|Description| |--- |--- | |DATAREQUEST_CREATED| Data Request created| |DATAREQUEST_UPDATED| Updated the details of Data Request| |DATAREQUEST_LINK_GENERATED| Data Request link generated| |NOTIFY_USER_REQUESTED| Email and/or SMS notification sent to user| |DATAREQUEST_LINK_EXTENDED| Link expiry time extended| |DATAREQUEST_LINK_EXPIRED| Link for Data Request expired| |DATAREQUEST_LINK_ACCESSED| Data Request link accessed by user| |WIDGET_INITIATED| Widget initiated for Data Request| |DATASOURCE_CLASSIFIED| Individual landed on login screen| |LOGIN_ATTEMPTED| Individual tried to login| |INVALID_CREDENTIALS| Credentials provided by user are invalid| |DATASOURCE_CONNECTED| Individual entered valid credentials and the Data Source is connected| |INSUFFICIENT_CREDENTIALS| Individual was not able to provide credentials| |ITEM_CREATED| Item was downloaded and stored database| |ITEM_PROCESSED| Data extracted and formatted| |ITEM_UNPROCESSABLE| Unable to process an item| |ITEMS_AVAILABLE| Data Extraction is completed with some items | |NO_ITEMS| Data Extraction is completed without an item| |USER_INTERVENTION_REQUIRED| Individual re-login required | |DATASOURCE_NOT_FOUND| Individual was unable to find Data Source| |PLAID_INITIATED| Plaid flow initiated| |PLAID_CONNECTION_SUCCESSFUL| Plaid connection successful| |PLAID_CONNECTION_UNSUCCESSFUL| Plaid connection unsuccessful| |REPORT_REQUESTED| Report requested by customer| |REPORT_AVAILABLE| Report data is available| |REPORT_ERROR| Error occurred during generating report| |UPDATES_AVAILABLE| Updated data for Data Request is available| |REFRESH_INITIATED| A scheduled refresh is initiated for Data Request| |REFRESH_FAILED| A scheduled refresh is failed for Data Request| |CONSENT_REGISTERED| Consent registered forData Request| |CONSENT_DEREGISTER| Consent deregistered for Data Request| |SESSION_TERMINATED| A session is terminated for Data Request| |SESSION_LOGGED_OUT| A session is logged out for Data Request| ### Expire invitation link for Data Request - [POST /v3/datarequests/expire_invitation_link](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1expire_invitation_link/post.md): Expires the invitation link for a data request. ### Get the list of Data Requests - [POST /v3/datarequests/get](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1get/post.md): Get the list of Data Requests based on the filter criteria provided. If not filter criteria is provided, it will fetch the latest 200 data requests. ### Update a Data Request - [POST /v3/datarequests/update](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1update/post.md): Update details of a Data Request ### Refresh data on demand - [POST /v3/datarequests/refresh_now](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1refresh_now/post.md): Refresh data for a Data Request on demand. ### Enable refresh data for Data Requests - [POST /v3/datarequests/enable_refresh](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1enable_refresh/post.md): Enable Refresh data for Data Requests. ### Disable refresh data for Data Requests - [POST /v3/datarequests/disable_refresh](https://docs.measureone.com/api/openapi_3.2/openapi/data-requests/paths/~1v3~1datarequests~1disable_refresh/post.md): Disable Refresh data for Data Requests. ## Data Sources Data Sources are online locations of Items. Individuals (your users) connect Data Sources and provide MeasureOne with their credentials and consent so that MeasureOne may retrieve Items (their data) from the Data Source to be subsequently shared with you in a strictly permissioned way. Data Sources may be universities, financial institutions, payroll systems, government records. MeasureOne curates the list of Data Sources to ensure the provenance of the retrieved documents. Since not all Data Sources may be relevant to your application, the API allows you to configure and select the list of Data Sources that are displayed to your user. ### Get / Search Data Sources - [POST /v3/datasources/get](https://docs.measureone.com/api/openapi_3.2/openapi/datasources/paths/~1v3~1datasources~1get/post.md): Get / Search Data Sources ## Items Items are the resource representing data shared by Individuals with MeasureOne. The underlying document of an Item is called *source data* These can be college transcripts, pay stubs, real estate titles, etc. Items are stored and information from them can be retrieved through the Service API calls. The information in an Item is shared through the Service APIs according to the consumer permission. Importantly, note that unless permissioned by the Individual, the Item data may not be shared directly with you. ### Submit a new item - [POST /v3/items/new](https://docs.measureone.com/api/openapi_3.2/openapi/items/paths/~1v3~1items~1new/post.md): ### Usage options The usage of varies depending on its intended use and availability of information. The request payload must include either a object a object. Passing both as a part of the payload may result in processing errors. #### Using Source Data Object If the attribute values for a transcript are known, send the source data inline in the request using the object. #### Using Source Data Reference Object If the data is in a document, upload it using the endpoint or make it available at a remote location. A reference to the uploaded document should then be included in the request using the object. ### Upload files - [POST /v3/items/upload](https://docs.measureone.com/api/openapi_3.2/openapi/items/paths/~1v3~1items~1upload/post.md): The /items/upload endpoint is used to upload documents containing source data for a new item. : , , , , , ### Get the details of item - [POST /v3/items/get_by_id](https://docs.measureone.com/api/openapi_3.2/openapi/items/paths/~1v3~1items~1get_by_id/post.md): Retrieves an existing Item data. The endpoint can be used once the for an Item is . It will return Item data in its response payload. If the processing of the Item is not yet complete, it will return the current status of the Item. This API is asynchronous. The optional object, if present, lists data attributes whose extraction accuracy was lower than 95%. Such a scenario can come up when processing images or other unstructured source data items. The attributes are specified as a json path within the corresponding data object. In the event that the object is not present (i.e., null), the data extraction should be considered 100% accurate. ### Get the list of Items - [POST /v3/items/get](https://docs.measureone.com/api/openapi_3.2/openapi/items/paths/~1v3~1items~1get/post.md): Get the list of items based on the filter criteria provided. If no filter criteria is provided, it will fetch the latest 200 items. ### Get item files - [POST /v3/items/get_files](https://docs.measureone.com/api/openapi_3.2/openapi/items/paths/~1v3~1items~1get_files/post.md): The endpoint is used to download the source data for an item. The API returns a byte stream of a zip file. ### Get PDF item - [POST /v3/items/get_pdf](https://docs.measureone.com/api/openapi_3.2/openapi/items/paths/~1v3~1items~1get_pdf/post.md): The endpoint is used to download/view an item as PDF document. The API returns a byte stream of a PDF item file. ## Invitations MeasureOne offers a framework for initiating the consumer-permissioned data exchange using automatically generated invitations. These invitations contain unique links that refer the user back to the MeasureOne hosted portal in a personalized manner to initiate and complete the consumer-permissioned data exchange. These API endpoints provide a programmatic interface to this framework. Note that a zero code alternative to a programmatic implementation is to use the MeasureOne Customer Dashboard to interface with the Invitations framework. ### Create a new Invitation (deprecated) - [POST /v3/invitations/new](https://docs.measureone.com/api/openapi_3.2/openapi/invitations/new_invitation.md): Creates a new invitation. This API is deprecated. Use and to create an invitation ### Get the list of invitations (deprecated) - [POST /v3/invitations/get](https://docs.measureone.com/api/openapi_3.2/openapi/invitations/invitations_get.md): Get the list of invitations based on the filter criteria provided. This API is deprecated. Use ### Get details of an Invitation (deprecated) - [POST /v3/invitations/get_by_id](https://docs.measureone.com/api/openapi_3.2/openapi/invitations/invitation_get_by_id.md): Get the details of an Invitation. The endpoint will return an error response if the Invitation is not found. This API is deprecated. Use ### Expire an Invitation (deprecated) - [POST /v3/invitations/expire](https://docs.measureone.com/api/openapi_3.2/openapi/invitations/invitations_delete.md): Expire an Invitation. The Invitation can be expired only if it has not yet been . An attempt to expire an invitation that is already expired will return an error. This API is deprecated. Use ## Experiences Experiences stores the different resources required by the widget, hostedportal, etc. ### Upload logo - [POST /v3/experiences/upload_logo](https://docs.measureone.com/api/openapi_3.2/openapi/experiencesv3/paths/~1v3~1experiences~1upload_logo/post.md) ## Education ### Get academic summary - [POST /v3/services/get_academic_summary](https://docs.measureone.com/api/openapi_3.2/openapi/education/paths/~1v3~1services~1get_academic_summary/post.md): Provides a summary of academic and educational data, including dates of attendance, degrees achieved, and other fields. Please see response payload for the detailed fields. MeasureOne uses a set of heuristics to make a final determination. These heuristics are summarized in Reason Codes as detailed in the following table. ### Reason Codes |Code|Description| |--- |--- | |MAS_DRVD_ATTNDNC_ACAD_SESSION|Attendance determined via academic session enrollments| |MAS_DRVD_STD_CLSF_CRSE_IN_PRG|Courses are in progress| | MAS_EXPLICIT_TYPE | Enrollment Type explicitly available on the school website | | MAS_DRVD_ENRL_TYPE_ENRL_STS | Enrollment Type derived based INACTIVE enrollment status | | MAS_DRVD_ENRL_TYPE | Enrollment Type derived based on credits attempted in currently enrolled term | | MAS_DRVD_ENRL_TYPE_PRV_TERM | Enrollment Type derived based on credits attempted in the previous enrolled term within 180 days of the date available in the data | | MAS_DRVD_ENRL_TYPE_INFR_CRED | Enrollment Type derived based on inferred credits attempted | | MAS_DRVD_ENRL_TYPE_COOP_CRSE | Enrollment Type derived based on enrolled COOP course | |MAS_INSUFFICIENT_DATA|Attendance record not available| |MAS_INSUFFICIENT_DATA|Date degree was awarded not available| |MAS_INSUFFICIENT_DATA|Degree GPA not available| |MAS_INSUFFICIENT_DATA|Degree majors not available| |MAS_INSUFFICIENT_DATA|Description of degree not available| |MAS_INSUFFICIENT_DATA|Number of credits not available| |MAS_INSUFFICIENT_DATA|Number of degree credits not available| |MAS_INSUFFICIENT_DATA|Status of student degree not available| |MAS_INSUFFICIENT_DATA|Student classification data not available| |MAS_INSUFFICIENT_DATA|Student degree data not available| |MAS_INSUFFICIENT_DATA|Student GPA not available| |MAS_INSUFFICIENT_DATA|Type of student degree not available| |MAS_INSUFFICIENT_DATA|Enrollment Type of student not available| |ITEM_ON_HOLD|Student transcript(s) on financial hold| |MAS_VF_DAC|Verification method: Direct school account connection| |MAS_VF_USD|Verification method: User-submitted transcript| |MAS_VF_DAC_USD|Verification method: Direct school account connection and one or more user-submitted transcript| ### Get enrollment status - [POST /v3/services/get_enrollment_status](https://docs.measureone.com/api/openapi_3.2/openapi/education/paths/~1v3~1services~1get_enrollment_status/post.md): This endpoint provides an assessment of the student's enrollment status. MeasureOne uses a set of heuristics to make a final determination. These heuristics are summarized in Reason Codes as detailed in the following table. ### Reason Codes |Code|Description| |--- |--- | |MES_EXPLICIT_STATUS|Enrollment Status explicitly available on school website| |MES_CURRENTLY_ENROLLED|Currently enrolled in a program| |MES_COURSE_IN_PRG|One or more courses in progress| |MES_COURSE_IN_PRG_DEG_AWD_LT_90|One or more courses in progress but degree awarded before 90 days of the date available in the data| |MES_LAST_TERM_LT_180|Last term ended within 180 days of date available in the data| |MES_LAST_TERM_LT_180_DEG_AWD_GT_270|Last term ended within 180 days of item creation but degree awarded date is greater than 270 days| |MES_COURSE_IN_PRG_DEG_AWD_LT_60|One or more courses in progress, but degree awarded before 60 days of item creation| |MES_LAST_TERM_GT_180|Last term ended greater than 180 days of the date available in the data| |MES_WITHDRAWN|Withdrawn from all programs| |MES_VERIFIED_CREDENTIALS|Successfully verified Individual’s login credentials| |MES_INSUFFICIENT_DATA|Insufficient Data| |MES_VF_DAC|Verification method: Direct school account connection| |MES_VF_USD|Verification method: User-submitted transcript| |MES_VF_DAC_USD|Verification method: Direct school account connection and one or more user-submitted transcript| ### Get MeritScore - [POST /v3/services/meritscore](https://docs.measureone.com/api/openapi_3.2/openapi/education/paths/~1v3~1services~1meritscore/post.md): MeasureOne's MeritScore is a proprietary predictive analytic that provides an assessment of an Individual's credit default risk based on an academic transcript. This endpoint calculates and returns the MeritScore based on the Individual's transcript. ### Get GradScore - [POST /v3/services/gradscore](https://docs.measureone.com/api/openapi_3.2/openapi/education/paths/~1v3~1services~1gradscore/post.md): MeasureOne's Gradscore is a proprietary predictive analytic that provides an assessment of an Individual's academic persistence rate (probability of the student to be enrolled or graduated 12 months from measurement). This endpoint calculates and returns the Gradscore based on the Individual's transcript. ### Get M1_DIGEST for Transcript - [POST /v3/services/get_digest_by_id](https://docs.measureone.com/api/openapi_3.2/openapi/education/paths/~1v3~1services~1get_digest_by_id/post.md): This API also has an asynchronous response. It retrieves transcript metadata and Digest fields. The endpoint can be used once a the processing_status for a transcript is COMPLETED. It will return the M1_DIGEST schema. ## Income & Employment ### Get income summary - [POST /v3/services/get_income_summary](https://docs.measureone.com/api/openapi_3.2/openapi/income-and-employment/paths/~1v3~1services~1get_income_summary/post.md): Retrieves a summary of an Individual's income based on the income related Items, including salary and other income related information. MeasureOne uses a set of heuristics to make a final determination. These heuristics are summarized in Reason Codes as detailed in the following table. ### Reason Codes |Code|Description| |--- |--- | |MIE_VF_DPC|Verification method: Direct payroll account connection| |MIE_VF_USP_BAC|Verification method: User-submitted paystub with bank account check| |MIE_VF_USP_NO_BAC|Verification method: User-submitted paystub without bank account check| |MIE_VF_USW2|Verification method: User-submitted W-2| |MIE_VF_US1099B| Verification method: User-submitted 1099-B| |MIE_VF_US1099OID| Verification method: User-submitted 1099-OID| |MIE_VF_US1099DIV| Verification method: User-submitted 1099-DIV| |MIE_VF_US1099INT| Verification method: User-submitted 1099-INT| |MIE_VF_US1099CONSOLIDATED| Verification method: User-submitted 1099-CONSOLIDATED| |MIE_VF_DPC_USP|Verification method: Direct payroll account connection and one or more User-submitted Paystub| |MIE_VF_DPC_USW2|Verification method: Direct payroll account connection and User-submitted W-2| |MIE_VF_USP_USW2|Verification method: User-submitted one or more Paystub and W-2| |MIE_VF_W2|Verification method: W-2 reported income is the wages, tips and other comp. (box 1) as reported on the W-2| |MIE_ERNG_1099INT|Interest income computed using data available on 1099-INT| |MIE_ERNG_1099DIV|Dividend income computed using data available on 1099-DIV| |MIE_ERNG_1099B|Investment income computed using data available on 1099-B| |MIE_ERNG_1099OID|Interest income computed using data available on 1099-OID| |MIE_ERNG_1099MISC|Rental income is Rents (box 1) as reported on 1099-MISC| |MIE_ERNG_1099MISC|Royalty income is Royalties (box 2) as reported on 1099-MISC| |MIE_ERNG_1099MISC|Other income is Other Income (box 3) as reported on 1099-MISC| |MIE_VF_US_EDR|Verification method: User-submitted THE WORK NUMBER Employment Data Report| |MIE_VF_UCB|Verification method: User-connected bank account| |MIE_DRVD_EIN|Employment Identification Number (EIN) derived from W-2| |MIE_NI_BEM|Net income on Paystub matches with a corresponding entry in the bank statement| |MIE_NI_NO_BEM|Net income on Paystub does not matches with a corresponding entry in the bank statement| |MIE_NID_BEM|Net income on Paystub matches with a corresponding entry in the bank statement (Deposit Split)| |MIE_INSUFFICIENT_DATA|Insufficient information to derive earnings| |MIE_INSUFFICIENT_DATA|Insufficient information to derive yearly earnings| |MIE_INSUFFICIENT_DATA|Insufficient information to derive an EIN| ### Get employment summary - [POST /v3/services/get_employment_summary](https://docs.measureone.com/api/openapi_3.2/openapi/income-and-employment/paths/~1v3~1services~1get_employment_summary/post.md): Retrieves an summary of an Individual's employment based on employment related Items, including history and status. MeasureOne uses a set of heuristics to make a final determination. These heuristics are summarized in Reason Codes as detailed in the following table. ### Reason Codes |Code|Description| |--- |--- | |MIE_VF_DPC|Verification method: Direct payroll account connection| |MIE_VF_USP_BAC|Verification method: Individual-submitted paystub with bank account check| |MIE_VF_USP_NO_BAC|Verification method: Individual-submitted paystub without bank account check| |MIE_VF_US_EDR|Verification method: Individual-submitted THE WORK NUMBER Employment Data Report| |MIE_DA_ESD|Employment start date directly available in source data| |MIE_DRVD_ESD|Employment start date derived earliest available paystub| |MIE_DA_EED|Employment end date directly available in source data| |MIE_DRVD_EED|Employment end date derived from latest paystub| |MIE_DA_ROLE|Role information directly available in source data| |MIE_DA_ES|Employment status directly available in source data| |MIE_DRVD_ES|Employment status derived based on last pay date| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employment status| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employee role| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employment start date| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employment end date| ### Get income employment details (VOIE) - [POST /v3/services/get_income_employment_details](https://docs.measureone.com/api/openapi_3.2/openapi/income-and-employment/paths/~1v3~1services~1get_income_employment_details/post.md): Retrieves details of an Individual's income and employment based on employment/income related Items, including history and status. MeasureOne uses a set of heuristics to make a final determination. These heuristics are summarized in Reason Codes as detailed in the following table. ### Reason Codes |Code|Description| |--- |--- | |MIE_VF_DPC|Verification method: Direct payroll account connection| |MIE_VF_USP_BAC|Verification method: User-submitted paystub with bank account check| |MIE_VF_USP_NO_BAC|Verification method: User-submitted paystub without bank account check| |MIE_VF_US_EDR|Verification method: User-submitted THE WORK NUMBER Employment Data Report| |MIE_VF_USW2|Verification method: User-submitted W-2| |MIE_VF_US1099B| Verification method: User-submitted 1099-B| |MIE_VF_US1099OID| Verification method: User-submitted 1099-OID| |MIE_VF_US1099DIV| Verification method: User-submitted 1099-DIV| |MIE_VF_US1099INT| Verification method: User-submitted 1099-INT| |MIE_VF_US1099CONSOLIDATED| Verification method: User-submitted 1099-CONSOLIDATED| |MIE_VF_DPC_USP|Verification method: Direct payroll account connection and one or more User-submitted Paystub| |MIE_VF_DPC_USW2|Verification method: Direct payroll account connection and User-submitted W-2| |MIE_VF_USP_USW2|Verification method: User-submitted one or more Paystub and W-2| |MIE_VF_W2|Verification method: W-2 reported income is the wages, tips and other comp. (box 1) as reported on the W-2| |MIE_ERNG_1099INT|Interest income computed using data available on 1099-INT| |MIE_ERNG_1099DIV|Dividend income computed using data available on 1099-DIV| |MIE_ERNG_1099B|Investment income computed using data available on 1099-B| |MIE_ERNG_1099OID|Interest income computed using data available on 1099-OID| |MIE_ERNG_1099MISC|Rental income is Rents (box 1) as reported on 1099-MISC| |MIE_ERNG_1099MISC|Royalty income is Royalties (box 2) as reported on 1099-MISC| |MIE_ERNG_1099MISC|Other income is Other Income (box 3) as reported on 1099-MISC| |MIE_VF_UCB|Verification method: User-connected bank account| |MIE_DA_ESD|Employment start date directly available in source data| |MIE_DRVD_ESD|Employment start date derived earliest available paystub| |MIE_DRVD_EIN|Employment Identification Number (EIN) derived from W-2| |MIE_DA_EED|Employment end date directly available in source data| |MIE_DRVD_EED|Employment end date derived from latest paystub| |MIE_DA_ROLE|Role information directly available in source data| |MIE_DA_ES|Employment status directly available in source data| |MIE_DRVD_ES|Employment status derived based on last pay date| |MIE_NI_BEM|Net income on Paystub matches with a corresponding entry in the bank statement| |MIE_NI_NO_BEM|Net income on Paystub does not matches with a corresponding entry in the bank statement| |MIE_NID_BEM|Net income on Paystub matches with a corresponding entry in the bank statement (Deposit Split)| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employment status| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employee role| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employment start date| |MIE_INSUFFICIENT_DATA|Insufficient information to derive employment end date| |MIE_INSUFFICIENT_DATA|Insufficient information to derive earnings| |MIE_INSUFFICIENT_DATA|Insufficient information to derive yearly earnings| |MIE_INSUFFICIENT_DATA|Insufficient information to derive an EIN| ## Insurance ### Get insurance details - [POST /v3/services/get_insurance_details](https://docs.measureone.com/api/openapi_3.2/openapi/insurance/paths/~1v3~1services~1get_insurance_details/post.md): Provides insurance details including policy type, policy dates, coverages, premium amount and other fields. Please see response payload for the detailed fields. Following table has reason code for Insurance Details. ### Reason Codes |Code|Description| |--- |--- | |MID_VF_DAC|Verification method: Direct insurance provider account connection| |MID_VF_USD|Verification method: User-submitted insurance policy| |MID_VF_USIC|Verification method: User-submitted insurance card| |MID_VF_DAC_USD|Verification method: Direct insurance provider account connection and one or more user-submitted insurance policy| |MID_INSUFFICIENT_DATA|MeasureOne does not have sufficient data to process the requested transaction| |MID_DRVD_STATUS |Insurance status derived from coverage dates| |MID_DA_STATUS |Insurance status directly available in source data| |MID_INSUFFICIENT_DATA |Insufficient information to derive insurance status| ### Get insurance status - [POST /v3/services/get_insurance_status](https://docs.measureone.com/api/openapi_3.2/openapi/insurance/paths/~1v3~1services~1get_insurance_status/post.md): Provides basic insurance information including policy status, policy dates, coverage type and other fields. Please see response payload for the detailed fields. Following table has reason code for Insurance Status. ### Reason Codes |Code|Description| |--- |--- | |MIS_VF_DAC|Verification method: Direct insurance provider account connection| |MIS_VF_USD|Verification method: User-submitted insurance policy| |MIS_VF_USIC|Verification method: User-submitted insurance card| |MIS_VF_DAC_USD|Verification method: Direct insurance provider account connection and one or more user-submitted insurance policy| |MIS_DRVD_STATUS | Insurance status derived from coverage dates| |MIS_DA_STATUS | Insurance status directly available in source data | |MIS_INSUFFICIENT_DATA |MeasureOne does not have sufficient data to process the requested transaction| |MIS_INSUFFICIENT_DATA |Insufficient information to derive insurance status| ## Tax Records ### Get Realized Gains - [POST /v3/services/get_realized_gains](https://docs.measureone.com/api/openapi_3.2/openapi/tax-records/paths/~1v3~1services~1get_realized_gains/post.md): Provides short-term and long-term realized gains on proceeds from the securities transactions. Please see response payload for the detailed fields. Following table has reason code for Insurance Details. ### Reason Codes |Code|Description| |--- |--- | |MRG_VF_DAC|Verification method: Direct brokerage account connection| |MRG_VF_USD|Verification method: User-submitted 1099-B| |MRG_VF_DAC_USD|Verification method: Direct brokerage account connection and one or more user-submitted 1099-B| ## Webhook Events MeasureOne uses webhooks to notify client applications of certain events. Whenever a notification event occurs we'll submit a POST to your designated webhook URL with information about the event. The webhook URL is configured as part of the onboarding process. You can also provide the webhook details while creating a Data Request ### datarequest.report_available - [POST datarequest.report_available](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.report_available/post.md): Triggered when the report data for a Data Request is available ### datarequest.report_error - [POST datarequest.report_error](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.report_error/post.md): Triggered when an error occurred during generating report for a Data Request ### Reason Codes |Reason Code|Description| |--- |--- | |UNSUPPORTED_FORMAT| The report could not be generated as the following items are of unsupported format. |UNPROCESSABLE_DOCUMENT_QUALITY| The report could not be generated as the following items are unprocessable. |PARTIAL_DOCUMENT| The report could not be generated as the following items are partial. |NO_ITEMS| The report could not be generated as there are no items for this Individual. ### datarequest.items_available - [POST datarequest.items_available](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.items_available/post.md): Triggered when the data extraction for a Data Request is complete and Items are available. This is triggered when * The user has successfully connected their account and MeasureOne has successfully extracted all the documents relevant for the Data Request * The user has manually uploaded the required documents for the Data Request ### datarequest.items_processed - [POST datarequest.items_processed](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.items_processed/post.md): Triggered when all the Items for a Data requests are processed. This is triggered when * The user has successfully connected their account and MeasureOne has successfully processed all the documents relevant for the Data Request * The user has manually uploaded the required documents are processed for the Data Request ### datarequest.no_items - [POST datarequest.no_items](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.no_items/post.md): Triggered when the data extraction for a Data Request is complete and no Item is available. ### datarequest.refresh_failed - [POST datarequest.refresh_failed](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.refresh_failed/post.md): Triggered when a scheduled refresh fails ### Reason Codes |Reason Code|Description| |--- |--- | |INVALID_CREDENTIALS| Refresh could not be completed as available credentials are invalid or no credentials are available. |MFA_REQUIRED| Refresh could not be completed as MFA authentication is required. ### datasource.connected - [POST datasource.connected](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datasource.connected/post.md): Triggered when a successful connection with the Datasource is established ### transaction.processed - [POST transaction.processed](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/transaction.processed/post.md): Triggered when a transaction created while calling services API is completed ### unprocessable.entity - [POST unprocessable.entity](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/unprocessable.entity/post.md): Triggered when an item received by MeasureOne is not processable. ### Reason Codes |Reason Code|Description| |--- |--- | |UNSUPPORTED_FORMAT| The item can not be processed due to unsupported format. |UNPROCESSABLE_DOCUMENT_QUALITY| The item can not be processed due to unprocessable document quality. |PARTIAL_DOCUMENT| The item can not be processed due to partial document. ### session.rejected - [POST session.rejected](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/session.rejected/post.md): Triggered when the Link session cannot be processed. Reason Codes and Description for session.rejected events are in the following table ### Reason Codes |Reason Code|Description| |--- |--- | |DATA_NOT_AVAILABLE| Individual was able to login successfully but verified data is not available or accessible to MeasureOne.| |INCOMPLETE_LOGIN| An error occurred during login that is now resolved. Please ask the individual to login again.| ### session.terminated - [POST session.terminated](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/session.terminated/post.md): Triggered when the session is terminated. This can occur for internal reasons or max_latency is set and exceeded. ### session.no_login - [POST session.no_login](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/session.no_login/post.md): Triggered when the Link widget is closed without a successful connection. Reason Codes and Description for session.no_login events are in the following table. ### Reason Codes |Reason Code|Description| |--- |--- | |NO_MATCH_FOUND| Could not find matching datasources for the information provided| |INSUFFICIENT_CREDENTIALS| The individual is unable to provide sufficient credentials to connect their account| |LINK_EXPIRED| The link expired without use| ### item.created - [POST item.created](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/item.created/post.md): Triggered when an item is created. This event can occur in one of the following conditions * When MeasureOne extracts the item from the datasource * When Individual manually uploads an item through MeasureOne Link * When you upload and create an item using /items/new API ### item.processed - [POST item.processed](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/item.processed/post.md): Triggered when an item is processed and data is available to be pulled ### item.unavailable - [POST item.unavailable](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/item.unavailable/post.md): Triggered when MeasureOne is unable to extract a specific Item type from the Datasource ### datarequest.updates_available (deprecated) - [POST datarequest.updates_available](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.updates_available/post.md): Triggered when the updated data for a Data Request is available ### datarequest.acquisition_completed (deprecated) - [POST datarequest.acquisition_complete](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/datarequest.acquisition_complete/post.md): Triggered when the data extraction for a Data Request is complete. This is triggered when * The user has successfully connected their account and MeasureOne has successfully extracted all the documents relevant for the Data Request * The user has manually uploaded the required documents for the Data Request ### session.completed (deprecated) - [POST session.completed](https://docs.measureone.com/api/openapi_3.2/openapi/webhooks/paths/session.completed/post.md): Triggered when a session gets completed