{"_id":"@instabrain-sdks/api-client","_rev":"14-4a3785d69eef3391f32c3a656c121645","name":"@instabrain-sdks/api-client","dist-tags":{"latest":"2.6.0"},"versions":{"1.0.0":{"name":"@instabrain-sdks/api-client","version":"1.0.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@1.0.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"a692b12af92642c2138716c03bba58fd205338bf","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-1.0.0.tgz","fileCount":62,"integrity":"sha512-1ZF2Ap8ll/acx/ZRee9Z9shfHDB/cXmhw4emeVyU27UWO+Kh4/3TDbX9KkxHqwr8W+/vmjdqe1qe7+TrOi5Hxw==","signatures":[{"sig":"MEYCIQCSHFyVc7LcG35rtSuFgmlWVm7RSxk0vbC9eDcyl3LH/QIhAIuLvhay5lob7G+PaWyVNhW/lPs9Onn0hx1GNXg6mEhe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117807},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"92394e7c318e2eb4dbf1dc4f796e76a638ebee61","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","actor":{"name":"instabrain","type":"user","email":"instant@instabrain.io"},"email":"instant@instabrain.io"},"_npmVersion":"10.9.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_1.0.0_1751978432572_0.43451031144959296","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@instabrain-sdks/api-client","version":"2.0.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.0.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"4125e071a0ae8d7df62f183e6df04fb52b5091e1","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.0.0.tgz","fileCount":82,"integrity":"sha512-2dYOiv9zOPzMmZxZZS9LHY5AwgXEsGz8nAQwbnU5mRbxdTSnQ/TWQyPcGUrUY+40YtV6ytr4lsqNWrDz12V8Lw==","signatures":[{"sig":"MEYCIQDl4eknnckE9KX/rzh034p5C46A5gXsrRt3zeRNUJBrggIhANKfRT6LSEuASt+gDxHTOGgienKay0T0pADoiVHPDJVG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184346},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"445812b76837a717d6ab6dbd750e8990f2c4e971","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"11.6.1","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"24.11.0","dependencies":{"axios":"^1.6.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.0.0_1774617063323_0.10327433852875978","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@instabrain-sdks/api-client","version":"2.0.1","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.0.1","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"a8160e55894d588f2cd97f65cbc994d7985f3cfb","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.0.1.tgz","fileCount":82,"integrity":"sha512-URu+/rNfM1Z3NZ5qVAD0omAWOUZNzEHznq1HfJ7s8lEJHImvEWgYpVprAiO8ityVKTtef5OB18AdANt4Aza++g==","signatures":[{"sig":"MEQCIFRsNgIafbtNWbBoBjOg1ls1iR8ZcjVbykbn/RDce6ppAiBNZCluNZPkKV/XF3ReuGPQDHWHhnf+dvebEt0MbBytQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184408},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"16a6713318f71286d94899b8ec72bd46d4a8e325","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"11.6.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.6.0","@instabrain-sdks/api-client":"^2.0.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.0.1_1774621191016_0.39530000625626327","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@instabrain-sdks/api-client","version":"2.1.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.1.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"99af99a623963d0d28a95d85718b00efef6dca41","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.1.0.tgz","fileCount":90,"integrity":"sha512-2kulV7ziEsu9Zuwb9TJygDMKyoprctF64m5hBy5tX9gxIfMslbFAi+HroW3KS8L8N6Ph5pfAtcRcYKmtx3X1eQ==","signatures":[{"sig":"MEUCIQDjXblrSCPo4hKC/x6xCnQZVn4jhPCdY+uV9SCXu5PPsQIgHkXl5BkvckyBI/wJddD6UuLXzR5ewJJ7xCf/sHsmcUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254975},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"c4aec76594097a286d872cbda393e55c595fd583","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"11.6.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.13.5"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.1.0_1775229364685_0.8625492156010568","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@instabrain-sdks/api-client","version":"2.2.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.2.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"a1935f2a82b2320de0ef5b89d53de980d4c27f39","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.2.0.tgz","fileCount":50,"integrity":"sha512-jtvlyBipsProggE1EaLU4x9qwUMZqcrrCUXAltu2OVYxeTgmbw+KWkFRAnaCFjJU0T6htQQeXP1xG9ULMrrXIQ==","signatures":[{"sig":"MEYCIQDcBxgUavoOFyTq5rwVdmIy5afw/mgdOsi/I2scurn0KQIhAIa00uMl6+HTQOrFS1nRNXf4YhZI3RzgMDNL+qKOlL7E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223697},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"3df6d0551fd4dd0e0e40d480667fca2eb68c930b","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"11.6.1","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"24.11.0","dependencies":{"axios":"^1.13.5"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.2.0_1778163963361_0.16167767451269888","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@instabrain-sdks/api-client","version":"2.2.1","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.2.1","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"857cff89aa305453095283c5bc87e99c1b7ebb1d","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.2.1.tgz","fileCount":50,"integrity":"sha512-NtVCET567k+OoUcceR1KOkyhGkCtzGdwRd5udeL/TNIp+OsMpfq8JVBe1B9BRAWwLKBUCINFBork/IhKPgvTNQ==","signatures":[{"sig":"MEYCIQCQzwNvD5/T/disPEXJIwnAQzrvebp9OL4TABYTmqjazwIhAKJrPvitgVAF99xrHAJMImb8egplhcqklrAFH+qE8mZd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223697},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"3f499ab66513cf7614e2ad693c4a514e514e3962","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"11.6.1","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"24.11.0","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.2.1_1778583580664_0.8541088208510437","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@instabrain-sdks/api-client","version":"2.2.2","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.2.2","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"fa3263dc20ac29a2fd9f845659a150bdb6ed4bbd","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.2.2.tgz","fileCount":50,"integrity":"sha512-8aDqFzPXtGlzCdl2PRuo0mWSLPAeLdyKPgjc3FbUmsryJ4YSnY80vYAJDlGHhmAsF4FYwwPsA2qVtY6CA5hi6g==","signatures":[{"sig":"MEUCIEJg1BLs5Eltx//krbpAhm00OU3IPN90JkyxuwSUxUoDAiEAp/PBvoqfOkJVZAt05558/qLGlYmjz6pSM4rm9izmg1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222012},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"83e734f7c6d2bedac3751f6c211e2b9e19bd11ec","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.2.2_1778866568118_0.19714719023126825","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@instabrain-sdks/api-client","version":"2.3.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.3.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"00f41db87c8ff897d3a23c55c12e9d1cfdcc872a","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.3.0.tgz","fileCount":54,"integrity":"sha512-4ww0nU17JPmrhDvuYU7Hs/g5Tt2mX2qkjM7/cAI343ov2KpvMidPDddjwp+gAsy4emUDZxqcZREx/a7zUS5kNQ==","signatures":[{"sig":"MEQCIERO3ibugZmxfDhU28pZk8StHQ4ErQZ+4L0fIJEZGUBOAiAmVeVjFXPc5xgM/PNxEM2eM7fZDEIBnJVPlV000QtKXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313638},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"8a5f543a9f23c79ddc0ff4e9a2660dedc8a17e45","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.3.0_1780408162115_0.34422178179578156","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@instabrain-sdks/api-client","version":"2.3.1","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.3.1","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"d52fa60684ec81cbec867e72719935d9dc743dcb","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.3.1.tgz","fileCount":54,"integrity":"sha512-nJ0gkWYJE8MmOlyTOgR5oQsfq85PP3gZ9VpUSt4v7Lr/SjxX4SF8z4x6BdUTnQsHNdHwYtllu4ev+ptEyHhp7g==","signatures":[{"sig":"MEYCIQDTEacrNqjI+OOvFKv4oPiyIqU7H7hBMXpYl6rd4WvVyQIhAJGIMpIlN4647GU/8zf5J3CPlhB6PNKof6IOcCpMUG2X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338891},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"40ed7382ceed54f6f82339a51c1b64580574e275","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.3.1_1780497877831_0.6284335702179169","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@instabrain-sdks/api-client","version":"2.3.2","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.3.2","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"5be6a50cf5a85d310469854f92f400e4e71c9af7","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.3.2.tgz","fileCount":54,"integrity":"sha512-SzsOUMdk4z6Joc7coUaYVY2n5okeU3daGAf5WaOfm2Zbwx0fXq8pZ3HADUsRAu4610fRi6z4skr1i5mfYO1MyQ==","signatures":[{"sig":"MEUCIQCnl3rXsrZ1AqA3ZBKDyzpAckREM+1R7UBF9gaucdsU6gIgIG6vzxsbb0RlAZfhFy6tyb8dh6BkWeTEsyNXIGsD62Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294557},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"4d0142929bac7ba3bea0d3ff273bf3f3292f1c7c","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.3.2_1780672467761_0.5363885311914642","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"@instabrain-sdks/api-client","version":"2.3.3","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.3.3","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"b3cdb920936fd3ec81a8708939ec214634834acb","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.3.3.tgz","fileCount":58,"integrity":"sha512-F9HtQydCBzWEJokdpmQWwZT8Ja3XPc92gz9KZK7FCTI6v2bgQqBDMRaQLskq5atqcJYTj7X/xRY++xvSz3meXA==","signatures":[{"sig":"MEUCIQCctn9vTlrHx65c2qL8rvt0sbxtZqn+74K5EsikMi49YgIgEEGM7HXOTcmBGb8+z9jJ0WCAHef4ASd17TJmfN3brB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311509},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"f0cd880c3e5f870dd181a1c40ab377b4d9e71218","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.3.3_1780930291865_0.6595827437840314","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@instabrain-sdks/api-client","version":"2.4.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.4.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"e139ab4ce233cde9cd557d1b828fd0cc0cf59943","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.4.0.tgz","fileCount":62,"integrity":"sha512-hwea5Ff4hWjSO2/rbdkr66DBEc5yyQfsoUFdDfs5+388LlQ/aaE1FKp8ZkrDeXb0IPEyR+SefIGwO6bGD+II2Q==","signatures":[{"sig":"MEQCIE4DHge02xO4zQawRswV6UE3MdeHWBmFbajgW/Y4BIjDAiAR0f4PmC9lX+hRcP1cg9cTcmxrP9+5SjmQonmU2iOSyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401476},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"277a8f134f8a12f5cbd64dab82c1198155de7572","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.4.0_1782995030752_0.7437090072564014","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@instabrain-sdks/api-client","version":"2.5.0","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"UNLICENSED","_id":"@instabrain-sdks/api-client@2.5.0","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"dist":{"shasum":"a228386ccbaa664aeccfb5733a1d96d6bba47a36","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.5.0.tgz","fileCount":66,"integrity":"sha512-ZGjZmIgJV+2gLX32uPkXoawiivSkb/EhT+scZk+uPs3s/zqbxcm34VSggkqGvP6XDjm5nJYlBIOwqkoXxmC3dA==","signatures":[{"sig":"MEUCICt/78RBt6ghMeHorTX+cN5kbbrls4+hgw3An5lVsoWJAiEAmuaO+g2QB2IR/Mfdcli3vd/k4Xu7cxcq1IaJ+/mXG0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":501988},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"cc7c09e790cbf1e1c11d902fb82fc40c862ebb9f","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","prepare":"npm run build","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"_npmVersion":"10.8.2","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.16.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.50.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/api-client_2.5.0_1786017145260_0.43759291104123976","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@instabrain-sdks/api-client","version":"2.6.0","description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","prepare":"npm run build","docs":"typedoc src/index.ts"},"keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"author":{"name":"InstaBrain"},"license":"LicenseRef-InstaBrain-Proprietary","homepage":"https://www.instabrain.io","bugs":{"url":"https://www.instabrain.io","email":"helpdesk@instabrain.io"},"publishConfig":{"access":"public"},"engines":{"node":">=14.0.0"},"dependencies":{"axios":"^1.16.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.50.0","jest":"^29.5.0","ts-jest":"^29.1.0","typedoc":"^0.26.0","typescript":"^5.5.0"},"_id":"@instabrain-sdks/api-client@2.6.0","gitHead":"1a80a9bc8cfd2f12674fc22c5523e39482e03486","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-JWijFIPCMYA0jUJmTKzmrL1BuZHxyaLeR35Q+zM8NGMN0iI9htDUqqqzjX2wVt6v9EkAGtHhs05JNiSn2dBzuw==","shasum":"028a2416426a13b340aec748d969cae8ecd285ce","tarball":"https://registry.npmjs.org/@instabrain-sdks/api-client/-/api-client-2.6.0.tgz","fileCount":71,"unpackedSize":552779,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC3dzb6X0T9u4gOIw03kF/i1vaHZbkEouh/VIsTRxhviQIhANicaKCit/P92gvFq23ZizZ6K/7h7EOV8IBjxuH5qzrq"}]},"_npmUser":{"name":"instabrain","email":"instant@instabrain.io"},"directories":{},"maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/api-client_2.6.0_1788249155510_0.07489892708465429"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-08T12:40:32.501Z","modified":"2026-09-01T07:52:35.897Z","1.0.0":"2025-07-08T12:40:32.874Z","2.0.0":"2026-03-27T13:11:03.455Z","2.0.1":"2026-03-27T14:19:51.201Z","2.1.0":"2026-04-03T15:16:04.828Z","2.2.0":"2026-05-07T14:26:03.507Z","2.2.1":"2026-05-12T10:59:40.799Z","2.2.2":"2026-05-15T17:36:08.277Z","2.3.0":"2026-06-02T13:49:22.243Z","2.3.1":"2026-06-03T14:44:37.962Z","2.3.2":"2026-06-05T15:14:27.916Z","2.3.3":"2026-06-08T14:51:32.009Z","2.4.0":"2026-07-02T12:23:50.907Z","2.5.0":"2026-08-06T11:52:25.460Z","2.6.0":"2026-09-01T07:52:35.663Z"},"author":{"name":"InstaBrain"},"license":"LicenseRef-InstaBrain-Proprietary","keywords":["instabrain","insurance","quotes","api","sdk","nodejs","typescript"],"description":"Official Node.js SDK for InstaBrain APIs - Insurance quotes and application processing","maintainers":[{"name":"instabrain","email":"instant@instabrain.io"}],"readme":"# @instabrain-sdks/api-client\n\n[![npm version](https://badge.fury.io/js/%40instabrain-sdks%2Fapi-client.svg)](https://badge.fury.io/js/%40instabrain-sdks%2Fapi-client)\n\nTypeScript SDK for Node.js. All operations go through `InstaBrainClient` — request/response types are exported from `@instabrain-sdks/api-client`.\n\n**Products covered:** GIGDB, ADB, IB Term, Pure Term.\n\n- **GIGDB & ADB** — full client flow: `get*Quote()` → `start*Application()` → `saveEftPayment()` → SecureSign methods → `finalSubmit()`.\n- **IB Term** — client flow ends at `startIBTermApplication()`; use returned `agentLink` / `applicantLink` / `eAppAgentLink` for the InstaBrain frontend.\n- **Pure Term** — pre-fill flow: `getPureTermQuote()` → `startPureTermApplication()`; use returned links for the InstaBrain frontend.\n\n```typescript\nimport { InstaBrainClient } from '@instabrain-sdks/api-client';\n\nconst client = InstaBrainClient.forEnvironment('sandbox');\nawait client.authenticate(userId, accessToken);\n```\n\nCredentials (`userId` and `accessToken`) are provisioned during onboarding.\n\n---\n\n## Table of Contents\n\n1. [Installation](#installation)\n2. [Requirements](#requirements)\n3. [Authentication](#authentication)\n4. [GIGDB](#gigdb)\n   - [Integration flow](#integration-flow)\n   - [Get quote](#gigdb--get-quote)\n   - [Start application](#gigdb--start-application)\n   - [Get existing quote](#gigdb--get-existing-quote)\n   - [Update quote](#gigdb--update-quote)\n5. [ADB](#adb)\n   - [Integration flow](#integration-flow-1)\n   - [Rider lookup](#adb--rider-lookup)\n   - [Occupation lookup (CA)](#adb--occupation-lookup-ca-only)\n   - [Get quote](#adb--get-quote)\n   - [Start application](#adb--start-application)\n   - [Get existing quote](#adb--get-existing-quote)\n   - [Update quote](#adb--update-quote)\n6. [IB Term](#ib-term)\n   - [Integration flow](#integration-flow-2)\n   - [Rider lookup](#ib-term--rider-lookup)\n   - [Get quote](#ib-term--get-quote)\n   - [Start application](#ib-term--start-application)\n   - [Get existing quote](#ib-term--get-existing-quote)\n7. [Pure Term](#pure-term)\n   - [Integration flow](#integration-flow-3)\n   - [Rider lookup](#pure-term--rider-lookup)\n   - [Get quote](#pure-term--get-quote)\n   - [Get existing quote](#pure-term--get-existing-quote)\n   - [Start application](#pure-term--start-application)\n8. [Final Expense](#final-expense)\n   - [Integration flow](#integration-flow-4)\n   - [Get quote](#final-expense--get-quote)\n   - [Start application](#final-expense--start-application)\n   - [Get existing quote](#final-expense--get-existing-quote)\n   - [Update quote](#final-expense--update-quote)\n   - [Underwriting status (async)](#final-expense--underwriting-status-async)\n   - [GIGDB pivot after a decline](#gigdb-pivot--after-a-final-expense-decline)\n9. [Shared methods — GIGDB, ADB & Final Expense](#shared-methods--gigdb-adb--final-expense)\n   - [Payment — EFT or credit card](#payment--eft-or-credit-card)\n   - [Get credit card iframe URL](#get-credit-card-iframe-url)\n   - [Credit card payment status](#credit-card-payment-status)\n   - [Save EFT payment](#save-eft-payment)\n   - [Prepare docs & get delivery channels](#prepare-docs--get-delivery-channels)\n   - [Send PIN & get documents link](#send-pin--get-documents-link)\n   - [Resend PIN](#resend-pin)\n   - [Verify PIN](#verify-pin)\n   - [Final submit](#final-submit)\n10. [Reporting](#reporting)\n   - [Request fields](#request-fields-shared-shape)\n   - [Filters (`SQLOperator`)](#filters--sqloperator-enum)\n   - [Response shapes](#response-shapes)\n11. [Enums & Constants](#enums--constants)\n12. [Beneficiary Reference](#beneficiary-reference)\n    - [No extra fields](#variant-1--no-extra-fields)\n    - [Named person](#variant-2--named-person)\n    - [Named entity](#variant-3--named-entity)\n13. [Error Handling](#error-handling)\n    - [Error class hierarchy](#error-class-hierarchy)\n    - [Using `APIValidationError`](#using-apivalidationerror)\n    - [`BaseResponse<T>` envelope](#baseresponset-envelope)\n    - [Field-level error messages](#field-level-error-messages)\n14. [Error codes (`APIErrorCode`)](#apierrorcode-reference)\n    - [Quote errors](#quote-errors)\n    - [Start application errors](#start-application-errors)\n    - [Payment & quote update errors](#payment--quote-update-errors)\n    - [Secure Sign errors](#secure-sign-errors)\n    - [Final submit errors](#final-submit-errors)\n    - [Session](#session)\n    - [Deprecated codes (reference only)](#deprecated-codes-reference-only)\n15. [Environment Configuration](#environment-configuration)\n16. [Token Management](#token-management)\n17. [Examples Directory](#examples-directory)\n18. [Support](#support)\n\n---\n\n## Installation\n\n> **Proprietary License Notice.** This package is proprietary software, not open-source software. Downloading, installing, copying, accessing, or using it is subject to [LICENSE.md](LICENSE.md). Without an executed InstaBrain agreement, use is limited to one ninety-day, non-production evaluation; production, commercial, and end-user-facing use requires an executed agreement.\n\n```bash\nnpm install @instabrain-sdks/api-client\n```\n\n> **Note:** This is a restricted-access package. Access must be granted during the InstaBrain onboarding process.\n\n---\n\n## Requirements\n\n- Node.js >= 14.0.0\n- TypeScript >= 4.0 *(optional — the SDK ships with full type definitions)*\n\nIn request field tables, **Type** matches the SDK TypeScript definitions. **Required** values:\n\n| Value | Meaning |\n|---|---|\n| `Yes` | Must be sent with a non-null value |\n| `No` | Optional; may be omitted |\n| `Yes*` | Send one of the fields marked `Yes*` in that table |\n| `Yes**` | Send either `dayCount` or both `startDate` and `endDate` (see table footnote) |\n| `One of †` | Send exactly one rating group (see † footnote on that table) |\n| `Conditional` | Required only when the condition in the description or notes applies |\n\n---\n\n## Authentication\n\n**Method:** `client.authenticate(userId, accessToken)`\n\n\n**Token validity:** 30 minutes. Design your system to refresh before expiry.\n\n```typescript\nimport { InstaBrainClient } from '@instabrain-sdks/api-client';\n\nconst client = InstaBrainClient.forEnvironment('sandbox'); // or 'production'\nawait client.authenticate(userId, accessToken);\n// JWT is stored internally — all subsequent calls include it automatically\n```\n\n| Parameter     | Type     | Description              |\n|---------------|----------|--------------------------|\n| `userId`      | `number` | Account user ID          |\n| `accessToken` | `string` | UUID secret access token |\n\n| Environment | Code |\n|-------------|----------|\n| Sandbox     | sandbox |\n| Production  | production |\n\n---\n\n## GIGDB\n\n**Guaranteed Issue Guaranteed Death Benefit** — whole life product, no medical exam.\n\n- **Eligible ages:** 50–85\n- **Face amount:** $5,000–$25,000\n- **Not available in:** NY, MT\n- **Requires:** `isSmoker` on both quote and application; `birthJurisdiction` on application\n\n---\n\n## Integration flow\n\n```\n1.  [`getGigdbQuote()`](#gigdb--get-quote)                               Get quote → quoteResponseId\n2.  [`startGigdbApplication()`](#gigdb--start-application)              Start app → opportunityId\n    ├── isDeclined = true      → STOP (valid knockout, not an error)\n    └── isQuoteChanged = true  → call `getExistingGigdbQuote()` to fetch updated premium\n3.  [`getExistingGigdbQuote()`](#gigdb--get-existing-quote)                [When isQuoteChanged=true, or resuming a prior session]\n4.  [`updateGigdbQuote()`](#gigdb--update-quote)                            [Optional] Change face amount / payment freq (before EFT only)\n5.  [`saveEftPayment()`](#save-eft-payment)                       Save bank details — locks the quote\n6.  [`prepareDocsAndGetDeliveryChannels()`](#prepare-docs--get-delivery-channels)\n    └── isSignCompleted = true → skip to step 9\n7.  [`sendPinAndGetDocumentsLink()`](#send-pin--get-documents-link)\n8.  [`verifyPin()`](#verify-pin)\n9.  [`finalSubmit()`](#final-submit)                       → policyNumber\n```\n\n> Steps 5–9 are documented under [Shared methods — GIGDB & ADB](#shared-methods--gigdb--adb).\n\n---\n\n## GIGDB — Get Quote\n\n**Method:** `client.getGigdbQuote(request)` · **Type:** `ThirdPartyGigdbQuoteRequest`\n\n\n***\n\n### Request Fields\n\n| Field | Type | Required | Description | Validation Error |\n|---|---|---|---|---|\n| `faceAmount` | `number` | Yes | Coverage amount in dollars ($5,000–$25,000, in $1,000 increments; flat across ages 50–85) | `Coverage amount (FaceAmount) is required.` |\n| `gender` | `Gender` | Yes | `Gender.Male`, `Gender.Female` | `Gender is required.` / `Invalid gender.` |\n| `stateCode` | `string` | Yes | 2-letter US state code | `State code is required.` / `State code is not valid.` |\n| `age` | `number` | Yes* | Applicant age — must be 50–85 | `Either age or date of birth must be provided.` / `Age must be between 50 and 85 for GIGDB.` |\n| `dateOfBirth` | `string` (ISO 8601) | Yes* | Date of birth — derived age must be 50–85 | `Date of birth must be a valid date.` |\n| `paymentFreq` | `PaymentFrequency` | Yes | `\"Monthly\"` or `\"Annually\"` | `Payment frequency is required.` / `Invalid payment frequency.` |\n| `isSmoker` | `boolean` | Yes | Smoker status — affects premium | `Smoker status is required.` |\n| `firstName` | `string` | No | Alphabetic only — lead capture | `First name is invalid. Only alphabetic characters are allowed.` |\n| `lastName` | `string` | No | Alphabetic only — lead capture | `Last name is invalid. Only alphabetic characters are allowed.` |\n| `email` | `string` | No | Lead capture | `Please enter a valid email address.` |\n| `phoneNum` | `string` | No | 10 digits or E.164 — lead capture | `Phone number format is incorrect. Use 10 digits or +1XXXXXXXXXX.` / `Phone number is invalid.` |\n\n> *Provide `age` OR `dateOfBirth`. When both are sent, `dateOfBirth` takes priority.\n\n\n***\n\n### Business Rules\n\n1. `isSmoker` is required and affects premium calculation.\n2. Age is validated against 50–85 range after derivation from `dateOfBirth`.\n3. GIGDB is not available in NY and MT.\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any field validation failure — inspect `value.fields` for details |\n| `StateNotFound` | State code not recognized |\n| `AgeNotFound` | Neither age nor date of birth supplied, or age could not be derived |\n| `ProductNotAvailableForState` | Request validation — GIGDB has no carrier configuration for that state, or is flagged unavailable there. Message under `value.fields.StateCode` |\n| `AgentNotLicensedForState` | Request validation — the authenticated agent is not licensed in that state. Message under `value.fields.StateCode` |\n| `NotAvailableForState` | GIGDB not available in the requested state |\n| `QuoteNotEligibleForGivenConditions` | State / age / smoker combination not eligible |\n| `CoverageNotAvailable` | Face amount outside allowed range for state / age / smoker |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `productName` | `string` | `\"InstaGIGDB\"` |\n| `selectedQuote.quoteResponseId` | `string` | Pass as `quoteResponseId` in Start Application |\n| `selectedQuote.quoteAmount` | `number` | Premium at requested payment frequency |\n\n\n***\n\n### Example\n\n```typescript\nimport { InstaBrainClient, Gender, PaymentFrequency } from '@instabrain-sdks/api-client';\n\nconst quoteResp = await client.getGigdbQuote({\n  faceAmount: 15000,\n  gender: Gender.Female,\n  stateCode: 'TX',\n  age: 65,\n  paymentFreq: PaymentFrequency.Monthly,\n  isSmoker: false\n});\n\nconst { quoteResponseId, quoteAmount } = quoteResp.selectedQuote;\n```\n\n---\n\n## GIGDB — Start Application\n\n**Method:** `client.startGigdbApplication(request)` · **Type:** `ThirdPartyGigdbAppReq`\n\n\n***\n\n### Top-Level Request Fields\n\n| Field | Type | Required | Applicant-Facing Question | Validation Error |\n|---|---|---|---|---|\n| `quoteResponseId` | `string` | Yes | — | `QuoteResponseId is required.` / `QuoteResponseId does not exist or does not belong to the requested product.` |\n| `firstName` | `string` | Yes | *First Name* | `First name is required.` / `First name is invalid. Only alphabetic characters are allowed.` |\n| `lastName` | `string` | Yes | *Last Name* | `Last name is required.` / `Last name is invalid. Only alphabetic characters are allowed.` |\n| `email` | `string` | Yes | *Email Address* | `Email is required.` / `Please enter a valid email address.` |\n| `phoneNumber` | `string` | Yes | *Preferred Phone Number* | `Phone number is required.` / `Phone number format is incorrect. Use 10 digits or +1XXXXXXXXXX.` |\n| `dateOfBirth` | `string` (ISO 8601) | Yes | *Date of Birth* | `Date of birth is required.` / `Date of birth must be a valid date in the past.` / `Age must be between 50 and 85 for GIGDB.` |\n| `isUsCitizen` | `boolean` | Yes | *Are you a United States citizen?* | `US citizenship status is required.` |\n| `isLegalUsResident` | `boolean` | Conditional | *Are you a legal U.S. resident and have you resided in the U.S. for more than 2 years?* | `Legal US residency status is required for non-US citizens.` |\n| `isPayerAlsoOwnerAndInsured` | `boolean` | Yes | *This product requires that the payer, the person purchasing the policy, and the owner are the same person. Please confirm that you are both the insured individual and will also be the owner of the policy.* | `IsPayerAlsoOwnerAndInsured field is required.` |\n| `socialSecurityNumber` | `string` | Yes | *Social Security Number* | `Social Security Number is required.` / `Social Security Number must be in valid format (e.g., XXX-XX-XXXX).` |\n| `isSmoker` | `boolean` | Yes | *Within the past 2 years have you used tobacco or any other product that contains nicotine?* | `Smoker status is required.` |\n| `hasExistingCoverage` | `boolean` | Yes | See state-specific wording below | `Existing coverage field is required` |\n| `willOtherCoverageBeReplacedOrFinanced` | `boolean\\|null` | Conditional | See state-specific wording below | `Please indicate whether any other coverage will be replaced or financed.` / `Other Coverage be replaced or financed must be either null or false as no existing coverage passed.` |\n\n> `isLegalUsResident` required when `isUsCitizen = false`.  \n> `willOtherCoverageBeReplacedOrFinanced` required when `hasExistingCoverage = true`; must be `null` or `false` when `hasExistingCoverage = false`.  \n> `socialSecurityNumber` must be **9 consecutive digits, no dashes** (e.g. `123456789`). The `XXX-XX-XXXX` text in validation messages shows digit positions only.\n\n\n***\n\n### `hasExistingCoverage` — State-Specific Question Text\n\n| States | Exact Question |\n|---|---|\n| AR, CO, DE, DC, IA, KY, NJ, OK, PA, VA | *Do you have any existing life or health coverage in force or is any application for life or health coverage, or reinstatement, now pending?* |\n| AZ, ID, IN, MI, MS, NV | *Do you have any existing life or health coverage in force or is any application for life or annuity coverage, or reinstatement, now pending?* |\n| All others | *Do you have any existing life insurance or annuity contracts in force or is any application for life insurance, or reinstatement now pending with any insurance company?* |\n\n\n***\n\n### `willOtherCoverageBeReplacedOrFinanced` — State-Specific Question Text\n\n| States | Exact Question |\n|---|---|\n| AR, CO, DE, DC, IA, KY, NJ, OK, PA, VA | *If this policy is issued, will any other existing life or health coverage be cancelled, terminated, lapsed or not renewed?* |\n| AZ, ID, IN, MI, MS, NV | *If this policy is issued, will any other existing life or annuity coverage be cancelled, terminated, lapsed or not renewed?* |\n| All others | *If this policy is issued, will any other existing life insurance or annuity contract be cancelled, lapsed or not renewed, or are you considering using funds from your existing policies or contracts to pay premiums on the new policy or contract?* |\n\n\n***\n\n### Address\n\n| Field | Type | Required | Question | Validation Error |\n|---|---|---|---|---|\n| `address.addressLine1` | `string` | Yes | *Street* | `Address line is required.` / `Street address is invalid. Avoid special characters.` |\n| `address.city` | `string` | Yes | *City* | `Address city is required.` / `City name is invalid. Only letters and spaces are allowed.` |\n| `address.state` | `string` | Yes | *State* | `Residence state is required.` / `Residence state code is invalid.` |\n| `address.zipcode` | `string` | Yes | *Zip Code* | `Zip code is required.` / `Zip code is invalid. It must be in 5-digit format.` / `Zip code is not found.` |\n\n\n***\n\n### Birth Jurisdiction\n\n| Field | Type | Required | Question | Validation Error |\n|---|---|---|---|---|\n| `birthJurisdiction.country` | `string` | Yes | *Birth Country* | `Birth jurisdiction details are required.` / `Birth country is required when applicant is not a U.S. citizen.` / `Birth country code is invalid.` |\n| `birthJurisdiction.state` | `string` | Conditional | *State (Birth Jurisdiction)* | `Birth state is required when applicant is a U.S. citizen.` / `Birth state code is invalid.` |\n\n> `birthJurisdiction.state` required when `birthJurisdiction.country = \"US\"`.\n\n\n***\n\n### Nicotine Info (required when `isSmoker = true`)\n\n| Field | Type | Required | Question | Validation Error |\n|---|---|---|---|---|\n| `nicotineInfo.lastUseDate` | `string` (`YYYY-MM`) | Yes (when smoker) | *When was the last time you used tobacco or any other product that contains nicotine?* | `Nicotine details are required when applicant is a smoker.` / `Last nicotine use date is required when applicant is a smoker.` / `Nicotine last use date must be in YYYY-MM format.` |\n\n\n***\n\n### Existing Coverage (when `hasExistingCoverage = true`)\n\n| Field | Type | Required | Question | Validation Error |\n|---|---|---|---|---|\n| `existingCoverageData.isExistingPolicyBeingTerminated` | `boolean` | No | *Are you considering discontinuing making premium payments, surrendering, forfeiting, assigning to the insurer, or otherwise terminating your existing policy or contract?* | `Please indicate whether any existing policy is being terminated.` |\n| `existingCoverageData.existingCoverages[n].nameOfTheCompany` | `string` | Yes | *Name of Company (Enter unknown if company name is not available)* | `Please provide the name of the insurance company.` |\n| `existingCoverageData.existingCoverages[n].insuranceAmount` | `string` | Yes | *Insurance Amount* | `Insurance amount must be provided.` |\n| `existingCoverageData.existingCoverages[n].dateOfIssue` | `string` (`YYYY-MM`) | Yes | *Date of Issue* | `Please provide Date of Issue in YYYY-MM format` / `Date of issue must be in YYYY-MM format.` |\n| `existingCoverageData.existingCoverages[n].toBeReplaced` | `boolean` | Yes | *To Be Replaced* | `Replacement coverage answer must be specified.` |\n| `existingCoverageData.existingCoverages[n].toBeFinanced` | `boolean` | Yes | *Are you considering using funds from your existing policies or contracts to pay premiums due on the new policy or contract?* | `Financing coverage answer must be specified.` |\n\n\n***\n\n### State-Specific Existing Coverage Fields\n\n| State(s) | Field on `existingCoverages[n]` | Exact Question | Validation Error |\n|---|---|---|---|\n| MA | `requestsYieldIndices` | *Would you like to request yield indices for cash value policies?* | `Please indicate whether yield indices for cash value policies are requested (required for Massachusetts).` |\n| OK | `notifyPresentInsurer` | *Please notify my present insurer(s) regarding this transaction?* | `Please indicate whether to notify present insurer(s) (required for Oklahoma).` |\n| DE, GA | `wantsPolicySummary` | *Do you want a policy summary statement from your existing insurer?* | `Please indicate whether you want a policy summary statement (required for Delaware and Georgia).` |\n| FL | `wantsComparativeInformationForm` | *Indicate whether or not you wish a Comparative Information Form from the proposed company and your existing insurer or insurers?* | `Please indicate whether you want a Comparative Information Form (required for Florida).` |\n\n| State(s) | Field on `existingCoverageData` | Exact Question | Validation Error |\n|---|---|---|---|\n| RI, WV | `areExistingPoliciesIssuedByFidelity` | *Are any of your existing policies issued by Fidelity Life Association?* | `Please indicate whether any existing policies are issued by Fidelity Life Association (required for RI and WV).` |\n\n\n***\n\n### Replacement / Financing Data (when `willOtherCoverageBeReplacedOrFinanced = true`)\n\nFor **KS**, populate `willOtherCoverageBeReplacedOrFinancedData.areReplacedPoliciesIssuedByFidelity`:\n\n| Field | Exact Question | Validation Error |\n|---|---|---|\n| `areReplacedPoliciesIssuedByFidelity` | *Are any of the policies you are considering replacing issued by Fidelity Life Association?* | `Please indicate whether any policies being replaced are issued by Fidelity Life Association (required for Kansas when replacing or financing coverage).` |\n\nFor **WA**, populate `willOtherCoverageBeReplacedOrFinancedData.otherInsuranceReplacementData`. All 7 booleans are required. For each boolean set to `true`, the paired `specify*` string is required.\n\n| Field | Exact Question |\n|---|---|\n| `mayReduceBenefitsIncreasePremiums` | *Can there be reduced benefits or increased premiums in later years?* |\n| `specifyReduceBenefitsIncreasePremiums` | *Please explain* |\n| `hasNewPolicyCharges` | *Are there penalties, set up or surrender charges for the new policy?* |\n| `specifyNewPolicyCharges` | *Please explain, emphasizing any extra cost for early withdrawal.* |\n| `hasPriorPolicyCharges` | *Will there be penalties or surrender charges under the existing insurance as a result of the proposed transaction?* |\n| `specifyPriorPolicyCharges` | *Please explain* |\n| `hasTaxConsequences` | *Are there adverse tax consequences from the replacement under current tax law?* |\n| `specifyTaxConsequences` | *Please explain* |\n| `hasInterestConsiderations` | *Are interest earnings a consideration in this replacement?* |\n| `specifyInterestConsiderations` | *Please explain what portions of premiums or contributions will produce limited or no earnings. As pertinent, include the need for minimum deposits to enhance earnings, and the reduction of earnings that may result from set up charges, policy fees, and other factors.* |\n| `hasMinRequirementsBeforeInterest` | *Are minimum amounts required to be on deposit before excess interest will be paid?* |\n| `specifyMinRequirementsBeforeInterest` | *Please explain* |\n| `hasOtherAdverseEffects` | *Are there other short or long term effects from the replacement that might be materially adverse?* |\n| `specifyOtherAdverseEffects` | *Please explain* |\n\nWA Validation Errors:\n\n| Field | Error |\n|---|---|\n| `WillOtherCoverageBeReplacedOrFinancedData` | `State-specific replacement data is required when other coverage will be replaced or financed.` |\n| `WillOtherCoverageBeReplacedOrFinancedData.OtherInsuranceReplacementData` | `Washington replacement disclosure answers are required when replacing or financing coverage.` |\n| `WillOtherCoverageBeReplacedOrFinancedData.OtherInsuranceReplacementData[n]` | `Each Washington replacement disclosure question must be answered.` |\n| `WillOtherCoverageBeReplacedOrFinancedData.OtherInsuranceReplacementData[n].Explain` | `Please explain is required when the answer is Yes.` |\n\n\n***\n\n### Beneficiary Details\n\nSee [Beneficiary Reference](#beneficiary-reference). GIGDB accepts all `BeneficiaryType` values.\n\n| Field | Type | Required | Validation Error |\n|---|---|---|---|\n| `beneficiaryDetails.beneficiaryType` | `string` | Yes | `Beneficiary details are required.` / `Please select a valid beneficiary option.` |\n| `beneficiaryDetails.beneficiaryPerson.firstName` | `string` | Yes (Person) | `Beneficiary first name is required.` / `Beneficiary's first name is invalid.` |\n| `beneficiaryDetails.beneficiaryPerson.lastName` | `string` | Yes (Person) | `Beneficiary last name is required.` / `Beneficiary's last name is invalid.` |\n| `beneficiaryDetails.beneficiaryPerson.relationship` | `string` | Yes (Person) | `Please specify the relationship with the beneficiary.` |\n| `beneficiaryDetails.namedEntity.name` | `string` | Yes (entity types) | `Named entity details must be provided for this beneficiary type.` / `Beneficiary name is required.` |\n| `beneficiaryDetails.namedEntity.trustDate` | `string` (`YYYY-MM`) | Yes (Trust) | `Trust date must be in YYYY-MM format.` |\n\n\n***\n\n### Business Rules\n\n1. Quote state and `address.state` must match — mismatch returns `StateMismatchIdentified`.\n2. `isSmoker = true` requires `nicotineInfo.lastUseDate` in `YYYY-MM` format.\n3. `hasExistingCoverage = false` requires `existingCoverageData = null` and `willOtherCoverageBeReplacedOrFinanced` null or false.\n4. State-specific existing coverage fields are only enforced when `hasExistingCoverage = true` or `willOtherCoverageBeReplacedOrFinanced = true`.\n5. `ApplicationLimitReached` fires (as a top-level error code, not `InvalidRequestFormat`) when the same SSN, email, or phone already has a GIGDB policy generated within the last 30 days.\n\n\n***\n\n### Knockout Rules\n\nReturns `isDeclined: true` on a successful response — the SDK does **not** throw. Check the field explicitly; do not treat it as an exception.\n\n- `isPayerAlsoOwnerAndInsured = false`\n- `isUsCitizen = false` AND `isLegalUsResident = false`\n\n> When declined, `opportunityId` may be the all-zero UUID (`00000000-0000-0000-0000-000000000000`).\n\n\n***\n\n### `isQuoteChanged`\n\nWhen `isQuoteChanged = true`, the carrier adjusted the premium based on application data. Call [`getExistingGigdbQuote()`](#gigdb--get-existing-quote) with the returned `opportunityId` to retrieve the revised quote, then re-present it to the applicant before proceeding to EFT.\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any field validation failure — inspect `value.fields` |\n| `ApplicationLimitReached` | SSN, email, or phone matches a GIGDB policy generated within the last 30 days |\n| `StateMismatchIdentified` | Quote state ≠ `address.state` |\n| `AgentNotFound` | Quote cannot be linked to the agent account — verify credentials |\n| `InternalServerError` | Unexpected backend failure — retry; contact support if persistent |\n\n**`ApplicationLimitReached` field-level messages:**\n\n| Field | Message |\n|---|---|\n| `SocialSecurityNumber` | `An application with the same SSN has a policy generated within the last 30 days.` |\n| `Email` | `An application with the same email has a policy generated within the last 30 days.` |\n| `PhoneNumber` | `Two applications with the same phone have policies generated within the last 30 days.` |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `opportunityId` | `string` | Pass to later `client.*` calls (EFT, SecureSign, `finalSubmit`, etc.) |\n| `isDeclined` | `boolean` | `true` = knockout; stop the flow |\n| `isQuoteChanged` | `boolean` | `true` = carrier adjusted premium; call `getExistingGigdbQuote()` before EFT |\n\n\n***\n\n### Example\n\n```typescript\nimport { BeneficiaryType, BeneficiaryRelationship } from '@instabrain-sdks/api-client';\n\nconst appResp = await client.startGigdbApplication({\n  quoteResponseId,\n  firstName: 'Jane', lastName: 'Doe',\n  email: 'jane.doe@example.com', phoneNumber: '5551234567',\n  dateOfBirth: '1958-06-15',\n  isUsCitizen: true, isPayerAlsoOwnerAndInsured: true,\n  socialSecurityNumber: '123456789',\n  isSmoker: false, nicotineInfo: null,\n  hasExistingCoverage: false, willOtherCoverageBeReplacedOrFinanced: null, existingCoverageData: null,\n  address: { addressLine1: '123 Main St', city: 'Austin', state: 'TX', zipcode: '73301' },\n  birthJurisdiction: { country: 'US', state: 'TX' },\n  beneficiaryDetails: {\n    beneficiaryType: BeneficiaryType.Person,\n    beneficiaryPerson: { firstName: 'John', lastName: 'Doe', relationship: BeneficiaryRelationship.Spouse }\n  }\n});\n\nif (appResp.isDeclined) {\n  // Valid knockout — stop the flow, do not proceed\n  return;\n}\nif (appResp.isQuoteChanged) {\n  // Carrier adjusted the premium — fetch updated quote before saving EFT\n  const updated = await client.getExistingGigdbQuote(appResp.opportunityId);\n  // Re-present updated.selectedQuote.quoteAmount to the applicant\n}\nconst { opportunityId } = appResp;\n```\n\n---\n\n## GIGDB — Get Existing Quote\n\n**Method:** `client.getExistingGigdbQuote(opportunityId)`\n\n\n**When to call:**\n- `isQuoteChanged = true` returned by Start Application — fetch the carrier-adjusted premium before proceeding.\n- Resuming a prior session — re-fetch the quote for an existing opportunity without re-quoting.\n\n\n***\n\n### Request Parameters\n\n| Parameter | Type | Required |\n|---|---|---|\n| `opportunityId` | `string` | Yes |\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | `OpportunityId is required.` / `OpportunityId does not exist.` / `OpportunityId does not match selected product.` |\n> Throws `AuthenticationError` when the opportunity ID is not found or not in scope for your token. Distinct from `APIValidationError` with message `\"does not exist\"`.\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `productName` | `string` | `\"InstaGIGDB\"` |\n| `selectedQuote.quoteResponseId` | `string` | Updated quote response ID |\n| `selectedQuote.quoteAmount` | `number` | Revised premium |\n\n\n***\n\n### Example\n\n```typescript\nconst quoteResp = await client.getExistingGigdbQuote(opportunityId);\nconst { quoteResponseId, quoteAmount } = quoteResp.selectedQuote;\n```\n\n---\n\n## GIGDB — Update Quote\n\n**Method:** `client.updateGigdbQuote(request)` · **Type:** `ThirdPartyGigdbUpdateQuoteReq`\n\n\nChanges face amount or payment frequency after start application. Must be called **before** `save-eft-payment` — blocked once payment is saved.\n\n\n***\n\n### Request Fields\n\n| Field | Type | Required | Validation Error |\n|---|---|---|---|\n| `opportunityId` | `string` | Yes | `OpportunityId is required.` / `OpportunityId does not exist.` / `Quote update is not allowed when payment is already made.` |\n| `faceAmount` | `number` | Yes | `Coverage amount (FaceAmount) is required.` |\n| `paymentFreq` | `PaymentFrequency` | Yes | `Payment frequency is required.` / `Invalid payment frequency.` |\n\n\n***\n\n### Business Rules\n\n1. GIGDB does not support riders — do not send a `riders` field.\n2. Only `faceAmount` and `paymentFreq` can be changed. Smoker status, state, and age cannot be modified.\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any field validation failure — inspect `value.fields` |\n| `PaymentAlreadyMade` | EFT already saved — quote update no longer allowed |\n\n\n***\n\n### Response\n\nSame shape as Get Quote — reflects the recalculated premium.\n\n\n***\n\n### Example\n\n```typescript\nimport { PaymentFrequency } from '@instabrain-sdks/api-client';\n\nconst updatedQuote = await client.updateGigdbQuote({\n  opportunityId,\n  faceAmount: 20000,\n  paymentFreq: PaymentFrequency.Annually\n});\n// updatedQuote.selectedQuote.quoteAmount reflects the new premium\n```\n\n---\n\n## ADB\n\n**Accidental Death Benefit** — simplified-issue product, no medical exam.\n\n- **Eligible ages:** 20–59\n- **Face amount:** $50,000–$300,000\n- **Not available in:** MA, NH, AK\n- **CA:** Supported — `occupation` field required on application\n- **No** `isSmoker`, `birthJurisdiction`, or `nicotineInfo` fields\n\n---\n\n## Integration flow\n\n```\n0.  [`getAdbRiderDetails()`](#adb--rider-lookup)                    [Optional] Confirm availability + rider codes\n    └── flagProductNotAvailableForState = true → STOP\n0b. [`getAdbOccupationOptions()`](#adb--occupation-lookup-ca-only)                   [CA only] Fetch valid occupation labels\n1.  [`getAdbQuote()`](#adb--get-quote)                                 Get quote → quoteResponseId\n2.  [`startAdbApplication()`](#adb--start-application)                Start app → opportunityId\n    └── isDeclined = true → STOP (valid knockout, not an error)\n3.  [`getExistingAdbQuote()`](#adb--get-existing-quote)                  [Optional] Re-fetch quote for resumed session\n4.  [`updateAdbQuote()`](#adb--update-quote)                              [Optional] Change face amount / payment freq / riders (before EFT only)\n5.  [`saveEftPayment()`](#save-eft-payment)                       Save bank details — locks the quote\n6.  [`prepareDocsAndGetDeliveryChannels()`](#prepare-docs--get-delivery-channels)\n    └── isSignCompleted = true → skip to step 9\n7.  [`sendPinAndGetDocumentsLink()`](#send-pin--get-documents-link)\n8.  [`verifyPin()`](#verify-pin)\n9.  [`finalSubmit()`](#final-submit)                       → policyNumber\n```\n\n> Steps 5–9 are documented under [Shared methods — GIGDB & ADB](#shared-methods--gigdb--adb).\n\n---\n\n## ADB — Rider Lookup\n\n**Method:** `client.getAdbRiderDetails(stateCode)`\n\n\nOptional pre-quote step. Confirms ADB availability for a state and returns valid rider codes.\n\n> **CA is not supported.** `stateCode = \"CA\"` returns a 400 validation error — not a `flagProductNotAvailableForState` flag.\n\n\n***\n\n### Request Parameters\n\n| Parameter | Type | Required | Validation Error |\n|---|---|---|---|\n| `stateCode` | `string` (query) | Yes | `State code is required.` / `State code is not valid.` / `This state is currently not supported.` |\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | State code missing, invalid, or unsupported |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `flagProductNotAvailableForState` | `boolean` | `true` → ADB not available in this state — do not proceed |\n| `riders[n].riderCode` | `string` | Pass as a value in `riders[]` on Get Quote and Update Quote |\n| `riders[n].riderTitle` | `string` | Display name |\n| `riders[n].riderDescription` | `string` | Coverage description |\n\n> `riders` may be an empty array even when `flagProductNotAvailableForState = false` — no optional riders configured for that state.\n\n\n***\n\n### Example\n\n```typescript\nconst riderDetails = await client.getAdbRiderDetails('TX');\n\nif (riderDetails.flagProductNotAvailableForState) {\n  // ADB not available in this state — do not proceed\n  return;\n}\n\nconst riderCodes = riderDetails.riders.map(r => r.riderCode);\n// Pass riderCodes into the riders[] field on Get Quote\n```\n\n\n***\n\n### Available Rider Codes\n\n| `AdbRiderType` Enum | Code Value | Description |\n|---|---|---|\n| `AdbRiderType.FamilyADB` | `'FamilyADB'` | Accidental death benefit for spouse and eligible dependent children |\n| `AdbRiderType.ReturnOfPremium` | `'ReturnOfPremium'` | Returns all premiums paid if no claim during policy term |\n| `AdbRiderType.InflationBenefit` | `'InflationBenefit'` | Face amount increases annually with inflation |\n\n> Do **not** use `RiderType` values (`\"ADB Rider\"`, `\"Dependent Child Rider\"`) — those are IB Term display titles. Do **not** use `\"CHILD_TERM\"` — it does not exist for ADB.\n\n---\n\n## ADB — Occupation Lookup (CA only)\n\n**Method:** `client.getAdbOccupationOptions(query?)`\n\n\nReturns valid occupation label strings for CA residents. Pass returned values directly as the `occupation` array in Start Application. `query` is optional — omit to retrieve all options.\n\n```typescript\nconst matches = await client.getAdbOccupationOptions('nurse');\nconst all = await client.getAdbOccupationOptions();\n```\n\nNo field-validation errors are returned for this method.\n\n---\n\n## ADB — Get Quote\n\n**Method:** `client.getAdbQuote(request)` · **Type:** `ThirdPartyAdbQuoteRequest`\n\n\n***\n\n### Request Fields\n\n| Field | Type | Required | Description | Validation Error |\n|---|---|---|---|---|\n| `faceAmount` | `number` | Yes | Coverage amount ($50,000–$300,000, in $1,000 increments; flat across ages 20–59) | `Coverage amount (FaceAmount) is required.` |\n| `gender` | `Gender` | Yes | `Gender.Male`, `Gender.Female` | `Gender is required.` / `Invalid gender.` |\n| `stateCode` | `string` | Yes | 2-letter US state — not MA, NH, AK, CA | `State code is required.` / `State code is not valid.` / `This state is currently not supported.` |\n| `age` | `number` | Yes* | Must be 20–59 | `Either age or date of birth must be provided.` / `Age must be between 20 and 59 for ADB.` |\n| `dateOfBirth` | `string` (ISO 8601) | Yes* | Derived age must be 20–59 | `Date of birth must be a valid date.` |\n| `paymentFreq` | `PaymentFrequency` | Yes | `\"Monthly\"` or `\"Annually\"` | `Payment frequency is required.` / `Invalid payment frequency.` |\n| `riders` | `AdbRiderType[]` | No | `riderCode` values from Rider Lookup | `Riders are invalid.` |\n| `firstName` | `string` | No | Alphabetic only | `First name is invalid. Only alphabetic characters are allowed.` |\n| `lastName` | `string` | No | Alphabetic only | `Last name is invalid. Only alphabetic characters are allowed.` |\n| `email` | `string` | No | Lead capture | `Please enter a valid email address.` |\n| `phoneNum` | `string` | No | 10 digits or E.164 | `Phone number format is incorrect. Use 10 digits or +1XXXXXXXXXX.` / `Phone number is invalid.` |\n\n> *Provide `age` OR `dateOfBirth`.\n\n\n***\n\n### Business Rules\n\n1. Rider codes are validated against ADB for the given state — unrecognised codes are rejected.\n2. CA is not supported at quote time — returns `This state is currently not supported.`\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any field validation failure — inspect `value.fields` |\n| `StateNotFound` | State code not recognized |\n| `AgeNotFound` | Neither age nor date of birth supplied, or age could not be derived |\n| `ProductNotAvailableForState` | Request validation — ADB has no carrier configuration for that state, or is flagged unavailable there. Message under `value.fields.StateCode` |\n| `AgentNotLicensedForState` | Request validation — the authenticated agent is not licensed in that state. Message under `value.fields.StateCode` |\n| `NotAvailableForState` | ADB not available in the requested state |\n| `QuoteNotEligibleForGivenConditions` | State / age combination not eligible |\n| `CoverageNotAvailable` | Face amount outside allowed range |\n| `RiderNotAvailable` | Rider not available for this product or state |\n| `RiderFaceAmountNotValid` | Rider benefit amount outside allowed range |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `productName` | `string` | `\"InstaADB\"` |\n| `selectedQuote.quoteResponseId` | `string` | Pass as `quoteResponseId` in Start Application |\n| `selectedQuote.quoteAmount` | `number` | Premium at requested payment frequency |\n\n\n***\n\n### Example\n\n```typescript\nimport { InstaBrainClient, Gender, PaymentFrequency, AdbRiderType } from '@instabrain-sdks/api-client';\n\nconst quoteResp = await client.getAdbQuote({\n  faceAmount: 100000,\n  gender: Gender.Male,\n  stateCode: 'TX',\n  age: 35,\n  paymentFreq: PaymentFrequency.Monthly,\n  riders: [AdbRiderType.FamilyADB]\n});\n\nconst { quoteResponseId, quoteAmount } = quoteResp.selectedQuote;\n```\n\n---\n\n## ADB — Start Application\n\n**Method:** `client.startAdbApplication(request)` · **Type:** `ThirdPartyAdbAppReq`\n\n\n***\n\n### Top-Level Request Fields\n\n| Field | Type | Required | Applicant-Facing Question | Validation Error |\n|---|---|---|---|---|\n| `quoteResponseId` | `string` | Yes | — | `QuoteResponseId is required.` / `QuoteResponseId does not exist or does not belong to the requested product.` |\n| `firstName` | `string` | Yes | *First Name* | `First name is required.` / `First name is invalid. Only alphabetic characters are allowed.` |\n| `lastName` | `string` | Yes | *Last Name* | `Last name is required.` / `Last name is invalid. Only alphabetic characters are allowed.` |\n| `email` | `string` | Yes | *Email Address* | `Email is required.` / `Please enter a valid email address.` |\n| `phoneNumber` | `string` | Yes | *Preferred Phone Number* | `Phone number is required.` / `Phone number format is incorrect. Use 10 digits or +1XXXXXXXXXX.` |\n| `dateOfBirth` | `string` (ISO 8601) | Yes | *Date of Birth* | `Date of birth is required.` / `Date of birth must be a valid date in the past.` / `Age must be between 20 and 59 for ADB.` |\n| `isUsCitizen` | `boolean` | Yes | *Are you a United States citizen?* | `US citizenship status is required.` |\n| `isLegalUsResident` | `boolean` | Conditional | *Are you a legal U.S. resident and have you resided in the U.S. for more than 2 years?* | `Legal US residency status is required for non-US citizens.` |\n| `isPayerAlsoOwnerAndInsured` | `boolean` | Yes | *This product requires that the payer, the person purchasing the policy, and the owner are the same person. Please confirm that you are both the insured individual and will also be the owner of the policy.* | `IsPayerAlsoOwnerAndInsured field is required.` |\n| `socialSecurityNumber` | `string` | Yes | *Social Security Number* | `Social Security Number is required.` / `Social Security Number must be in valid format (e.g., XXX-XX-XXXX).` |\n| `hasExistingCoverage` | `boolean` | Yes | See state-specific wording in GIGDB section above | `Existing coverage field is required` |\n| `willOtherCoverageBeReplacedOrFinanced` | `boolean\\|null` | Conditional | See state-specific wording in GIGDB section above | `Please indicate whether any other coverage will be replaced or financed.` / `Other Coverage be replaced or financed must be either null or false as no existing coverage passed.` |\n| `occupation` | `string[]` | CA only | *Please enter your occupation* | `At least one occupation is required when residence state is CA.` / `One or more selected occupations are invalid.` |\n| `hasMedicalCoverage` | `boolean` | DC only | *Do you have comprehensive medical coverage including the minimum essential coverage required by the Affordable Care Act (ACA) or are you treated as having minimum essential coverage due to your status as a bona fide resident of any possession of the United States?* | `Medical coverage acknowledgement is required when residence state is DC.` |\n| `understandsBenefits` | `boolean` | DC only | *Do you understand most supplemental only policies may not pay full benefits if your ACA compliant minimum essential coverage plan is not in force?* | `Supplemental policy benefits acknowledgement is required when residence state is DC.` |\n| `understandsLimitedBenefits` | `boolean` | DC only | *Do you understand that the benefits provided under this policy may be limited?* | `Limited benefits acknowledgement is required when residence state is DC.` |\n\n> `socialSecurityNumber` must be **9 consecutive digits, no dashes** (e.g. `123456789`).  \n> `isLegalUsResident` required when `isUsCitizen = false`.  \n> `occupation` values must come from [`getAdbOccupationOptions()`](#adb--occupation-lookup-ca-only).\n\n\n***\n\n### Address\n\n| Field | Type | Required | Question | Validation Error |\n|---|---|---|---|---|\n| `address.addressLine1` | `string` | Yes | *Street* | `Address line is required.` / `Street address is invalid. Avoid special characters.` |\n| `address.city` | `string` | Yes | *City* | `Address city is required.` / `City name is invalid. Only letters and spaces are allowed.` |\n| `address.state` | `string` | Yes | *State* | `Residence state is required.` / `Residence state code is invalid.` |\n| `address.zipcode` | `string` | Yes | *Zip Code* | `Zip code is required.` / `Zip code is invalid. It must be in 5-digit format.` / `Zip code is not found.` |\n\n\n***\n\n### Existing Coverage (when `hasExistingCoverage = true`)\n\nBase fields are the same as GIGDB: `nameOfTheCompany`, `insuranceAmount`, `dateOfIssue`, `toBeReplaced`, `toBeFinanced`.\n\nADB state-specific per-coverage fields (ADB does not use MA `requestsYieldIndices` or GA `wantsPolicySummary`):\n\n| State | Field on `existingCoverages[n]` | Exact Question | Validation Error |\n|---|---|---|---|\n| OK | `notifyPresentInsurer` | *Please notify my present insurer(s) regarding this transaction?* | `Notify present insurer response is required for Oklahoma when existing coverage is provided.` |\n| FL | `wantsComparativeInformationForm` | *Indicate whether or not you wish a Comparative Information Form from the proposed company and your existing insurer or insurers?* | `Comparative information form preference is required for Florida when existing coverage is provided.` |\n| DE | `wantsPolicySummary` | *Do you want a policy summary statement from your existing insurer?* | `Policy summary preference is required for Delaware when existing coverage is provided.` |\n\n\n***\n\n### Beneficiary Details\n\nSame shape as GIGDB. ADB accepts all `BeneficiaryType` values.\n\n\n***\n\n### Business Rules\n\n1. ADB does **not** accept `isSmoker`, `birthJurisdiction`, or `nicotineInfo`.\n2. Quote state and `address.state` must match — mismatch returns `StateMismatchIdentified`.\n3. Age at application (from `dateOfBirth`) must be 20–59.\n4. For CA: `occupation` must contain at least one valid label from `getAdbOccupationOptions()`.\n5. For DC: all three ACA acknowledgement booleans are required.\n6. ADB does **not** return `isQuoteChanged`.\n7. `ApplicationLimitReached` applies — same SSN/email/phone within 30 days for ADB.\n\n\n***\n\n### Knockout Rules\n\nReturns `isDeclined: true` on a successful response — the SDK does **not** throw.\n\n- `isPayerAlsoOwnerAndInsured = false`\n- `isUsCitizen = false` AND `isLegalUsResident = false`\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any field validation failure — inspect `value.fields` |\n| `ApplicationLimitReached` | SSN, email, or phone matches an ADB policy generated within the last 30 days |\n| `StateMismatchIdentified` | Quote state ≠ `address.state` |\n| `AgentNotFound` | Quote cannot be linked to the agent account — verify credentials |\n| `InternalServerError` | Unexpected backend failure — retry; contact support if persistent |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `opportunityId` | `string` | All-zero UUID when `isDeclined = true` |\n| `isDeclined` | `boolean` | `true` = knockout; stop the flow |\n\n> ADB does **not** return `isQuoteChanged`, `agentLink`, `eAppAgentLink`, or `applicantLink`.\n\n\n***\n\n### Example\n\n```typescript\nimport { BeneficiaryType, BeneficiaryRelationship } from '@instabrain-sdks/api-client';\n\nconst appResp = await client.startAdbApplication({\n  quoteResponseId,\n  firstName: 'John', lastName: 'Smith',\n  email: 'john.smith@example.com', phoneNumber: '5559876543',\n  dateOfBirth: '1988-03-20',\n  isUsCitizen: true, isPayerAlsoOwnerAndInsured: true,\n  socialSecurityNumber: '987654321',\n  hasExistingCoverage: false, willOtherCoverageBeReplacedOrFinanced: null, existingCoverageData: null,\n  address: { addressLine1: '456 Oak Ave', city: 'Dallas', state: 'TX', zipcode: '75201' },\n  beneficiaryDetails: {\n    beneficiaryType: BeneficiaryType.Person,\n    beneficiaryPerson: { firstName: 'Mary', lastName: 'Smith', relationship: BeneficiaryRelationship.Spouse }\n  }\n});\n\nif (appResp.isDeclined) {\n  return;\n}\nconst { opportunityId } = appResp;\n```\n\n---\n\n## ADB — Get Existing Quote\n\n**Method:** `client.getExistingAdbQuote(opportunityId)`\n\n\n**When to call:** Session resumption — re-fetch the quote for an existing opportunity. ADB does not return `isQuoteChanged` so this is not needed immediately after Start Application.\n\n\n***\n\n### Request Parameters\n\n| Parameter | Type | Required |\n|---|---|---|\n| `opportunityId` | `string` | Yes |\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | `OpportunityId is required.` / `OpportunityId does not exist.` / `OpportunityId does not match selected product.` |\n\n> Throws `AuthenticationError` when the opportunity ID is not found or not in scope for your token.\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `productName` | `string` | `\"InstaADB\"` |\n| `selectedQuote.quoteResponseId` | `string` | Quote response ID |\n| `selectedQuote.quoteAmount` | `number` | Premium |\n\n\n***\n\n### Example\n\n```typescript\nconst quoteResp = await client.getExistingAdbQuote(opportunityId);\nconst { quoteResponseId, quoteAmount } = quoteResp.selectedQuote;\n```\n\n---\n\n## ADB — Update Quote\n\n**Method:** `client.updateAdbQuote(request)` · **Type:** `ThirdPartyAdbUpdateQuoteReq`\n\n\nChanges face amount, payment frequency, or riders after start application. Must be called **before** `save-eft-payment`.\n\n\n***\n\n### Request Fields\n\n| Field | Type | Required | Description | Validation Error |\n|---|---|---|---|---|\n| `opportunityId` | `string` | Yes | From Start Application | `OpportunityId is required.` / `OpportunityId does not exist.` / `Quote update is not allowed when payment is already made.` |\n| `faceAmount` | `number` | Yes | New coverage amount | `Coverage amount (FaceAmount) is required.` |\n| `paymentFreq` | `PaymentFrequency` | Yes | `\"Monthly\"` or `\"Annually\"` | `Payment frequency is required.` / `Invalid payment frequency.` |\n| `riders` | `AdbRiderType[]` | Yes | Rider codes — pass `[]` to clear all riders | `Riders are required.` / `Riders are invalid.` |\n\n> `riders` is **required** on Update Quote (unlike Get Quote where it is optional). Send `[]` to remove all riders.\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any field validation failure — inspect `value.fields` |\n| `PaymentAlreadyMade` | EFT already saved — quote update no longer allowed |\n\n\n***\n\n### Response\n\nSame shape as Get Quote — reflects the recalculated premium.\n\n\n***\n\n### Example\n\n```typescript\nimport { PaymentFrequency, AdbRiderType } from '@instabrain-sdks/api-client';\n\nconst updatedQuote = await client.updateAdbQuote({\n  opportunityId,\n  faceAmount: 150000,\n  paymentFreq: PaymentFrequency.Monthly,\n  riders: [AdbRiderType.FamilyADB] // pass [] to clear all riders\n});\n```\n\n---\n\n## IB Term\n\n**InstaBrain Term** — term life product, no medical exam.\n\nThis is a **pre-fill flow**: use `getQuote()` and `startIBTermApplication()`, then hand off via `agentLink`, `applicantLink`, and `eAppAgentLink`. Do **not** call `saveEftPayment()`, SecureSign methods, or `finalSubmit()` for IB Term.\n\n- **Eligible ages:** 18–60\n- **Not available in:** WY, NY\n- **Term lengths:** 10, 20, or 30 years (`benefitPeriod`)\n- **Rating:** `rateClass`, `healthClass`, or `height` + `weightInLbs`\n\n---\n\n## Integration flow\n\n```\n0.  [`getIBTermRiderDetails()`](#ib-term--rider-lookup)                [Optional] Confirm availability + rider codes\n    └── flagProductNotAvailableForState = true → STOP\n1.  [`getQuote()`](#ib-term--get-quote)                               Get quote → quoteResponseId\n2.  [`startIBTermApplication()`](#ib-term--start-application)            Start app → agentLink / applicantLink\n    ├── isDeclined = true      → STOP\n    └── isQuoteChanged = true  → re-present updated premium, then hand off via links\n3.  [`getExistingIBTermQuote()`](#ib-term--get-existing-quote)                [Optional] Re-fetch prior quote for resumed session\n\n→ Direct agent or applicant to agentLink / applicantLink / eAppAgentLink\n  All remaining steps (underwriting, payment, signing) complete inside the InstaBrain frontend.\n  No further `InstaBrainClient` methods for IB Term.\n```\n\n---\n\n## IB Term — Rider Lookup\n\n**Method:** `client.getIBTermRiderDetails(stateCode, age, flagNicotineUse)`\n\n\n***\n\n### Request Parameters\n\n| Parameter | Type | Required | Validation Error |\n|---|---|---|---|\n| `stateCode` | `string` | Yes | `State code is required.` / `State code is not valid.` |\n| `age` | `number` | Yes | `Age is required.` / `Age must be between 18 and 60.` |\n| `flagNicotineUse` | `boolean` | Yes | `Nicotine use status is required.` |\n\n> Send the same `stateCode`, `age`, and `flagNicotineUse` you intend to use on Get Quote.\n\n\n***\n\n### Error Codes\n\n| Code | When |\n|---|---|\n| `InvalidRequestFormat` | Any parameter missing or invalid |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `flagProductNotAvailableForState` | `boolean` | `true` → not available for this state/age/nicotine combination — do not proceed |\n| `riders[n].riderCode` | `string` | Pass as `riders[n].rider` on the Get Quote request |\n| `riders[n].riderTitle` | `string` | Display name |\n| `riders[n].riderDescription` | `string` | Coverage description |\n\n\n***\n\n### Example\n\n```typescript\nconst riderDetails = await client.getIBTermRiderDetails('TX', 35, false);\n\nif (riderDetails.flagProductNotAvailableForState) {\n  return;\n}\n// Pass riderDetails.riders[n].riderCode as riders[n].rider on Get Quote\n```\n\n---\n\n\n---\n\n## IB Term — Get Quote\n\n**Method:** `client.getQuote(request)` · **Type:** `ThirdPartyQuoteReq`\n\n\n***\n\n### Request Fields\n\nProvide exactly one rating group (†) and exactly one age input (‡).\n\n| Field | Type | Required | Description | Validation Error |\n|---|---|---|---|---|\n| `faceAmount` | `number` | Yes | Coverage amount — age-based limits apply | `Coverage amount (FaceAmount) is required.` |\n| `benefitPeriod` | `number` | Yes | Term: 10, 20, or 30 years (state/age/nicotine dependent) | `Benefit period is required.` |\n| `flagTobaccoUse` | `boolean` | No | Defaults to `false` when omitted | — |\n| `gender` | `Gender` | Yes | `Gender.Male`, `Gender.Female` | `Gender is required.` / `Invalid gender.` |\n| `stateCode` | `string` | Yes | 2-letter US state — do **not** send `zipCode` for IB Term | `State code is required.` / `State code is not valid.` |\n| `rateClass` | `RateClass` | One of † | `\"Preferred Plus\"`, `\"Preferred\"`, `\"Standard\"`, `\"Standard Extra\"` | `Either RateClass, HealthClass, or Height and WeightInLbs must be provided.` / `Rate class is invalid. Allowed values: Preferred Plus, Preferred, Standard, Standard Extra.` |\n| `healthClass` | `HealthClass` | One of † | `\"excellent\"`, `\"great\"`, `\"good\"`, `\"average\"` (case-insensitive) | `Health class is invalid. Allowed values: excellent, great, good, average.` |\n| `height` | `ThirdPartyQuoteReqHeight \\| null` | One of † | `feet` (1–8), `inches` (0–11) — required with `weightInLbs` | `Height or weight is invalid.` |\n| `weightInLbs` | `number \\| null` | One of † | Paired with `height` | — |\n| `age` | `number` | Yes‡ | 18–60 | `Either age or date of birth must be provided.` / `Age must be between 18 and 60.` |\n| `dateOfBirth` | `string` (ISO 8601) | Yes‡ | Wins over `age` when both provided | `Date of birth must be a valid date.` |\n| `riders` | `object[]` | No | `[{ rider: riderCode, riderFaceAmount: number }]` — use `riderCode` from `getIBTermRiderDetails()` | `Riders are invalid.` |\n| `paymentFreq` | `PaymentFrequency` | Yes | `\"Monthly\"` or `\"Annually\"` | `Payment frequency is required.` / `Invalid payment frequency.` |\n| `firstName` | `string` | No | Alphabetic only | `First name is invalid. Only alphabetic characters are allowed.` |\n| `lastName` | `string` | No | Alphabetic only | `Last name is invalid. Only alphabetic characters are allowed.` |\n| `email` | `string` | No | Lead capture | `Please enter a valid email address.` |\n| `phoneNum` | `string` | No | 10 digits or E.164 | `Phone number format is incorrect. Use 10 digits or +1XXXXXXXXXX.` |\n\n> **†** Supply exactly **one** rating group: `rateClass`, OR `healthClass`, OR both `height` and `weightInLbs`. Do not send all three.\n> `HealthClass.Preferred` does **not** exist — using it throws `APIValidationError`.  \n> Rider face amounts: ADB Rider $25,000–$250,000 · Dependent Child Rider $5,000–$25,000. Must not exceed `faceAmount`.\n\n\n***\n\n### Face Amount Limits (age-based)\n\n| Age | Min | Max |\n|---|---|---|\n| Up to 55 | $50,000 | $1,000,000 |\n| 56 | $50,000 | $900,000 |\n| 57 | $50,000 | $800,000 |\n| 58 | $50,000 | $700,000 |\n| 59 | $50,000 | $600,000 |\n| 60 | $50,000 | $500,000 |\n\n\n***\n\n### Benefit Period Availability\n\n| Age | Tobacco use | Available periods |\n|---|---|---|\n| Up to 45 | Any | 10, 20, 30 |\n| 45–50 | Non-tobacco | 10, 20, 30 |\n| 45–50 | Tobacco | 10, 20 |\n| 51–60 | Any | 10, 20 |\n\n\n***\n\n### Error Codes\n\n`getQuote()` throws `APIValidationError` when the server returns `flagStatus: false`. Common codes:\n\n| Code | `err.response.value` | When |\n|---|---|---|\n| `InvalidRequestFormat` | `fields` object present | Any field validation failure |\n| `StateNotFound` | `null` | State code not recognized |\n| `AgeNotFound` | `null` | Neither age nor date of birth supplied, or age could not be derived |\n| `BenefitPeriodNotAvailable` | `fields` object present | `benefitPeriod` not allowed for state/age/nicotine |\n| `CoverageNotAvailable` | `fields` object present | `faceAmount` out of range for state/age/nicotine |\n| `ProductNotAvailableForState` | Request validation — IB Term has no carrier configuration for that state, or is flagged unavailable there. Message under `value.fields.StateCode` |\n| `AgentNotLicensedForState` | Request validation — the authenticated agent is not licensed in that state. Message under `value.fields.StateCode` |\n| `NotAvailableForState` | `null` | Product not available in this state |\n| `QuoteNotEligibleForGivenConditions` | `null` | State/age/nicotine combination not eligible |\n| `OutsideBuildChart` | `null` | Height/weight outside carrier build chart |\n| `RiderNotAvailable` | `null` | Rider not available for this product/state |\n| `RiderFaceAmountNotValid` | `null` | Rider face amount outside allowed range |\n\n\n***\n\n### Response\n\n| Field | Type | Description |\n|---|---|---|\n| `productName` | `string` | `\"InstaTerm\"` |\n| `selectedQuote.quoteResponseId` | `string` | Pass as `quoteResponseId` in Start Application |\n| `selectedQuote.quoteAmount` | `number` | Total premium at requested payment frequency |\n| `selectedQuote.premiumSaveWhenSelectingAnnual` | `number \\| null` | Annual billing savings vs monthly; `null` when already annual |\n| `selectedQuote.maxQuoteAmount` | `number \\| null` | Upper premium bound for the quoted profile |\n| `selectedQuote.minQuoteAmount` | `number \\| null` | Lower premium bound for the quoted profile |\n| `selectedQuote.faceAmount` | `number` | Coverage amount |\n| `selectedQuote.benefitPeriod` | `number \\| null` | Term length in years |\n| `selectedQuote.paymentFrequency` | `string\\|null` | `\"Monthly\"` or `\"Annually\"` |\n| `selectedQuote.selectedRiders[n].rider` | `string` | Rider code |\n| `selectedQuote.selectedRiders[n].riderFaceAmount` | `number` | Rider face amount |\n| `selectedQuote.selectedRiders[n].riderQuoteAmount` | `number` | Rider-only premium contribution |\n\n\n***\n\n### Example\n\n```typescript\nimport { Gender, PaymentFrequency, HealthClass } from '@instabrain-sdks/api-client';\n\nconst quoteResp = await client.getQuote({\n  faceAmount: 500000,\n  benefitPeriod: 20,\n  flagTobaccoUse: false,\n  gender: Gender.Male,\n  stateCode: 'TX',\n  healthClass: HealthClass.Great,\n  age: 35,\n  paymentFreq: PaymentFrequency.Monthly\n});\n\nconst { quoteResponseId, quoteAmount } = quoteResp.selectedQuote;\n```\n\n---\n\n## IB Term — Start Application\n\n**Method:** `client.startIBTermApplication(request)` · **Type:** `IBTermStartApplicationReq`\n\n\n***\n\n### Progressive Disclosure\n\nMany fields are **optional** — validated only when sent. Backend validation fires only when the parent block is present.\n\n**Always required:** `quoteResponseId`, `firstName`, `lastName`, `email`, `phoneNumber`, `isUsCitizenOrIsPermanentResident`, `isPayerAlsoOwnerAndInsured`, `height`, `weight`, `isHoldingValidDriverLicense`, `areListedConditionsNotApplicable`.\n\n**Optional — validated when sent:** `address`, `dateOfBirth`, `socialSecurityNumber`, `birthJurisdiction`, `driverLicenseState`, `driverLicenseNumber`, `hasPrimaryCarePhysician` / `physicianDetails`, `tobaccoNicotineUsage`, `hasExistingCoverage` / `existingCoverageData`, `beneficiaryDetails`.\n\n**Conditional:** `childRiderInfo` — required when Dependent Child Rider is on the quote; must not be sent otherwise.\n\n\n***\n\n### Always-Required Fields\n\n| Field | Type | Required | Applicant-Facing Question | Validation Error |\n|---|---|---|---|---|\n| `quoteResponseId` | `string` | Yes | — | `QuoteResponseId is required.` / `QuoteResponseId does not exist or does not belong to the requested product.` |\n| `firstName` | `string` | Yes | *First Name* | `First name is required.` / `First name is invalid. Only alphabetic characters are allowed.` |\n| `lastName` | `string` | Yes | *Last Name* | `Last name is required.` / `Last name is invalid. Only alphabetic characters are allowed.` |\n| `email` | `string` | Yes | *Email Address* | `Email is required.` / `Please enter a valid email address.` |\n| `phoneNumber` | `string` | Yes | *Preferred Phone Number* | `Phone number is required.` / `Phone number format is incorrect. Use 10 digits or +1XXXXXXXXXX.` |\n| `isUsCitizenOrIsPermanentResident` | `boolean` | Yes | *Are you a US citizen or lawful permanent resident who has resided in the US for more than 2 years?* | `US citizenship or permanent residency status is required.` |\n| `isPayerAlsoOwnerAndInsured` | `boolean` | Yes | *Are you the insured, owner, and payor of this policy?* | `IsPayerAlsoOwnerAndInsured field is required.` |\n| `height.feet` | `number` | Yes | — | `Height is required.` / `Height feet is required.` / `Height feet must be between 1 and 8.` |\n| `height.inches` | `number` | Yes | — | `Height inches is required.` / `Height inches must be between 0 and 11.` |\n| `weight` | `number` | Yes | — | `Weight is required.` / `Weight must be greater than 0.` |\n| `isHoldingValidDriverLicense` | `boolean` | Yes | *Do you hold a valid driver's license?* | `IsHoldingValidDriverLicense is required.` |\n| `areListedConditionsNotApplicable` | `boolean` | Yes | *By checking the box I confirm the conditions listed are not applicable and able to proceed with the application.* | `AreListedConditionsNotApplicable is required.` |\n\n\n***\n\n### `areListedConditionsNotApplicable` — Listed Conditions\n\n`true` = none apply → application proceeds. `false` = one or more apply → immediate decline.\n\nDisplay the full list to the applicant. Only set `true` when they confirm none apply.\n\n**Cardiovascular:** Angina / Heart Attack / Stroke · Aortic or Brain Aneurysm · Atrial Fibrillation / Arrhythmia · Cardiomyopathy / Congestive Heart Failure · Cerebrovascular Accident / TIAs · Coronary Artery Blockage / Bypass / Stent · Myocardial Infarction · Myocarditis\n\n**Neurological:** ALS · Alzheimer's / Dementia / Cognitive Impairment · Cerebral Palsy · Multiple Sclerosis · Parkinson's Disease · Seizures (Grand Mal, Partial, or Focal with moderate control)\n\n**Metabolic / Endocrine:** Diabetes Type I · Diabetes Type II under age 40 · Liver Disease / Cirrhosis / Hemochromatosis\n\n**Mental Health / Developmental:** Autism · Schizophrenia or Psychosis · Mentally Challenged (Down's Syndrome, etc.)\n\n**Other Medical:** Pending medical tests or exams · Lupus (SLE) · Muscular Dystrophy · Organ Transplant · Sleep Apnea (non-compliant or within 6 months of diagnosis) · Drug/Alcohol treatment within past 5 years · Ventilator use\n\n**Legal / Insurance History:** Adverse action by another insurer · Misdemeanor within past 8 years · Convicted of a felony · Currently disabled · Declined by or submitted more than 3 life insurance applications in past year · No valid driver's license · DUI / License Suspension / Reckless Driving within last 2 years · Pending criminal charges or probation\n\n\n***\n\n### Optional Fields (validated when sent)\n\n| Field | Type | Notes | Validation Error |\n|---|---|---|---|\n| `dateOfBirth` | `string\\|null` | ISO date; age 18–60 when sent | `Date of birth must be a valid date in the past.` / `Age must be between 18 and 60 for IB Term.` |\n| `socialSecurityNumber` | `string\\|null` | 9 consecutive digits, no dashes (e.g. `123456789`) | `Social Security Number must be in valid format (e.g., XXX-XX-XXXX).` |\n| `address.addressLine1` | `string` | When `address` sent | `Address line is required.` / `Street address is invalid. Avoid special characters.` |\n| `address.city` | `string` | When `address` sent | `Address city is required.` / `City name is invalid. Only letters and spaces are allowed.` |\n| `address.state` | `string` | When `address` sent — must match quote state | `Residence state is required.` / `Residence state code is invalid.` |\n| `address.zipcode` | `string` | When `address` sent | `Zip code is required.` / `Zip code is invalid. It must be in 5-digit format.` / `Zip code is not found.` |\n| `birthJurisdiction.country` | `string` | When `birthJurisdiction` sent | `Birth jurisdiction country is required.` |\n| `birthJurisdiction.state` | `string` | When `country = \"US\"` | `Birth jurisdiction state is required when birth country is US.` / `Birth state code is invalid.` |\n| `driverLicenseState` | `string\\|null` | Flat field — independent of `isHoldingValidDriverLicense` | `Residence state code is invalid.` *(when sent)* |\n| `driverLicenseNumber` | `string\\|null` | Flat field — validated against `driverLicenseState` when both sent | `Driver license number format is invalid for the selected driver license state.` |\n\n> `driverLicenseState` and `driverLicenseNumber` are **flat top-level fields**, not nested. `isHoldingValidDriverLicense = false` is still a knockout regardless of whether these fields are provided.\n\n\n***\n\n### Primary Care Physician (optional)\n\n| Field | Type | Required | Question | Validation Error |\n|---|---|---|---|---|\n| `hasPrimaryCarePhysician` | `boolean\\|null` | No | *Do you have a primary care physician?* | — |\n| `physicianDetails.physicianName` | `string` | When `hasPrimaryCarePhysician = true` | *What is the name of your primary care physician?* | `Physician name is required when HasPrimaryCarePhysician is true.` |\n| `physicianDetails.city` | `string` | When `hasPrimaryCarePhysician = true` | *In which city does your physician practice?* | `Physician city/address is required when HasPrimaryCarePhysician is true.` |\n| `physicianDetails.stateCode` | `string` | When `hasPrimaryCarePhysician = true` | *In which state does your physician practice?* | `Physi","readmeFilename":"README.md","homepage":"https://www.instabrain.io","bugs":{"url":"https://www.instabrain.io","email":"helpdesk@instabrain.io"}}