> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.cable.tech/v-2-0/api-documentation/api-reference/identity-verification/add-identity-verification/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.cable.tech/_mcp/server. # Add identity verification POST https://api.cable.tech/v2/identity_verification Content-Type: application/json Add IDV (Identity Verification) information for a person or company. Note: Each API call represents a single verification event from one provider at a specific point in time. If you have multiple verification sources or multiple verification attempts, you must make separate API calls for each one. For example: - Document verification from Provider A requires one API call - Database verification from Provider B requires another API call - Re-verification after data update requires a new API call Reference: https://docs.cable.tech/api-documentation/api-reference/identity-verification/add-identity-verification ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Body (application/json) This endpoint expects a list of IdentityVerification. - `list of IdentityVerification` ## Response ### 201 Identity verification added successfully - `success` (boolean, required) — Indicates if the write operation was successful. - `write_count` (integer, required) — The number of records written to the database. - `message` (string, required) — Provides additional information about the operation result. - `organization_id` (string, required) — The organization ID for which the operation was performed. ## Errors ### 400 Bad Request Error Invalid Identity verification data - `code` (integer, required) - `message` (string, required) - `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields. ### 401 Unauthorized Error Unauthorized request - `code` (integer, required) - `message` (string, required) - `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields. ### 409 Conflict Error Identity verification already exists - `code` (integer, required) - `message` (string, required) - `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields. ### 429 Too Many Requests Error Rate limit exceeded - `code` (integer, required) - `message` (string, required) - `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields. ### 500 Internal Server Error Server error - `code` (integer, required) - `message` (string, required) - `errors` (list of GeneralErrorErrorsItems, optional) — Detailed information about errors in specific fields. ## Types ### IdentityVerification Request body for adding IDV (Identity Verification) information for a person or company. Note: Each API call represents a single verification event from one provider at a specific point in time. If you have multiple verification sources or multiple verification attempts, you must make separate API calls for each one. For example: - Document verification from Provider A requires one API call - Database verification from Provider B requires another API call - Re-verification after data update requires a new API call - `verification_id` (string, required) — Unique identifier for an identity verification. This is the primary identifier for an identity verification and should be unique across all identity verifications. Updates to an identity verification should be made using this identifier. This can reference: - Your internal verification record ID - The original provider's verification ID (optionally with a prefix) - Any unique identifier that allows traceability to the original data source - `timestamp` (datetime, required) — When the identity verification completed, in ISO 8601 format. Use the timestamp from your verification provider's response. - `verification_provider` (string, required) — Which verification provider verified those attributes for the person or company. If this is an internal process, mention the name of your company. - `verified_data` (list of IdentityVerificationVerifiedDataItems, required) — Array of individual data points verified in this verification event only. Each item represents a specific piece of information (name, DOB, address, etc.) that was checked during this particular verification. Do not include: - Data points from other verification events - Aggregated results from multiple verifications - Data that wasn't actually verified in this specific check Example: If this verification only checked name and DOB, only include those two items in the array, even if other data points were verified in previous or separate verification events. - `related_company_id` (string, optional) — Unique identifier of the related company entity (used for business contexts). Only one of related_company_id and related_person_id can be specified. - `related_person_id` (string, optional) — Unique identifier of the related person entity (used for retail contexts or when a person is the subject). Only one of related_company_id and related_person_id can be specified. - `verification_overall_outcome` (string, optional) — Result of IDV screening returned from provider - `verification_type` (enum, optional) - Allowed values: `DOCUMENT_MATCH`, `DATABASE_MATCH`, `MANUAL_VERIFICATION` ### GeneralErrorErrorsItems - `field` (string, optional) - `message` (string, optional) ### IdentityVerificationVerifiedDataItems - `type` (string, required) — The type of data being verified for the person or company - `outcome` (string, required) — The result of the verification for this data being verified - `value` (string, optional) — The actual data that was verified, such as a name or ID number. - `is_matched_externally` (boolean, optional) — Specifies whether the data was verified by comparing it with an external source, such as a third-party verification provider, external database, or through documentary verification (e.g., matching documents against regulatory standards). - `is_manually_verified` (boolean, optional) — Indicates whether the data was manually verified by an internal team or trusted individual. This is true when the verification process involves human intervention rather than an automated system, for example when verifying a document. ## Examples **Request** ```json [ { "verification_id": "verif-20240615-7890", "timestamp": "2024-06-15T14:45:00Z", "verification_provider": [ "Socure" ], "verified_data": [ { "type": [ "name", "dob", "document", "id_number" ], "outcome": "pass" } ] } ] ``` **Response** ```json { "success": true, "write_count": 1, "message": "Identity verification record created successfully.", "organization_id": "org-1234567890" } ``` **SDK Code** ```python import requests url = "https://api.cable.tech/v2/identity_verification" payload = [ { "verification_id": "verif-20240615-7890", "timestamp": "2024-06-15T14:45:00Z", "verification_provider": ["Socure"], "verified_data": [ { "type": ["name", "dob", "document", "id_number"], "outcome": "pass" } ] } ] headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.cable.tech/v2/identity_verification'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '[{"verification_id":"verif-20240615-7890","timestamp":"2024-06-15T14:45:00Z","verification_provider":["Socure"],"verified_data":[{"type":["name","dob","document","id_number"],"outcome":"pass"}]}]' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.cable.tech/v2/identity_verification" payload := strings.NewReader("[\n {\n \"verification_id\": \"verif-20240615-7890\",\n \"timestamp\": \"2024-06-15T14:45:00Z\",\n \"verification_provider\": [\n \"Socure\"\n ],\n \"verified_data\": [\n {\n \"type\": [\n \"name\",\n \"dob\",\n \"document\",\n \"id_number\"\n ],\n \"outcome\": \"pass\"\n }\n ]\n }\n]") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.cable.tech/v2/identity_verification") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "[\n {\n \"verification_id\": \"verif-20240615-7890\",\n \"timestamp\": \"2024-06-15T14:45:00Z\",\n \"verification_provider\": [\n \"Socure\"\n ],\n \"verified_data\": [\n {\n \"type\": [\n \"name\",\n \"dob\",\n \"document\",\n \"id_number\"\n ],\n \"outcome\": \"pass\"\n }\n ]\n }\n]" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.cable.tech/v2/identity_verification") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("[\n {\n \"verification_id\": \"verif-20240615-7890\",\n \"timestamp\": \"2024-06-15T14:45:00Z\",\n \"verification_provider\": [\n \"Socure\"\n ],\n \"verified_data\": [\n {\n \"type\": [\n \"name\",\n \"dob\",\n \"document\",\n \"id_number\"\n ],\n \"outcome\": \"pass\"\n }\n ]\n }\n]") .asString(); ``` ```php request('POST', 'https://api.cable.tech/v2/identity_verification', [ 'body' => '[ { "verification_id": "verif-20240615-7890", "timestamp": "2024-06-15T14:45:00Z", "verification_provider": [ "Socure" ], "verified_data": [ { "type": [ "name", "dob", "document", "id_number" ], "outcome": "pass" } ] } ]', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.cable.tech/v2/identity_verification"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "[\n {\n \"verification_id\": \"verif-20240615-7890\",\n \"timestamp\": \"2024-06-15T14:45:00Z\",\n \"verification_provider\": [\n \"Socure\"\n ],\n \"verified_data\": [\n {\n \"type\": [\n \"name\",\n \"dob\",\n \"document\",\n \"id_number\"\n ],\n \"outcome\": \"pass\"\n }\n ]\n }\n]", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [ [ "verification_id": "verif-20240615-7890", "timestamp": "2024-06-15T14:45:00Z", "verification_provider": ["Socure"], "verified_data": [ [ "type": ["name", "dob", "document", "id_number"], "outcome": "pass" ] ] ] ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.cable.tech/v2/identity_verification")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```