---
updatedAt: 2026-09-19T14:42:42.000Z
agentTools:
  projectIndex: https://developers.burodeingresos.com/llms.txt
---

# Create Bulk Verifications

Initiates a new bulk verification process for a list of identifiers. Each item must be an 18-char CURP (individual) or a 12-char RFC (business). Send `ip_address` in each item to record that item's consent under your company's privacy notice. An item without `ip_address` uses an existing consent for its identifier, which is automatically discovered. The entire bulk request will be rejected if the payload structure is invalid or if any individual item is malformed (e.g., missing `identifier`). Failures of individual verifications during asynchronous processing (e.g., consent not found for an item, identifier not found by external systems) will be reflected in the status of those individual verifications.

# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Buró de Ingresos API",
    "version": "v1.2.24",
    "description": "Verify income and employment data with just a CURP. Made with ❤️ in Mexico 🇲🇽"
  },
  "servers": [
    {
      "url": "https://api.burodeingresos.com",
      "description": "Production server"
    }
  ],
  "tags": [
    {
      "name": "Verifications",
      "description": "Endpoints for managing individual and bulk verifications. New verifications are created with an 18-char CURP (individuals) or a 12-char RFC (businesses). Requires pre-existing consent."
    }
  ],
  "paths": {
    "/verifications/bulk": {
      "post": {
        "tags": [
          "Verifications"
        ],
        "summary": "Create Bulk Verifications",
        "description": "Initiates a new bulk verification process for a list of identifiers. Each item must be an 18-char CURP (individual) or a 12-char RFC (business). Send `ip_address` in each item to record that item's consent under your company's privacy notice. An item without `ip_address` uses an existing consent for its identifier, which is automatically discovered. The entire bulk request will be rejected if the payload structure is invalid or if any individual item is malformed (e.g., missing `identifier`). Failures of individual verifications during asynchronous processing (e.g., consent not found for an item, identifier not found by external systems) will be reflected in the status of those individual verifications.",
        "operationId": "createBulkVerifications",
        "x-readme": {
          "slug": "create-bulk-verifications"
        },
        "requestBody": {
          "description": "An array of verification requests. Each identifier must be an 18-char CURP (individual) or a 12-char RFC (business). Phone is required for individuals using an 18-char CURP and is not required for businesses using a 12-char RFC. It is used for identity matching and to maximize the probability of recovering data. Phone must use E.164 format. Optional `external_id`, `rfc` and `email` fields are supported.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/VerificationRequest"
                }
              },
              "examples": {
                "bulkVerificationExample": {
                  "summary": "Bulk verification with mixed external IDs",
                  "value": [
                    {
                      "identifier": "CUAI911021MOCRQS09",
                      "external_id": "USER_12345_VERIFICATION_001",
                      "phone": "+525512345678",
                      "email": "user@example.com"
                    },
                    {
                      "identifier": "OICE940722HGFRST08",
                      "phone": "+525598765432",
                      "email": "person@example.com"
                    }
                  ]
                },
                "bulkBusinessVerificationExample": {
                  "summary": "Bulk business verification with 12-char RFC (phone not required)",
                  "value": [
                    {
                      "identifier": "MNT850612KR4",
                      "external_id": "BIZ_MNT_VERIFICATION_001"
                    }
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted. Batch verification creation queued successfully. Use the returned id to poll status via `GET /verifications/bulk/{bulk_id}`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkVerificationCreationResponse"
                },
                "examples": {
                  "bulkVerificationResponse": {
                    "summary": "Batch verification queued successfully",
                    "value": {
                      "id": "ec412814-09ed-4e3a-99d0-4e4d3277b07e",
                      "status": "pending",
                      "total_items": 2,
                      "message": "Batch verification creation queued successfully."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "unauthorized": {
                    "summary": "Invalid API key",
                    "value": {
                      "error": "Unauthorized",
                      "message": "Invalid X-API-Key"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "VerificationRequest": {
        "type": "object",
        "required": [
          "identifier",
          "phone"
        ],
        "properties": {
          "identifier": {
            "type": "string",
            "description": "Identifier to verify. Use an 18-char CURP for individuals or a 12-char RFC for businesses.",
            "example": "CUAI911021MOCRQS09"
          },
          "external_id": {
            "type": "string",
            "description": "Optional external identifier for tracking purposes. Can be used to correlate this verification with your internal systems.",
            "example": "USER_67890_VERIFICATION_001"
          },
          "rfc": {
            "type": "string",
            "description": "Optional. If the user's RFC is provided, BDI uses it directly to retrieve invoice data, increasing the probability of recovering data for this individual.",
            "example": "ABCD123456XYZ"
          },
          "phone": {
            "type": "string",
            "description": "Required for individuals using an 18-character CURP; not required for businesses using a 12-character RFC. Used for identity matching and to maximize the probability of recovering data. Must use E.164 format.",
            "example": "+525512345678"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Optional. Used for identity matching and to maximize the probability of recovering data.",
            "example": "user@example.com"
          },
          "ip_address": {
            "type": "string",
            "description": "Optional. IP address of the end user when they accepted your privacy notice. When sent, the consent is recorded with this verification under your company's privacy notice, so no prior POST /consents is needed. A new consent is recorded on every request that sends it. Must be a valid IPv4 (e.g., 192.168.2.74) or IPv6 (e.g., 2001:db8::1) address.",
            "example": "201.141.22.10"
          }
        }
      },
      "BulkVerificationCreationResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the bulk verification job. Use this to poll status via `GET /verifications/bulk/{bulk_id}`."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending"
            ],
            "description": "Status of the batch job. Returns 'pending' when queued."
          },
          "total_items": {
            "type": "integer",
            "description": "Total number of items in the batch request."
          },
          "message": {
            "type": "string",
            "description": "Human-readable confirmation message."
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorDetail"
          }
        }
      },
      "ErrorDetail": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "A machine-readable error code."
          },
          "message": {
            "type": "string",
            "description": "A human-readable message providing a summary of the error."
          },
          "details": {
            "type": "string",
            "description": "Additional details about the error, which can help in debugging."
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "API Key for authenticating requests."
      }
    }
  }
}
```