{"info":{"_postman_id":"84e52e3e-e6e9-4a84-9fa6-84b8ae4e9692","name":"BriteVerify API Documentation","description":"<html><head></head><body><h2 id=\"authorization\">Authorization</h2>\n<p>API key is required to access BriteVerify API:</p>\n<ol>\n<li>Log into your account and navigate to the <a href=\"https://app.briteverify.com/account/api_keys\">API Keys</a> tab.</li>\n<li>Click on 'Generate New Key' and provide a key name. Key names don't have any functional impact, but should be meaningful, such that a key name would explain its purpose, which is particularly handy when multiple keys are procured.</li>\n<li>Select a key type - select <em>Client-side</em> type for keys used in a client-side(browser) implementation, otherwise select <em>Server-side</em>. See <a href=\"https://knowledge.validity.com/s/articles/Public-Keys-for-the-Real-time-Single-Transaction-API?language=en_US\">Public Keys ↗</a> for more information about client side initiated real time validations.</li>\n<li>Once a key is created, it is immediately available for use and should appear in the list.</li>\n</ol>\n<hr>\n<h2 id=\"api-key-best-practices\">API Key Best Practices</h2>\n<p>API keys are sensitive and should be handled as passwords, since they provide access account data as well as the ability to perform verifications. Therefore, <strong>API keys should be stored securely and shared on as-needed basis only</strong>.</p>\n<p>When a key is compromised or when there is a suspicion of a key being abused, that key must be immediately deactivated and replaced:</p>\n<ol>\n<li>Navigate to the <a href=\"https://app.briteverify.com/account/api_keys\">API Keys</a> tab in your BriteVerify account.</li>\n<li>Locate the key in question and click on the Actions gear, then click 'Deactivate'. <strong>This action cannot be undone.</strong></li>\n<li>Generate a new key and replace the old one in your code.</li>\n</ol>\n<hr>\n<h2 id=\"rate-limits-and-performance\">Rate Limits and Performance</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Endpoint</strong></th>\n<th><strong>Rate Limits</strong></th>\n<th><strong>Processing Speeds</strong></th>\n<th><strong>Notes</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Real-time Single Transaction API</td>\n<td><strong>500</strong>  <br>verifications per key, per minute. Applies to both server-side and client-side (public) keys.  <br>  <br><strong>25</strong>  <br>verifications per client IP address, per minute. Applies to client-side (public) keys only.  <br>  <br>Both constraints are enforced.</td>\n<td>Average response time: <strong>500</strong> ms</td>\n<td>When rate limit is exceeded, server will respond with HTTP Code <code>429</code>. Integrating applications should be implemented to avoid reaching throttling limits.  <br>If you believe your transactional traffic will be greater than 500 requests per key, per minute, contact <a href=\"https://knowledge.validity.com/s/contactsupport\">Validity Support</a> team for additional guidance.</td>\n</tr>\n<tr>\n<td>Bulk API</td>\n<td><strong>100K</strong>  <br>Emails per page  <br>  <br><strong>1M</strong>  <br>Email addresses per job (or 20 pages of 50K)</td>\n<td><strong>4,000</strong> verifications per minute</td>\n<td>This is an average based upon performance achieved by 95% of customers. Actual speeds can vary depending on network load, time of day, domain response times, and quality of addresses being verified.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"http-response-codes\">HTTP Response Codes</h2>\n<ul>\n<li><strong>200</strong> Success</li>\n<li><strong>400</strong> Bad Request (indicates invalid or missing query and/or body parameters)</li>\n<li><strong>401</strong> Unauthorized (no valid API key provided)</li>\n<li><strong>403</strong> Forbidden (indicates lack of access to the performed operation)</li>\n<li><strong>404</strong> Not Found (indicates invalid parameters or missing API endpoint)</li>\n<li><strong>422</strong> Unprocessable Entity (indicates invalid data or a request that violates business rules)</li>\n<li><strong>429</strong> Too Many Requests (Rate limit have been exceeded, retry after some time)</li>\n<li><strong>500</strong> Internal Server Error (An unexpected error on Validity BriteVerify side)</li>\n</ul>\n<hr>\n<h2 id=\"email-responses\">Email Responses</h2>\n<h3 id=\"status-field\">Status Field</h3>\n<p>The <strong>status</strong> field will return one of the following:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>Explanation</strong></th>\n<th><strong>Suggested Action</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>valid</code></td>\n<td>The email address is a valid account.</td>\n<td><strong>Safe to mail</strong></td>\n</tr>\n<tr>\n<td><code>invalid</code></td>\n<td>The email address is invalid. See Secondary Statuses section below for more details.</td>\n<td><strong>Do not mail</strong></td>\n</tr>\n<tr>\n<td><code>risky</code></td>\n<td>The email address may be valid, but certain conditions suggest potential delivery issues or poor performance. This includes addresses associated with full inboxes, disposable or role-based accounts, or domains that return uncertain responses (e.g., accept-all or temporary errors). The specific reason for this status is provided in the status_detail field, see the table below for more information.</td>\n<td><strong>Proceed with caution</strong>.  <br>  <br>These emails might still accept messages, but they are more likely to bounce or underperform. If you decide to mail them, consider:  <br>  <br>– Monitor bounce rates closely.  <br>– Send gradually to reduce deliverability risk.  <br>– Avoid mailing if your ESP’s bounce tolerance is low (e.g., ≤5%).  <br>– Regularly revalidate these addresses before future sends.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"status-detail\">Status Detail</h3>\n<p>For non-valid email results, i.e. addresses with any status other than <code>valid,</code> the reason for invalidity is returned in two different fields depending on the API endpoint:</p>\n<p>Possible values for non-valid emails:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>status_detail</strong></th>\n<th><strong>Explanation</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email_address_invalid</td>\n<td>Email address format is incorrect. For example, james0uwerwe#com is not in the correct email format of <a href=\"https://mailto:inbox@domain.com\">inbox@domain.com</a>. Many of these can be prevented by applying simple regular expression to data prior to verification.</td>\n</tr>\n<tr>\n<td>email_domain_invalid</td>\n<td>Email address is associated with a domain that doesn't exist. For example, briteeeeverify.com is not a real domain capable of sending and receiving emails. So <a href=\"https://mailto:inbox@briteeeeverify.com\">inbox@briteeeeverify.com</a> is an invalid email since it pertains to a domain that does not exist.</td>\n</tr>\n<tr>\n<td>email_account_invalid</td>\n<td>The email account (the inbox) does not exist at the given domain. For example, <a href=\"https://mailto:not-an-inbox@briteverify.com\">not-an-inbox@briteverify.com</a> results in a secondary status of email_account_invalid.</td>\n</tr>\n<tr>\n<td>mailbox_full</td>\n<td>The inbox for this email account is full and cannot accept new incoming mail. Sending to this email address will generate a soft bounce. While soft bounces are typically not penalized harshly, routinely sending to an email address that bounces can negatively impact your sender reputation. Consider holding sends to this address until this status is cleared.</td>\n</tr>\n<tr>\n<td>disposable</td>\n<td>Email address is disposable and the inbox will self-destruct. Disposable addresses are created to be valid temporarily so that their owners can sign up for promotions or services without using a primary address. Disposable addresses will not yield value and typically just take up space in your database.</td>\n</tr>\n<tr>\n<td>temporary_error</td>\n<td>This email is Unknown status because the email provider indicated a temporary error. Try to validate these email addresses again later.</td>\n</tr>\n<tr>\n<td>blocked</td>\n<td>This email is Unknown because the email provider blocked the request to validate this email without providing further information. Keep these email addresses but monitor delivery closely.</td>\n</tr>\n<tr>\n<td>not_enough_data</td>\n<td>This email is Unknown because expected response was not received from this email domain. Exclude this email from your list as it’s likely invalid.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"enrichment-attribute\">Enrichment Attribute</h3>\n<p>This field provides additional context about the verified email address, indicating specific characteristics or detected conditions.</p>\n<p>Multiple enrichment values may be returned for the same email (e.g., <code>[\"typo\", \"corrected\"]</code>).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Enrichment</th>\n<th><strong>Explanation</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>duplicated</td>\n<td>The email address has already appeared earlier in the same verification request.</td>\n</tr>\n<tr>\n<td>typo</td>\n<td>A typo was detected in the email address.</td>\n</tr>\n<tr>\n<td>corrected</td>\n<td>The email address was automatically corrected</td>\n</tr>\n<tr>\n<td>disposable</td>\n<td>The domain belongs to a disposable email provider.</td>\n</tr>\n<tr>\n<td>role address</td>\n<td>The email represents a role-based or generic account (e.g., <code>info@</code>, <code>support@</code>, <code>sales@</code>).</td>\n</tr>\n<tr>\n<td>alias</td>\n<td>The address appears to be an alias or forwarding address (e.g., Gmail “plus addressing” like <code>user+promo@gmail.com</code>).</td>\n</tr>\n<tr>\n<td>freemail</td>\n<td>The domain belongs to a free, public email provider (e.g., Gmail, Yahoo, Outlook).</td>\n</tr>\n<tr>\n<td>education</td>\n<td>The domain is associated with an educational institution.</td>\n</tr>\n<tr>\n<td>government</td>\n<td>The domain is associated with a government entity.</td>\n</tr>\n<tr>\n<td>military</td>\n<td>The domain is associated with a military organization.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"optional-attributes\">Optional Attributes</h3>\n<p>If <strong>Typo Correction</strong> is enabled for your account, the API response may include up to three additional <strong>top-level attributes</strong> when the original email is determined to be invalid.</p>\n<p>These fields provide details about the automatically corrected version of the email address and its verification results.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Attribute</strong></th>\n<th><strong>Explanation</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>corrected_email</td>\n<td>The corrected version of the email address, generated when a likely typo is detected in the domain or local part (e.g., <a href=\"https://mailto:user@gmial.com\">user@gmial.com</a> → <a href=\"https://mailto:user@gmail.com\">user@gmail.com</a>).</td>\n</tr>\n<tr>\n<td>corrected_email_status</td>\n<td>The verification status of the corrected email. This field follows the same possible values listed in the Status table above.</td>\n</tr>\n<tr>\n<td>corrected_email_status_detail</td>\n<td>A more specific reason describing the status of the corrected email, using the same set of values defined in the Status Detail table above.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"phone-responses\">Phone Responses</h2>\n<h3 id=\"status-and-errors-fields\">Status and Errors Fields</h3>\n<p>The <strong>status</strong> field returns <strong>valid</strong>, <strong>invalid</strong>, or <strong>unknown</strong>. If the phone number is invalid, an error message is included in the <strong>errors</strong> object explaining the reason.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>Error Code</strong></th>\n<th>Explanation</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>valid</td>\n<td>-</td>\n<td>-</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>invalid_phone_number</td>\n<td>The provided number does not exist.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>blank_phone_number</td>\n<td>The phone number field is blank. This could be due to improper formatting.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>invalid_format</td>\n<td>The number provided has insufficient or inaccurate information.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>invalid_prefix</td>\n<td>Unable to verify the phone prefix or first 7 digits.</td>\n</tr>\n<tr>\n<td>unknown</td>\n<td>-</td>\n<td>-</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"addresses-responses\">Addresses Responses</h2>\n<h3 id=\"status-and-errors-fields-1\">Status and Errors Fields</h3>\n<p>The <strong>status</strong> field returns <strong>valid</strong>, <strong>invalid</strong>, or <strong>unknown</strong>. If the address is invalid, an error message is included in the <strong>errors</strong> object explaining the reason.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status</strong></th>\n<th><strong>Error Code</strong></th>\n<th>Explanation</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>valid</td>\n<td>-</td>\n<td>-</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>suite_invalid_missing</td>\n<td>While the street address is valid, the suite/apartment is missing or invalid.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>multiple_match</td>\n<td>Two or more possible addresses are matched and so unable to choose one over the other.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>missing_minimum_inputs</td>\n<td>Missing minimum inputs to verify address.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>zip_code_invalid</td>\n<td>The address could not be verified based on the postal code provided.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>unknown_street</td>\n<td>Could not conclusively locate the input street to its unique street name.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>directionals_invalid</td>\n<td>Directional information did not match with the suffix provided (Ave, St, Blvd)</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>non_deliverable_address</td>\n<td>Address cannot be delivered to.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>suite_invalid</td>\n<td>While the street address is valid, the suite/apartment provided is invalid.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>suite_missing</td>\n<td>While the street address is valid, the suite/apartment provided is required.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>street_number_invalid</td>\n<td>The building or house number is invalid.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>street_number_missing</td>\n<td>The building or house number is required.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>box_number_invalid</td>\n<td>The PO box number is invalid.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>box_number_missing</td>\n<td>The PO box number is required.</td>\n</tr>\n<tr>\n<td>invalid</td>\n<td>pmb_required</td>\n<td>The Private mailbox number is missing.</td>\n</tr>\n<tr>\n<td>unknown</td>\n<td>-</td>\n<td>-</td>\n</tr>\n</tbody>\n</table>\n</div></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"11411276","collectionId":"84e52e3e-e6e9-4a84-9fa6-84b8ae4e9692","publishedId":"SzmjyuQH","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"37ACF0"},"publishDate":"2020-08-20T16:16:56.000Z"},"item":[{"name":"Real-time Single Transaction","item":[{"name":"Account Information","item":[{"name":"Credits","id":"eaec9a59-e529-4cb2-a358-1ee4be3ad1d7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"disabled":false,"key":"Content-Type","value":"application/json"},{"key":"Authorization","type":"text","value":"ApiKey: {{api_key}}"}],"body":{"mode":"raw","raw":""},"url":"{{rt_base_url}}/api/v1/accounts/credits","description":"<p>This endpoint will return your account credit balance and credits in reserve*, current as of the <code>recorded_on</code> timestamp.</p>\n<p>*Credits in reserve are those being held for currently processing list uploads (via manual upload or bulk api upload)</p>\n","urlObject":{"path":["api","v1","accounts","credits"],"host":["{{rt_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"b67f51e8-cbb7-4358-bce5-d7b9758e3a6b","name":"Credit Balance","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: {{api_key}}"}],"url":"{{rt_base_url}}/api/v1/accounts/credits"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"credits\": 2165,\n    \"credits_in_reserve\": 500,\n    \"recorded_on\": \"2021-07-27T21:10:10.000+0000\"\n}"}],"_postman_id":"eaec9a59-e529-4cb2-a358-1ee4be3ad1d7"}],"id":"faffaa5e-5fea-40b3-bcf5-ae8650cb9c0c","_postman_id":"faffaa5e-5fea-40b3-bcf5-ae8650cb9c0c","description":""},{"name":"Client-side API Key","item":[{"name":"Email, Phone, and Address","event":[{"listen":"test","script":{"id":"0896cfec-45a9-4e3b-b696-e33e052cb07f","exec":[""],"type":"text/javascript"}}],"id":"a7246384-e91e-48a9-8aed-7b71cb74dd42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"},{"key":"Authorization","value":"ApiKey: {{api_key}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"sales@validity.com\",\n    \"phone\": \"18009618205\",\n    \"address\": {\n    \t\"address1\": \"4010 Boy Scout Boulevard, Suite 1100\",\n    \t\"city\": \"Tampa\",\n    \t\"state\": \"FL\",\n    \t\"zip\": \"33607\"\n    }\n}"},"url":"{{rt_base_url}}/api/public/v4/fullverify","description":"<p>You must provide <strong>at least one</strong> of the following fields in your request: <code>email</code>, <code>phone</code>, or <code>address</code>.</p>\n<p>You can include just one, two, or all three, depending on your use case.</p>\n<p>Phone number and mailing address verification available for the <strong>United States</strong> and <strong>Canada</strong> only at this time.</p>\n","urlObject":{"path":["api","public","v4","fullverify"],"host":["{{rt_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"9bfc716e-fa52-4f12-8f87-92e3ebc5bf23","name":"Valid Email, Valid Phone, and Valid Address","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"sales@validity.com\",\n    \"phone\": \"18009618205\",\n    \"address\": {\n    \t\"address1\": \"4010 Boy Scout Boulevard, Suite 1100\",\n    \t\"city\": \"Tampa\",\n    \t\"state\": \"FL\",\n    \t\"zip\": \"33607\"\n    }\n}"},"url":"https://bpi.briteverify.com/api/public/v4/fullverify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 14 May 2020 20:00:27 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"ETag","value":"W/\"4ff16a9e3e06a519c6ece4811dad5f18\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"X-Request-Id","value":"994beec2-0cc4-40cb-afff-910ae8010ec2"},{"key":"X-Runtime","value":"2.399402"}],"cookie":[],"responseTime":null,"body":"{\n    \"email\": {\n        \"address\": \"sales@validity.com\",\n        \"account\": \"sales\",\n        \"domain\": \"validity.com\",\n        \"status\": \"valid\",\n        \"status_detail\": null,\n        \"enrichment\": []\n    },\n    \"phone\": {\n        \"number\": \"18009618205\",\n        \"service_type\": \"land\",\n        \"phone_location\": null,\n        \"status\": \"valid\",\n        \"errors\": []\n    },\n    \"address\": {\n        \"address1\": \"4010 W Boy Scout Blvd Ste 1100\",\n        \"address2\": \" \",\n        \"city\": \"Tampa\",\n        \"state\": \"FL\",\n        \"zip\": \"33607-5796\",\n        \"status\": \"valid\",\n        \"errors\": [],\n        \"corrected\": true\n    },\n    \"duration\": 0.392828819\n}"}],"_postman_id":"a7246384-e91e-48a9-8aed-7b71cb74dd42"}],"id":"0cb13e0a-4725-40ff-bdcd-b9eda46e0dc6","description":"<p>This endpoints <strong>assumes use of</strong> <a href=\"https://help.returnpath.com/hc/en-us/articles/4407473214619-Public-Keys-for-the-Real-time-Single-Transaction-API\">Client-side API keys</a>.</p>\n<h4 id=\"examples-of-client-side-use-cases\"><strong>Examples of Client-side use cases:</strong></h4>\n<ul>\n<li><p>Verify at the point of collection (sign-up, newsletter, contact, and order forms)</p>\n</li>\n<li><p>Any other client-side verification or cases involving one piece of data at a time</p>\n</li>\n</ul>\n","_postman_id":"0cb13e0a-4725-40ff-bdcd-b9eda46e0dc6"},{"name":"Server-side API Key","item":[{"name":"Email, Phone, and Address","id":"60703038-1cbc-4161-a5fb-cc7da76c9026","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: {{api_key}}"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"sales@validity.com\",\n    \"phone\": \"18009618205\",\n    \"address\": {\n    \t\"address1\": \"4010 Boy Scout Boulevard, Suite 1100\",\n    \t\"city\": \"Tampa\",\n    \t\"state\": \"FL\",\n    \t\"zip\": \"33607\"\n    }\n}"},"url":"{{rt_base_url}}/api/v4/fullverify","description":"<p>You must provide <strong>at least one</strong> of the following fields in your request: <code>email</code>, <code>phone</code>, or <code>address</code>.</p>\n<p>You can include just one, two, or all three, depending on your use case.</p>\n<p>Phone number and mailing address verification available for the <strong>United States</strong> and <strong>Canada</strong> only at this time.</p>\n","urlObject":{"path":["api","v4","fullverify"],"host":["{{rt_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"7eac7e7c-0d88-4687-872e-1542751bece3","name":"Valid Email, Valid Phone, and Valid Address","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"sales@validity.com\",\n    \"phone\": \"18009618205\",\n    \"address\": {\n    \t\"address1\": \"4010 Boy Scout Boulevard, Suite 1100\",\n    \t\"city\": \"Tampa\",\n    \t\"state\": \"FL\",\n    \t\"zip\": \"33607\"\n    }\n}"},"url":"https://bpi.briteverify.com/api/v4/fullverify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 14 May 2020 20:00:27 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"ETag","value":"W/\"4ff16a9e3e06a519c6ece4811dad5f18\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"X-Request-Id","value":"994beec2-0cc4-40cb-afff-910ae8010ec2"},{"key":"X-Runtime","value":"2.399402"}],"cookie":[],"responseTime":null,"body":"{\n    \"email\": {\n        \"address\": \"sales@validity.com\",\n        \"account\": \"sales\",\n        \"domain\": \"validity.com\",\n        \"status\": \"valid\",\n        \"status_detail\": null,\n        \"enrichment\": []\n    },\n    \"phone\": {\n        \"number\": \"18009618205\",\n        \"service_type\": \"land\",\n        \"phone_location\": null,\n        \"status\": \"valid\",\n        \"errors\": []\n    },\n    \"address\": {\n        \"address1\": \"4010 W Boy Scout Blvd Ste 1100\",\n        \"address2\": \" \",\n        \"city\": \"Tampa\",\n        \"state\": \"FL\",\n        \"zip\": \"33607-5796\",\n        \"status\": \"valid\",\n        \"errors\": [],\n        \"corrected\": true\n    },\n    \"duration\": 0.392828819\n}"}],"_postman_id":"60703038-1cbc-4161-a5fb-cc7da76c9026"}],"id":"5fed52bf-d882-4703-ad57-3e93e68f1ffa","description":"<p>This endpoints <strong>assumes use of Server-side API Keys</strong>.</p>\n<h4 id=\"examples-of-server-side-use-cases\">Examples of Server-side use cases:</h4>\n<ul>\n<li><p>Periodic cleansing of your customer database</p>\n</li>\n<li><p>Pre-flight verification on a mailing list</p>\n</li>\n<li><p>Any other server-side verification or cases involving sets of data</p>\n</li>\n</ul>\n","_postman_id":"5fed52bf-d882-4703-ad57-3e93e68f1ffa"}],"id":"cb129a5a-74c4-41d8-81a7-b212031d0eaa","description":"<p>Real-Time Single Transaction API is a JSON-based REST Web Service.</p>\n<p><strong>Supported Verifications Types</strong></p>\n<ul>\n<li>Email Addresses</li>\n<li>Phone numbers (U.S. and Canadian)</li>\n<li>Mailing Addresses (U.S. and Canadian)</li>\n</ul>\n<p>This API should be used for on demand interactive validation when a user enters them in a web form or mobile application.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Secure Use</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>All client-side implementations are required to use public keys with domain validation.</td>\n</tr>\n<tr>\n<td><strong>Important</strong>: Neglecting to use <a href=\"https://knowledge.validity.com/s/articles/Public-Keys-for-the-Real-time-Single-Transaction-API\">Public Keys</a> exposes integrating applications to unnecessary risks that may result in loss of verification credits, which are not refundable. Validity does not take responsibility for API key abuse that could have been prevented by using security features like Public Keys on a client-side implementation.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Use cases for each API Key type:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Server-side</strong></th>\n<th><strong>Client-side</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Periodic cleansing of your customer database.  <br />  <br />Pre-flight verification of a mailing list.  <br />  <br />Any other server-side verification or cases involving sets of data.</td>\n<td>Verify at the point of collection (sign-up, newsletter, contact, and order forms).  <br />  <br />Any other client-side verification or cases involving one piece of data at a time.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Performance &amp; Rate Limiting</strong></p>\n<p>Real-time API is intended for validating emails, phone numbers, and mailing addresses one-by-one. Use <a href=\"https://docs.briteverify.com/#e673d752-0030-466c-9e7e-4f2fed63c848\">Bulk API↗ </a> for all other scenarios.</p>\n<p><strong>Response Statuses</strong></p>\n<p>To learn more about statuses returned, see <a href=\"https://knowledge.validity.com/s/articles/Understanding-Statuses-in-BriteVerify\">Response Statuses &amp; Errors ↗</a></p>\n","_postman_id":"cb129a5a-74c4-41d8-81a7-b212031d0eaa"},{"name":"Bulk Verification","item":[{"name":"Account Information","item":[{"name":"Credits","id":"07beceb3-2961-4d5b-93a4-9cfeb30f42fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"disabled":false,"key":"Content-Type","value":"application/json"},{"key":"Authorization","type":"text","value":"ApiKey: {{api_key}}"}],"body":{"mode":"raw","raw":""},"url":"{{bulk_base_url}}/api/v4/accounts/credits","description":"<p>This endpoint will return your account credit balance and credits in reserve*, current as of the <code>recorded_on</code> timestamp.</p>\n<p>*Credits in reserve are those being held for currently processing list uploads (via manual upload or bulk api upload)</p>\n","urlObject":{"path":["api","v4","accounts","credits"],"host":["{{bulk_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"d32b05bf-5d52-4ce9-a658-6c63176767da","name":"Credit Balance","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"url":"https://bulk-api.briteverify.com/api/v4/accounts/credits"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"credits\": 2165,\n    \"credits_in_reserve\": 500,\n    \"recorded_on\": \"2021-07-27T21:10:10.000+0000\"\n}"}],"_postman_id":"07beceb3-2961-4d5b-93a4-9cfeb30f42fa"}],"id":"f3a4f0cd-7d6d-4487-94dc-7bd9d70deb93","_postman_id":"f3a4f0cd-7d6d-4487-94dc-7bd9d70deb93","description":""},{"name":"Lists","item":[{"name":"Create List","id":"38b4c9eb-31b1-4b8e-9295-a783d8043bc1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","type":"text","value":"ApiKey: {{api_key}}"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"directive\": \"start\",\n    \"contacts\": [\n        { \n            \"phone\": \"4444444444\",\n            \"email\": \"hello@example.com\"\n        },\n        { \n            \"phone\": \"5555555555\",\n            \"email\": \"goodbye@example.com\"\n        }\n     ]\n}","options":{"raw":{"language":"json"}}},"url":"{{bulk_base_url}}/api/v4/lists","description":"<h1 id=\"create-a-validation-list\">Create a Validation List</h1>\n<p><code>POST /api/v4/lists</code></p>\n<hr />\n<h2 id=\"description\">Description</h2>\n<p>This endpoint creates a <strong>new, empty list</strong> into which you can insert <strong>contacts objects</strong>.</p>\n<ul>\n<li><p>A <strong>contact</strong> can contain:</p>\n<ul>\n<li><p>Up to <strong>one email</strong></p>\n</li>\n<li><p>Up to <strong>one phone number</strong></p>\n</li>\n<li><p>Up to <strong>one mailing address</strong></p>\n</li>\n</ul>\n</li>\n<li><p>The list will <strong>not start processing until you pass the directive</strong> <strong><code>start</code></strong>.</p>\n</li>\n<li><p>If no directive is passed, the list remains in an <strong>open</strong> state to allow adding more contacts later.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>list_id</code></td>\n<td>String</td>\n<td>❌</td>\n<td>If adding to an existing open list. Leave blank to create a new list.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>directive</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Values: <code>start</code> or <code>terminate</code>. Controls the list status. See more in <a href=\"#working-with-open-lists\"><b>Working with Open Lists</b></a>.</td>\n</tr>\n<tr>\n<td><code>contacts</code></td>\n<td>Array</td>\n<td>✔️</td>\n<td>Array of contact objects. Each object can have one email, phone, and address. Max 100,000 per request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"contact-object-fields\">Contact Object Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Email address of the contact.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Phone number of the contact.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>Object</td>\n<td>❌</td>\n<td>Mailing address of the contact.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"address-object-fields\">Address Object Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>address1</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Address line 1.</td>\n</tr>\n<tr>\n<td><code>address2</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Address line 2.</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>String</td>\n<td>❌</td>\n<td>City.</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>❌</td>\n<td>State (e.g., \"MA\").</td>\n</tr>\n<tr>\n<td><code>zip</code></td>\n<td>String</td>\n<td>❌</td>\n<td>ZIP or postal code.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"working-with-open-lists\">Working with Open Lists</h2>\n<p>When you create a list <strong>without</strong> passing <code>\"directive\": \"start\"</code>, the list remains in an <strong>open</strong> state.</p>\n<p>An open list allows you to:</p>\n<ul>\n<li><p><strong>Add more contacts later</strong> using <code>POST /api/v4/lists/:list_id.</code></p>\n</li>\n<li><p><strong>Start processing</strong> the list at any time by passing <code>\"directive\": \"start\"</code> to the same endpoint with the <code>list_id</code>.</p>\n</li>\n<li><p><strong>Terminate (cancel)</strong> the list by passing <code>\"directive\": \"terminate\"</code>.</p>\n</li>\n</ul>\n<blockquote>\n<p>⚠️ <strong>Important:</strong><br />Use the <code>list_id</code> returned in the response to manage the list’s lifecycle. </p>\n</blockquote>\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>The list will remain in an <strong>open</strong> state unless you pass <code>\"directive\": \"start\"</code> in the request.</p>\n</li>\n<li><p><code>results_path</code> is only available once the list is completed (<code>state = complete</code>).</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v4","lists"],"host":["{{bulk_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"613c0bf1-14d4-4563-a253-a4bc6b79b246","name":"Create list","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"ApiKey: api-key-here"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"contacts\": [\n        { \n            \"email\": \"hello@example.com\",\n            \"phone\": \"4444444444\",\n            \"address\": {\n                \"address1\": \"200 Clarendon St\",\n                \"address2\": \"Unit 2200\",\n                \"city\": \"Boston\",\n                \"state\": \"MA\",\n                \"zip\": \"02115\"\n            }\n            \n        },\n        { \n            \"email\": \"hello@example.com\",\n            \"phone\": \"4444444444\",\n            \"address\": {\n                \"address1\": \"200 Clarendon St\",\n                \"address2\": \"Unit 2200\",\n                \"city\": \"Boston\",\n                \"state\": \"MA\",\n                \"zip\": \"02115\"\n            }\n        }\n     ]\n}","options":{"raw":{"language":"json"}}},"url":"https://bulk-api.briteverify.com/api/v4/lists"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 27 May 2020 01:45:35 GMT"},{"key":"Connection","value":"close"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"ETag","value":"W/\"8f65a70267ae90b50b94fc0751b49921\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"Set-Cookie","value":"_bvapp_session=b09OZTQrRElBcVJSMkxjVEJYaFhhamtBWUh1UzVtUGFzL0R3akYreUNPQlBJYjFMN0VlNjJDSGRQbUhvVU9wc3NaWkIyTzZUdzN2R1M0YUQ0RUtkYW92WVhXajBtOVlBY3RCM2dMck1mbzhsbWs1bllyNEpxeUx2VWFtRVB1NXhVVEdNOFExeDJjY0RsUjZ3enphTElnPT0tLWl0c3RSaFlZUTZjeS9Pa2JuOUZDSFE9PQ%3D%3D--8cfd3c8a47a613f10767f49a745ed5e5af9bae53; path=/; HttpOnly; SameSite=Lax"},{"key":"X-Request-Id","value":"45fd9ef0-18eb-464b-9717-f1a94619b087"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"Referrer-Policy","value":"strict-origin-when-cross-origin"},{"key":"Transfer-Encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"created new list\",\n    \"list\": {\n        \"id\": \"list_id\",\n        \"state\": \"open\",\n        \"total_verified\": 0,\n        \"total_verified_emails\": 0,\n        \"total_verified_phones\": 0,\n        \"page_count\": 0,\n        \"progress\": 0,\n        \"created_at\": \"08-10-2021 04:03 pm\",\n        \"expiration_date\": null,\n        \"results_path\": null\n    }\n}"}],"_postman_id":"38b4c9eb-31b1-4b8e-9295-a783d8043bc1"},{"name":"Get Lists","id":"0b5a2a7a-4062-4327-ab0a-4675592e3cd6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"disabled":false,"key":"Content-Type","value":"application/json"},{"key":"Authorization","type":"text","value":"ApiKey: {{api_key}}"}],"url":"{{bulk_base_url}}/api/v4/lists/","description":"<h1 id=\"retrieve-lists\">Retrieve Lists</h1>\n<p><code>GET /api/v4/lists</code></p>\n<hr />\n<h2 id=\"description\">Description</h2>\n<p>This endpoint retrieves all lists created in the <strong>last 7 days</strong> if no date filter is provided.</p>\n<p>You can filter the results using query parameters such as <code>state</code>, <code>date</code>, and <code>page</code>.</p>\n<ul>\n<li><p>Filters can be combined to narrow down the results.</p>\n</li>\n<li><p>If the results span multiple pages, the response will include a <code>message</code> field indicating the current page, e.g., <code>\"Page 1 of 2\"</code>.</p>\n</li>\n<li><p>Page size is 10</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Filter lists by state.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>Int</td>\n<td>❌</td>\n<td>Page number of the results. Default is 1.</td>\n</tr>\n<tr>\n<td><code>date</code></td>\n<td>String</td>\n<td>❌</td>\n<td>Filter lists created on a specific date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"available-state-values\">Available <code>state</code> values</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>State</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>open</td>\n<td>The list is open and accepting additional uploads (pages).</td>\n</tr>\n<tr>\n<td>verifying</td>\n<td>The list is currently being verified.</td>\n</tr>\n<tr>\n<td>complete</td>\n<td>The verification process has finished successfully.</td>\n</tr>\n<tr>\n<td>import_error</td>\n<td>There was an error while importing one or more pages into the list.</td>\n</tr>\n<tr>\n<td>loading</td>\n<td>The list is currently being uploaded.</td>\n</tr>\n<tr>\n<td>prepped</td>\n<td>The list has been fully uploaded, prepped, and is ready for verification to start.</td>\n</tr>\n<tr>\n<td>deleted</td>\n<td>The list has been deleted and is no longer available.</td>\n</tr>\n<tr>\n<td>terminated</td>\n<td>The list was manually terminated or automatically closed after inactivity.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"example-requests\">Example Requests</h2>\n<h3 id=\"get-all-lists-from-the-last-7-days\">Get all lists from the last 7 days</h3>\n<p><code>GET /api/v4/lists</code></p>\n<h3 id=\"filter-by-state\">Filter by state</h3>\n<p><code>GET /api/v4/lists?state=complete</code></p>\n<h3 id=\"filter-by-date\">Filter by date</h3>\n<p><code>GET /api/v4/lists?date=2025-06-10</code></p>\n<h3 id=\"combine-filters-state--page\">Combine filters (state + page)</h3>\n<p><code>GET /api/v4/lists?state=complete&amp;page=2</code></p>\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li>The <code>errors</code> field is present only when the list has been terminated or encountered an import error.</li>\n</ul>\n","urlObject":{"path":["api","v4","lists",""],"host":["{{bulk_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"50fac934-8c0f-4967-ba07-127fdbbb1340","name":"Get lists","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"url":"https://bulk-api.briteverify.com/api/v4/lists"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Page 1 of 2\",\n    \"lists\": [\n        {\n            \"id\": \"list_id_1\",\n            \"state\": \"open\",\n            \"total_verified\": 0,\n            \"total_verified_emails\": 0,\n            \"total_verified_phones\": 0,\n            \"page_count\": 0,\n            \"progress\": 0,\n            \"created_at\": \"08-10-2021 04:26 pm\",\n            \"expiration_date\": null,\n            \"results_path\": null\n        },\n        {\n            \"id\": \"list_id_2\",\n            \"state\": \"complete\",\n            \"total_verified\": 2,\n            \"total_verified_emails\": 1,\n            \"total_verified_phones\": 1,\n            \"page_count\": 1,\n            \"progress\": 100,\n            \"created_at\": \"08-10-2021 04:26 pm\",\n            \"expiration_date\": \"08-17-2021 04:26 pm\",\n            \"results_path\": \"{{base_host}}/api/v3/lists/list_id_2/export/1\"\n        },\n        {\n            \"id\": \"list_id_3\",\n            \"state\": \"terminated\",\n            \"total_verified\": 0,\n            \"total_verified_emails\": 0,\n            \"total_verified_phones\": 0,\n            \"page_count\": null,\n            \"progress\": 0,\n            \"created_at\": \"08-10-2021 04:03 pm\",\n            \"expiration_date\": null,\n            \"results_path\": null,\n            \"errors\": [\n                {\n                    \"code\": \"import_error\",\n                    \"message\": \"user terminated at 08-10-2021 04:07PM\"\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"0b5a2a7a-4062-4327-ab0a-4675592e3cd6"},{"name":"List State","id":"b09c09dc-e11e-44a8-b53d-9f1fd9c6792d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"disabled":false,"key":"Content-Type","value":"application/json"},{"key":"Authorization","type":"text","value":"ApiKey: {{api_key}}"}],"url":"{{bulk_base_url}}/api/v4/lists/<list-id>","description":"<h1 id=\"retrieve-a-specific-list\">Retrieve a Specific List</h1>\n<p><code>GET /api/v4/lists/:list_id</code></p>\n<hr />\n<h2 id=\"description\">Description</h2>\n<p>This endpoint fetches the details of a specific list using its <code>list_id</code>.</p>\n<ul>\n<li><p>Use this endpoint to check the status and verifying progress of a list.</p>\n</li>\n<li><p>Once the list has completed processing (<code>state = complete</code>), the <code>results_path</code> field will contain a URL to download the results, if it has expired or been terminated, the <code>results_path</code> will be <code>null.</code></p>\n</li>\n<li><p>If the list is expired or terminated, error details will be provided in the <code>errors</code> array.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>list_id</code></td>\n<td>String</td>\n<td>✔️</td>\n<td>The unique ID of the list.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Use this endpoint to monitor the current status and progress of a list.</p>\n</li>\n<li><p>If a list is terminated or expired, check the <code>errors</code> array for more details.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v4","lists","<list-id>"],"host":["{{bulk_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"0dcba350-35b3-48dd-a29d-1c5d47e7e6cc","name":"List state → Complete","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"url":"https://bulk-api.briteverify.com/api/v4/lists/<list_id>"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 07 Jul 2020 21:01:37 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"ETag","value":"W/\"84b65e2d5271408aefa4ece2605d775a\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"X-Request-Id","value":"34184299-bba9-4197-9dc4-69b86d50e5ea"},{"key":"X-Rack-Cache","value":"pass"},{"key":"Strict-Transport-Security","value":"max-age=2592000; includeSubDomains"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"Referrer-Policy","value":"strict-origin-when-cross-origin"},{"key":"Content-Security-Policy","value":"default-src 'self' 'unsafe-inline' https:; connect-src wss: https:; font-src data: https:; img-src data: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"list_id\",\n    \"state\": \"complete\",\n    \"total_verified\": 32,\n    \"total_verified_emails\": 16,\n    \"total_verified_phones\": 16,\n    \"page_count\": 1,\n    \"progress\": 100,\n    \"created_at\": \"08-10-2021 05:06 pm\",\n    \"expiration_date\": \"08-17-2021 05:07 pm\",\n    \"results_path\": \"{{bulk_base_url}}/api/v3/lists/list_id/export/1\"\n}"}],"_postman_id":"b09c09dc-e11e-44a8-b53d-9f1fd9c6792d"},{"name":"List Results","id":"0a0cc29d-6d9f-4b0d-9aa5-4166775a8831","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"disabled":false,"key":"Content-Type","value":"application/json"},{"key":"Authorization","type":"text","value":"ApiKey: {{api_key}}"}],"url":"{{bulk_base_url}}/api/v4/lists/<list_id>/export/<page_number>","description":"<h1 id=\"get-list-results\">Get List Results</h1>\n<p><code>GET /api/v4/lists/:list_id/export/:page</code></p>\n<hr />\n<h2 id=\"description\">Description</h2>\n<p>This endpoint retrieves the <strong>paged verification results</strong> for each contact in a list.</p>\n<ul>\n<li><p>The export includes verification results for <strong>email, phone, and mailing address</strong>, depending on what was submitted in the contact.</p>\n</li>\n<li><p>The export becomes available only after the list has finished processing (<code>state = complete</code>) and expires in 7 days from the time the list finishes processing.</p>\n</li>\n<li><p>When a list is expired:</p>\n<ul>\n<li><p>The list summary is still available with the <code>/api/v4/lists/:list_id</code> endpoint.</p>\n</li>\n<li><p>Paged verification results are no longer available.</p>\n</li>\n</ul>\n</li>\n<li><p>Results are paginated. The response includes <code>num_pages</code> to indicate the total number of pages.</p>\n</li>\n<li><p>The <code>next_page</code> field is <strong>not present</strong>. To retrieve subsequent pages, increment the page number manually.</p>\n</li>\n<li><p>Page size is 100,000.</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>list_id</code></td>\n<td>String</td>\n<td>✔️</td>\n<td>The unique ID of the list.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>Int</td>\n<td>✔️</td>\n<td>Page number of the export (starts at 1).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"example-requests\">Example Requests</h2>\n<h3 id=\"standard-user\">Standard user</h3>\n<p><code>GET https://bulk-api.briteverify.com/api/v4/lists/:list_id/export/1</code></p>\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>The export is only available if the list has finished processing (<code>state = complete</code>).<br />  If the list is still processing (<code>verifying</code>, <code>pending</code>, etc.), the export endpoint will return an error.</p>\n</li>\n<li><p>Results are paginated. Use the <code>num_pages</code> value to determine how many pages are available.<br />  There is no <code>next_page</code> field to get additional pages, increment the page number manually.</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v4","lists","<list_id>","export","<page_number>"],"host":["{{bulk_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"9d8c4926-d58a-4729-ba0f-92afd016de1f","name":"Get list results (contacts parameter)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"url":"https://bulk-api.briteverify.com/api/v4/lists/<list_id>/export/<page_number>"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 28 May 2020 16:04:35 GMT"},{"key":"Connection","value":"close"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"ETag","value":"W/\"07681babff0a8cad00003c46c3563f4e\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"Set-Cookie","value":"_bvapp_session=R3BRMDJNdzl0WVBiY2dVRE1YbjEyTU9saUVOcGM4eElsb0V0MXJYbHJ4aktrM0k0eExrUTVFaFQvMTJkbkhPcm5VYUt5SkdEazlaZFloc0ZyUU56UDVOU2U1c3grM0ZXajZxdy91RkhIcmpJUFRDMTRubFRuN3VxcEJiS0VpUytwS0FXdU1TTDlLZG9UQTdYSE92N0VRPT0tLWhORFk4WU5nZzhJVHh1eU14YjBYOVE9PQ%3D%3D--0b83d22b8e5566b97eb6b91ee7afe57b37affceb; path=/; HttpOnly; SameSite=Lax"},{"key":"X-Request-Id","value":"7a5974ec-2bc1-423d-ba6d-3d3e00b0d222"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"Referrer-Policy","value":"strict-origin-when-cross-origin"},{"key":"Transfer-Encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"num_pages\": 1,\n    \"results\": [\n        {\n            \"email\": {\n                \"email\": \"sales@validity.com\",\n                \"status\": \"valid\",\n                \"secondary_status\": \"role_address\"\n            },\n            \"phone\": {\n                \"phone\": \"18009618205\",\n                \"status\": \"valid\",\n                \"secondary_status\": null,\n                \"phone_service_type\": \"land\",\n                \"phone_location\": null\n            },\n            \"address\": {\n                \"address1\": \"200 Clarendon St Ste 2200\",\n                \"address2\": null,\n                \"city\": \"Boston\",\n                \"state\": \"MA\",\n                \"zip\": \"02116-5051\",\n                \"status\": \"valid\",\n                \"secondary_status\": null,\n                \"corrected\": \"true\"\n            }\n        },\n        {\n            \"email\": {\n                \"email\": \"goodbye@example.com\",\n                \"status\": \"invalid\",\n                \"secondary_status\": \"email_domain_invalid\"\n            },\n            \"phone\": {\n                \"phone\": \"5555555555\",\n                \"status\": \"invalid\",\n                \"secondary_status\": \"invalid_phone_number\",\n                \"phone_service_type\": null,\n                \"phone_location\": null\n            }\n        }\n    ]\n}"},{"id":"d1400123-f062-4983-b708-6b29a64a176e","name":"Get list results (emails parameter)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: {{api_key}}"}],"url":"{{bulk_base_url}}/api/v4/lists/<list_id>/export/<page_number>"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 28 May 2020 16:04:35 GMT"},{"key":"Connection","value":"close"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"ETag","value":"W/\"07681babff0a8cad00003c46c3563f4e\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"Set-Cookie","value":"_bvapp_session=R3BRMDJNdzl0WVBiY2dVRE1YbjEyTU9saUVOcGM4eElsb0V0MXJYbHJ4aktrM0k0eExrUTVFaFQvMTJkbkhPcm5VYUt5SkdEazlaZFloc0ZyUU56UDVOU2U1c3grM0ZXajZxdy91RkhIcmpJUFRDMTRubFRuN3VxcEJiS0VpUytwS0FXdU1TTDlLZG9UQTdYSE92N0VRPT0tLWhORFk4WU5nZzhJVHh1eU14YjBYOVE9PQ%3D%3D--0b83d22b8e5566b97eb6b91ee7afe57b37affceb; path=/; HttpOnly; SameSite=Lax"},{"key":"X-Request-Id","value":"7a5974ec-2bc1-423d-ba6d-3d3e00b0d222"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"Referrer-Policy","value":"strict-origin-when-cross-origin"},{"key":"Transfer-Encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\":\"success\",\n    \"num_pages\":\"2\",\n    \"results\": [\n        {\n            \"email\": \"invalid@test.com\",\n            \"status\": \"invalid\",\n            \"secondary_status\": \"email_account_invalid\"\n        },\n        {\n            \"email\": \"unknown@test.com\",\n            \"status\": \"unknown\",\n            \"secondary_status\": null\n        },\n        {\n            \"email\": \"valid@test.com\",\n            \"status\": \"valid\",\n            \"secondary_status\": \"role_address\"\n        },\n        {\n            \"email\": \"accept_all@test.com\",\n            \"status\": \"accept_all\",\n            \"secondary_status\": \"role_address\"\n        }\n    ]\n}"}],"_postman_id":"0a0cc29d-6d9f-4b0d-9aa5-4166775a8831"},{"name":"List Delete","id":"6c9b9c05-a4a0-435e-a064-af7d9476719d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"disabled":false,"key":"Content-Type","value":"application/json"},{"key":"Authorization","type":"text","value":"ApiKey: {{apikey}}"}],"url":"{{bulk_base_url}}/api/v4/lists/<list_id>","description":"<h1 id=\"delete-a-list\">Delete a List</h1>\n<p><code>DELETE /api/v4/lists/:list_id</code></p>\n<hr />\n<h2 id=\"description\">Description</h2>\n<p>This endpoint deletes a specific list.</p>\n<ul>\n<li><p>Once the deletion is completed, the list will no longer exist.</p>\n</li>\n<li><p>⚠️ This action <strong>cannot be reversed</strong>.</p>\n</li>\n<li><p>The list must be in one of the following states to be deleted:</p>\n<ul>\n<li><p><code>complete</code></p>\n</li>\n<li><p><code>delivered</code></p>\n</li>\n<li><p><code>prepped</code></p>\n</li>\n<li><p><code>import_error</code></p>\n</li>\n</ul>\n</li>\n</ul>\n<p>Attempting to delete a list in any other state (such as <code>verifying</code> or <code>pending</code>) will result in an error (add the result error message).</p>\n<hr />\n<h2 id=\"url-parameters\">URL Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>list_id</code></td>\n<td>String</td>\n<td>✔️</td>\n<td>The unique ID of the list to be deleted.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v4","lists","<list_id>"],"host":["{{bulk_base_url}}"],"query":[],"variable":[]}},"response":[{"id":"f7829cdb-dfee-4da9-820f-c1fd718749b3","name":"List State → Complete","originalRequest":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"ApiKey: api-key-here"}],"url":"https://bulk-api.briteverify.com/api/v4/lists/<list_id>"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Thu, 21 Jul 2022 18:16:05 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"ETag","value":"W/\"2b5aaec7ba71463e4da15a2d13cec4b9\""},{"key":"Cache-Control","value":"max-age=0, private, must-revalidate"},{"key":"X-Request-Id","value":"29083613-164c-412f-8242-539abb64d91e"},{"key":"X-Rack-Cache","value":"pass"},{"key":"Strict-Transport-Security","value":"max-age=15552000; includeSubDomains"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"Referrer-Policy","value":"strict-origin-when-cross-origin"},{"key":"Content-Security-Policy","value":"default-src 'self' 'unsafe-inline' https:; connect-src wss: https:; font-src data: https:; img-src data: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"list\": {\n        \"id\": \"list_id\",\n        \"state\": \"deleted\",\n        \"total_verified\": 32,\n        \"total_verified_emails\": 16,\n        \"total_verified_phones\": 16,\n        \"page_count\": 1,\n        \"progress\": 100,\n        \"created_at\": \"07-18-2022 12:42 pm\",\n        \"expiration_date\": null,\n        \"results_path\": null\n    }\n}"}],"_postman_id":"6c9b9c05-a4a0-435e-a064-af7d9476719d"}],"id":"944cd18b-8cad-43c2-9e47-7b1e91ba5935","_postman_id":"944cd18b-8cad-43c2-9e47-7b1e91ba5935","description":""}],"id":"e673d752-0030-466c-9e7e-4f2fed63c848","description":"<p>Bulk Verification API is a RESTful web service that supports email and phone address verifications at speed and scale.</p>\n<p><strong>Supported Verifications Types</strong></p>\n<ul>\n<li><p>Email Addresses</p>\n</li>\n<li><p>Phone numbers (U.S. and Canadian)</p>\n</li>\n<li><p>Mailing Addresses (U.S. and Canadian)</p>\n</li>\n</ul>\n<p><strong>Full Contact Verification</strong><br />Each object in <code>contacts</code> array can have any subset of email/phone/address properties for verification. For example, object can contain just the email property with email address for verification.</p>\n<p><strong>Paging</strong><br />For lists larger than 100,000 contacts , use paging to upload the list in chunks (see Add Contacts below).<br /><em><strong>Note:</strong></em> <em>When adding pages to an open list, API responses don't contain a running total of items in the list. The total count of verifications becomes available at the completion of full list verification process.</em></p>\n<p>The page size for exporting results is also 100,000.</p>\n<p>After the initial list creation, that list remains open to allow for addition of items. Open lists are automatically terminated after 15 minutes of inactivity.</p>\n<hr />\n<h2 id=\"http-response-status-codes-and-error-messages\">HTTP Response Status Codes and Error Messages</h2>\n<p>The table below provides details on the HTTP status codes and JSON status messages that the Bulk Verification API can return. These responses help indicate whether a request was successful or if it failed due to invalid input, incorrect request structure, or other issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>JSON Status</th>\n<th>Message</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>success</td>\n<td>-</td>\n</tr>\n<tr>\n<td>400</td>\n<td>param_error</td>\n<td>Date is in incorrect format</td>\n</tr>\n<tr>\n<td>400</td>\n<td>invalid_state</td>\n<td>The provided list is in an invalid state -- state is {status} and needs to be {required_status} to continue.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>invalid_state</td>\n<td>Directive must be one of 'terminate' or 'start'</td>\n</tr>\n<tr>\n<td>400</td>\n<td>missing_data</td>\n<td>Cannot terminate a list without a valid list id</td>\n</tr>\n<tr>\n<td>400</td>\n<td>missing_data</td>\n<td>Request has missing or invalid emails array</td>\n</tr>\n<tr>\n<td>400</td>\n<td>missing_data</td>\n<td>Request has missing or invalid contacts array</td>\n</tr>\n<tr>\n<td>400</td>\n<td>missing_data</td>\n<td>Request has missing or invalid emails or contacts array</td>\n</tr>\n<tr>\n<td>400</td>\n<td>duplicate_data</td>\n<td>Request has both emails and contacts params</td>\n</tr>\n<tr>\n<td>400</td>\n<td>exceeds_limit</td>\n<td>Request exceeds the limit of {num} entries in a single request</td>\n</tr>\n<tr>\n<td>400</td>\n<td>invalid_page_number</td>\n<td>Page number {page_num} is invalid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>page_not_found</td>\n<td>Page not found for page number {page_num}.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>not_found</td>\n<td>No list found</td>\n</tr>\n<tr>\n<td>404</td>\n<td>not_found</td>\n<td>No matching list found</td>\n</tr>\n<tr>\n<td>404</td>\n<td>not_found</td>\n<td>Route not found.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>import_error</td>\n<td>There was an error processing the list</td>\n</tr>\n<tr>\n<td>422</td>\n<td>update_error</td>\n<td>Error trying to save the apply status</td>\n</tr>\n<tr>\n<td>422</td>\n<td>list_expired</td>\n<td>Download unavailable. List with id {list_id} has expired.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>list_uploads_incomplete</td>\n<td>Not ready to start. Input page uploads have not completed.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"standard-workflow\">Standard Workflow</h2>\n<ol>\n<li><p><strong>Create a List:</strong><br /> <code>POST /api/v4/lists</code></p>\n</li>\n<li><p><strong>Add Contacts:</strong><br /> <code>POST /api/v4/lists/:list_id</code></p>\n</li>\n<li><p><strong>Terminate a List (if needed):</strong><br /> <code>POST /api/v4/lists/:list_id</code><br /> with body: <code>{ \"directive\": \"terminate\" }</code></p>\n</li>\n<li><p><strong>Start Processing:</strong><br /> <code>POST /api/v4/lists/:list_id</code><br /> with body: <code>{ \"directive\": \"start\" }</code></p>\n</li>\n<li><p><strong>Get List State:</strong><br /> <code>GET /api/v4/lists/:list_id</code></p>\n</li>\n<li><p><strong>Get List Results</strong><br /> <code>GET /api/v4/lists/:list_id/export/:page</code></p>\n</li>\n</ol>\n","_postman_id":"e673d752-0030-466c-9e7e-4f2fed63c848"}]}