Professional & Occupational Verification
Description​
Check the registration status of each professional registered with the Professional Council in Colombia. The following table shows the Professional Councils available for this IDV solution:
Council values​
| Council | Name |
|---|---|
| ELECTRICAL_MECHANICAL_ENGINEERING | Consejo Profesional Nacional de IngenierÃas Eléctrica, Mecánica y Profesiones Afines |
| ENGINEERING | Consejo Profesional Nacional de IngenierÃa |
| PETROLEUM_ENGINEERING | Consejo Profesional de IngenierÃa de Petróleos |
| CHEMICAL_ENGINEERING | Consejo Profesional de IngenierÃa QuÃmica de Colombia |
| ELECTRICAL_TECHNOLOGISTS | Consejo Profesional Nacional de Tecnólogos en Electricidad, Electromecánica, Electrónica y Afines |
| ARCHITECTURE | Consejo Profesional Nacional de Arquitectura y sus Profesiones Auxiliares |
| SURVEYING | Consejo Profesional Nacional de TopografÃa |
| BUSINESS_ADMINISTRATION | Consejo Profesional de Administración de Empresas |
| VETERINARY_MEDICINE | Consejo Profesional de Medicina Veterinaria y Zootecnia de Colombia |
| BIOLOGY | Consejo Profesional de BiologÃa |
| HEALTH | Registro Único Nacional del Talento Humano en Salud |
| LAW | Unidad de Registro Nacional de Abogados y Auxiliares de la Justicia |
Asynchronous flow
- Create the request: send the document number and receive a
requestIdwith statusPENDING. - Retrieve the result: poll the status endpoint with the
requestIdwhile the status isPROCESSING, until it changes toSUCCESS. When the query finishes without a result, the status endpoint returns an error status code.
info
Before proceeding, make sure you have your jwt token, if you don't, check the login documentation.
Step 1 — Create the request​
HTTP method POST​
Endpoint​
https://api.msla-id.com/experience-idv-professionalassociations-api-v1/api/idv-govcheck/v1/co-identity/professional-association-ticket
For testing purposes, use the base domain: apidev.msla-id.com
Request header parameter​
| NAME | REQUIRED | TYPE | DESCRIPTION |
|---|---|---|---|
| Authorization | ✅ | string | bearer jwt token |
| Content-Type | ✅ | string | application/json |
Request body parameter​
| NAME | REQUIRED | TYPE | DESCRIPTION |
|---|---|---|---|
| documentNumber | ✅ | string | Colombian citizenship card number, digits only, 6 to 10 characters. |
{
"documentNumber": "1020304050"
}
Status code responses​
| Code | Description |
|---|---|
| 200 | Request created. |
| 400 | Bad request |
| 401 | Unauthorized |
| 500 | Internal server error. |
| 504 | Gateway timeout. |
The full documentation error codes can be found here.
Response fields​
| NAME | TYPE | NULLABLE | DESCRIPTION |
|---|---|---|---|
| requestId | string | No | Request identifier, used to retrieve the result. |
| status | string | No | Always PENDING when the request is created. |
Response 200 status code​
{
"traceId": "35f34a6de6cf095c",
"timestamp": "2026-09-24 10:08:07",
"data": {
"requestId": "3f6c2a1e-8b4d-4e7a-9c15-2d8f0b7e6a41",
"status": "PENDING"
}
}
Response 400 status code​
{
"traceId": "542fc743fffda052",
"timestamp": "2026-09-24 15:26:08",
"code": "IDV-3002",
"message": "Document number is invalid, it must be a number!"
}
Response 500 status code​
{
"traceId": "43a20f33d4e8730d",
"timestamp": "2026-09-24 10:12:41",
"code": "IDV-1001",
"message": "A generic error has occurred."
}
Response 504 status code​
{
"traceId": "5b8d2e7f1a3c9046",
"timestamp": "2026-09-24 10:13:05",
"code": "IDV-1100",
"message": "Gateway Timeout"
}
Step 2 — Retrieve the result​
HTTP method GET​
Endpoint​
https://api.msla-id.com/experience-idv-professionalassociations-api-v1/api/idv-govcheck/v1/co-identity/professional-association/{requestId}
For testing purposes, use the base domain: apidev.msla-id.com
Request header parameter​
| NAME | REQUIRED | TYPE | DESCRIPTION |
|---|---|---|---|
| Authorization | ✅ | string | bearer jwt token |
| Content-Type | ✅ | string | application/json |
Request path parameter​
| NAME | REQUIRED | TYPE | DESCRIPTION |
|---|---|---|---|
| requestId | ✅ | string | Request identifier returned by Step 1. |
Process status​
| Status | Description |
|---|---|
PROCESSING | The query of the sources is in progress. Message Processing. |
SUCCESS | The query finished and the response contains the professional registrations found. Message Completed. |
Status code responses​
| Code | Description |
|---|---|
| 200 | Processing or result. |
| 401 | Unauthorized |
| 404 | Ticket not found, or no registration in any of the councils listed in Council values. |
| 500 | Internal server error. |
| 504 | Gateway timeout. |
The full documentation error codes can be found here.
Response fields​
| NAME | TYPE | NULLABLE | DESCRIPTION |
|---|---|---|---|
| status | string | No | PROCESSING or SUCCESS. |
| message | string | No | Process status message. |
| documentNumber | string | No | Citizenship card number queried. Only with SUCCESS. |
| fullName | string | Yes | Holder's full name. Only with SUCCESS. |
| registrations | array | No | One element per registration found: one per council, and one per professional title in the health professionals registry. Empty when no registration was found and one or more sources were not available. Only with SUCCESS. |
| registrations[].council | string (enum) | No | Council identifier. See Council values. |
| registrations[].councilName | string | No | Official name of the council. |
| registrations[].profession | string | Yes | Profession or degree as published by the council. |
| registrations[].registrationNumber | string | Yes | Professional registration number. |
| registrations[].registrationDate | string (yyyy-mm-dd) | Yes | Date published by the council: issue, resolution, application or practice start date. |
| registrations[].hasSanctions | boolean | Yes | true or false when the council reports sanctions; null when the council does not report them. |
| registrations[].status | string | Yes | Registration status text as published by the council. |
| unavailableCouncils | array of string (enum) | No | Councils whose source was not available for this request. Only with SUCCESS. |
Response 200 status code — Processing​
{
"traceId": "72a998a62bc0f4cd",
"timestamp": "2026-09-24 10:08:40",
"data": {
"status": "PROCESSING",
"message": "Processing."
}
}
Response 200 status code — Success​
{
"traceId": "3c9e1a7f5b2d8e40",
"timestamp": "2026-09-24 10:09:47",
"data": {
"status": "SUCCESS",
"message": "Completed.",
"documentNumber": "1020304050",
"fullName": "JUAN CARLOS TORRES ROJAS",
"registrations": [
{
"council": "ELECTRICAL_MECHANICAL_ENGINEERING",
"councilName": "Consejo Profesional Nacional de IngenierÃas Eléctrica, Mecánica y Profesiones Afines",
"profession": "TELECOMUNICACIONES",
"registrationNumber": "SN291-73512",
"registrationDate": "2007-07-03",
"hasSanctions": false,
"status": null
},
{
"council": "ENGINEERING",
"councilName": "Consejo Profesional Nacional de IngenierÃa",
"profession": "INGENIERIA DE SISTEMAS",
"registrationNumber": "25202-123456",
"registrationDate": "2022-11-02",
"hasSanctions": null,
"status": "VIGENTE"
}
],
"unavailableCouncils": []
}
}
Response 404 status code — Data not found​
{
"traceId": "ef2407b8c0df635c",
"timestamp": "2026-09-24 10:10:55",
"code": "IDV-1002",
"message": "Data not found."
}
Note: The person has no registration in any of the councils listed in Council values.
Response 404 status code — Ticket not found​
{
"traceId": "c3c48a6057bb0cbc",
"timestamp": "2026-09-24 11:11:48",
"code": "IDV-PRA1002",
"message": "Ticket not found."
}
Response 500 status code​
{
"traceId": "86c6eda02b615604",
"timestamp": "2026-09-24 15:44:32",
"code": "IDV-1008",
"message": "Error in the source of origin, please contact an administrator!"
}
Response 504 status code​
{
"traceId": "9c1e5a7b2d04f3a8",
"timestamp": "2026-09-24 10:15:02",
"code": "IDV-1100",
"message": "Gateway Timeout"
}