Accreditation Verification¶
Requests authenticate with the Authorization: Bearer {clientID}:{apiKey} header. The examples below read the host and credentials from $TAPI_HOST, $TAPI_CLIENT_ID and $TAPI_API_KEY — see Running the Examples.
Sandbox base URL: https://api-sandboxdash.norcapsecurities.com — the examples read it from $TAPI_HOST.
Endpoints¶
POST /v3/getAiDocumentPOST /v3/getAiLetterPOST /v3/getAiRequestPOST /v3/requestAiVerificationPOST /v3/updateAiRequestPOST /v3/uploadVerificationDocument
POST /v3/getAiDocument¶
This method is used to retrieve a list of all accreditation documents associated with a specific account.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account ID that is generated by the API once an account is created (createAccount) |
documentId | string | No | Document Id generated by the 'uploadVerificationDocument' method |
Example Request¶
curl -X POST "$TAPI_HOST/v3/getAiDocument" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A74413 \
-d documentId=SDrKb
Response¶
| Field | Type | Description |
|---|---|---|
document\_details | array | Array of verification document details associated with the account. Each object includes a documentUrl — a time-limited admin download link generated per request |
letter\_details | array | Array of AI letter details associated with the account. Each object includes a time-limited documentUrl download link |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"document_details": [
{
"id": "123",
"accountId": "A74413",
"documentid": "gHnhS",
"documentTitle": " Testing2",
"documentFileName": "GKrQ180918120031.pdf",
"documentFileReferenceCode": "180918120031",
"createdDate": "2018-09-18",
"documentUrl": "https://api-sandboxdash.norcapsecurities.com/admin_v3/Upload_documentation/uploadDocument/EncRypt3dT0k3n..."
}
],
"letter_details": [
{
"id": "456",
"accountId": "A74413",
"documentFileName": "aiVerifyDocumentA74413.pdf",
"createdDate": "2018-09-20",
"documentUrl": "https://api-sandboxdash.norcapsecurities.com/admin_v3/Upload_documentation/uploadDocument/EncRypt3dT0k3n..."
}
]
}
POST /v3/getAiLetter¶
This method is used to retrieve the letter verifying Accredited Investor (requestAiVerification) status for a specific account.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account ID that is generated by the API once an account is created (createAccount) |
Example Request¶
curl -X POST "$TAPI_HOST/v3/getAiLetter" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A77654
Response¶
| Field | Type | Description |
|---|---|---|
document\_details | array | Array containing the most recent AI letter for the account. documentUrl is a time-limited admin download link generated per request |
Example Response¶
POST /v3/getAiRequest¶
This method is used to retrieve the status of an accreditation verification request (requestAiVerification) for a specific account.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account ID that is generated by the API once an account is created (createAccount) |
Example Request¶
curl -X POST "$TAPI_HOST/v3/getAiRequest" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A52991
Response¶
| Field | Type | Description |
|---|---|---|
accreditedDetails | object | Object containing a request array of accreditation request details. When verification documents exist for the account, it also contains a documents array; each document includes a time-limited documentUrl download link. The clientId and developerAPIKey fields in request are always masked |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"accreditedDetails": {
"request": [
{
"airequestId": "vvNlBU",
"accountId": "A11685",
"aiMethod": "Upload",
"allow": "Pending",
"aiDate": "0000-00-00",
"reviewedBy": "Testing",
"notes": "Test",
"aiRequestStatus": "Need More Info",
"createdDate": "2018-09-18",
"accountName": "John Smith",
"accreditedStatus": "Pending",
"clientId": "XXXXXXXXXXXXXXX",
"developerAPIKey": "XXXXXXXXXXXXXXX"
}
],
"documents": [
{
"id": "123",
"documentid": "gHnhS",
"documentTitle": "Testing2",
"documentFileName": "GKrQ180918120031.pdf",
"documentFileReferenceCode": "180918120031",
"status": "ACTIVE",
"documentUrl": "https://api-sandboxdash.norcapsecurities.com/admin_v3/Upload_documentation/uploadDocument/EncRypt3dT0k3n..."
}
]
}
}
POST /v3/requestAiVerification¶
Billed in production
This method is billed in production. Sandbox calls are not billed. See the Fee Schedule.
This is used to send a request to verify the accredited status of an Account (createAccount).
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account ID that is generated by the API once an account is created (createAccount) |
aiMethod | string | Yes | Accreditation method. Use Upload. The value is stored as sent and is not validated against a fixed list |
notes | string | No | Notes for request |
Example Request¶
curl -X POST "$TAPI_HOST/v3/requestAiVerification" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A12345 \
-d aiMethod=Upload \
-d notes=Test
Response¶
| Field | Type | Description |
|---|---|---|
accreditedDetails | array | Array of account accredited details |
Example Response¶
POST /v3/updateAiRequest¶
This method is used to update the status of the submitted Accredited Investor verification request. This is normally used to indicate when new information has been uploaded by the investor and is ready for re-review in an existing review (New Info Added), or if an updated letter is being requested after a review was previously completed (Updated Letter Requested).
Two status values also change the account's accredited status: Approved sets the account's accreditedStatus to Verified Accredited, and rejected (case-insensitive) sets it to Not Accredited. Any other non-empty value is stored as sent — the API does not validate aiRequestStatus against a fixed list.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
airequestId | string | Yes | Request ID generated by the requestAiVerification method |
aiRequestStatus | string | Yes | New request status, stored as sent (no fixed list is enforced). Typical values: Updated Letter Requested, New Info Added. Approved and rejected also update the account's accreditedStatus (see above) |
Example Request¶
curl -X POST "$TAPI_HOST/v3/updateAiRequest" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d airequestId=lu16rk \
-d aiRequestStatus=Approved
Response¶
| Field | Type | Description |
|---|---|---|
accreditedDetails | array | Array of account accredited details |
Example Response¶
POST /v3/uploadVerificationDocument¶
This method is used to upload documentation to verify Accredited Investor status to a specific account. NCPS requires one of the three following options for accreditation verification: 1) W2's, 1099's or tax returns for the past two years to show your individual income exceeds $200,000 (or joint income exceeds $300,000) for each year. 2) Provide recent account statements or third party appraisals that show the value of your assets exceed $1,000,000 excluding your primary residence. (Must be dated within the last 3 months) 3) Provide an official written communication from any of the following stating that the professional service provider has a reasonable belief that you are an Accredited Investor (Must be dated within the last 3 months): A licensed CPA, Attorney, Investment Advisor, or Registered broker-dealer. PDF, JPG, JPEG, PNG, and TXT files are supported.
This is a multipart/form-data request. The file is sent in the userfile form field.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account ID that is generated by the API when an account is created (createAccount) |
documentTitle | string | Yes | Uploaded document title, stored verbatim. Send the plain title — do not add a documentTitle0= prefix. (Unlike the multi-file upload*Document endpoints, this endpoint takes a single file and stores whatever you send, so a prefix would become part of the title.) |
userfile | file | Yes | Raw file data. Specification of raw file data is application specific. Accepted file extensions are PDF, JPG, JPEG, PNG, and TXT (case-insensitive). Minimum file size is 1 kB. Please refer to the Sample Requests section for reference implementations. |
createdIpAddress | string | No | Requested IP Address |
Example Request¶
import axios from 'axios';
import FormData from 'form-data';
const apiHost = process.env.TAPI_HOST || 'https://api-sandboxdash.norcapsecurities.com';
const tapi = axios.create({
baseURL: `${apiHost}/v3`,
timeout: 60000,
});
const auth = {
clientID: process.env.TAPI_CLIENT_ID,
developerAPIKey: process.env.TAPI_API_KEY,
};
// `file` is a multer-style object: { buffer, originalname }
const uploadVerificationDocument = (accountId, documentTitle, file) => {
const data = new FormData();
data.append('clientID', auth.clientID);
data.append('developerAPIKey', auth.developerAPIKey);
data.append('accountId', accountId);
// Single file: send the plain title. No `documentTitle0=` prefix — it is stored verbatim.
data.append('documentTitle', documentTitle);
data.append('userfile', file.buffer, { filename: file.originalname });
return tapi.post('/uploadVerificationDocument', data, { headers: data.getHeaders() });
};
Response¶
| Field | Type | Description |
|---|---|---|
document_details | string | Confirmation message: Document has been uploaded Successfully |
Error(s) | string | (optional) Provides more information about an error response |