Download OpenAPI specification:
Integration reference for MOK partners. It covers the Provider Network API (OAuth2) for validating contracts and creating/updating service requests, the webhooks we send for service request events, and the token-authenticated Admin API for loading contracts and point transactions.
client_id / client_secret) and, for the Admin API,
an admin user email + token from devs-moklabs@grupomok.com.GET /api/v1/provider_networks/contracts, then use the
returned contract and service ids to create a service request.Send Authorization: Bearer <access_token> on every /api/v1/provider_networks/* request.
Tokens are obtained via the client-credentials flow at POST /oauth/token with
scope: provider_networks.
The Admin API uses a different audience (sponsor/admin integrators). Send both
X-Admin-User-Email and X-Admin-User-Token headers; no OAuth token is required.
Service request events (service_request.created, service_request.updated) are delivered
to your configured webhook_url. Each request is signed with an X-Signature HMAC-SHA256
header. See the Webhooks section for payloads and verification.
variable_copayment_* limit types in the limits field
(variable_copayment_by_days_of_current_service_request,
variable_copayment_by_usage_by_period,
variable_copayment_by_accumulated_days_by_period).copayment_tiers to the service_limit schema for variable copayment limits.limits field to services in the response, containing usage limits information.plan_name field to the response.access_identifier_kind field to the response.external_extra_data field to the response.user_email field to the response.type (the type of the dynamic form input) to each form answer inside the answers field.unique_contract_id, client_contract, and mobile_phone_number fields to the response.answers field to the response, it contains the answers from the form if the
service has a dynamic form configured.user_first_name and user_last_name fields to the response.
user_full_name is deprecated and will be removed in the future.last_name field to the response, it combines surname and second_surname.
surname and second_surname may be deprecated in the future so it's recommended to use
last_name instead.OAuth2 endpoint to obtain an access token using client credentials flow. The access token must be included in all subsequent API requests in the Authorization header.
Example:
Authorization: Bearer your_access_token
| grant_type required | string |
| client_id required | string |
| client_secret required | string |
| scope required | string |
{- "grant_type": "client_credentials",
- "client_id": "109fb51a-ba5a-49d7-92e6-89fc67a63e9f",
- "client_secret": "v1OINpq6T",
- "scope": "provider_networks"
}{- "access_token": "YOUR_ACCESS_TOKEN_HERE",
- "token_type": "Bearer",
- "scope": "provider_networks",
- "created_at": 1777889583
}Retrieves information about the authenticated provider network, including their services that
are present in this specific application, and your configured webhook_url.
Service request events are delivered to your configured webhook_url. Rendered API docs also
show each event as a dedicated Webhooks entry with its full payload schema.
service_request.created: a service request was created from one of our platforms.service_request.updated: a service request was updated from one of our platforms.{
"event": "service_request.created",
"payload": { ...service request (see the Service Requests schema for all fields) }
}
Each request includes an X-Signature header: an HMAC-SHA256 hex digest of the raw request
body, keyed with your webhook_secret. A Webhook-From header carries the sending host.
Verify the signature before trusting the payload:
signature = request.headers['X-Signature']
expected = OpenSSL::HMAC.hexdigest('SHA256', webhook_secret, request.raw_post)
valid = ActiveSupport::SecurityUtils.secure_compare(signature, expected)
Requests may also carry credentials via HTTP Basic, a static Bearer token, or a Bearer token
fetched from a configured auth URL. Contact us to set or change your webhook_url, secret,
or auth mode.
{- "provider_network": {
- "name": "Calvillo Jasso Hermanos",
- "active": true,
- "services": [
- {
- "id": 1833666425,
- "name": "My Service",
- "external_id": "4364251898",
- "limits": null
}, - {
- "id": 6830631783,
- "name": "My Service",
- "external_id": "9247333625",
- "limits": null
}, - {
- "id": 9733722070,
- "name": "My Service",
- "external_id": "7961547632",
- "limits": null
}
]
}
}Returns a list of contracts associated with the provided document identifier (DNI, mobile phone number, or access code), national ID, email, ID or access identifier. Each contract includes the customer's personal information, contract dates, and available services so you can validate them before creating a service request.
Important: The contract id and service id returned in this response are required to
create a service request.
document_identifier field is deprecated and will be removed in the future.access_identifier field is the new field that will be used to identify the contract.Each service includes a limits object that describes usage restrictions for the user.
The limits field is only present when searching by access_identifier or document_identifier.
multiplans_limit: The maximum allowed value (uses or cost).multiplans_limit_progress: Current usage towards the limit.block_service: If true, the user cannot use this service (limit exceeded or waiting period active).multiplans_until_date: Date until which the limit applies (format: dd/mm/yyyy).copayment_tiers: Array of tiers describing the copayment structure for variable copayment limits. Only present for variable_copayment_* limit types.has_any_limits to check if any limits are configured for the service.block_service (at the root level) to check if the service is blocked due to any limit.| document_identifier | string Document identifier to search contracts for. Can be one of:
|
| access_identifier | string Access identifier to search contracts for. Can be one of:
|
| national_id | string National ID used to search for contracts |
| id | string ID used to search for contracts |
string Email used to search for contracts |
{- "contracts": [
- {
- "id": 74,
- "access_identifier": "123456789",
- "document_identifier": "123456789",
- "email": "bradford.stanton@goodwin.example",
- "first_name": "Gerardo",
- "last_name": "Valencia Mateo",
- "surname": "Valencia",
- "second_surname": "Mateo",
- "start_date": "2024-08-12",
- "end_date": "2026-06-03",
- "vehicle_plate_number": "5150RHN",
- "city": "Baracaldo",
- "state": "Castilla y León",
- "country": null,
- "address_line_one": "Parque Lorenzo 74",
- "address_line_two": "Esc. 807",
- "national_id": "854606425",
- "active": true,
- "plan_code": "9fzpb7h300",
- "plan_name": "Elena Muñiz Urías",
- "external_plan_id": "0vomm28lqn",
- "unique_contract_id": "2459877084-74",
- "mobile_phone_number": "+56990798691",
- "client_contract": null,
- "external_extra_data": {
- "more_info": "additional data",
- "additional_info": "some info"
}, - "services": [
- {
- "id": 2431434880,
- "name": "My Service",
- "external_id": "7625731010",
- "limits": {
- "usage_frequency_by_end_of_contract": {
- "type": "LimitGroups::UsageFrequencyByEndOfContract",
- "multiplans_limit": "5.0",
- "multiplans_limit_progress": 0,
- "block_service": false,
- "multiplans_until_date": "03/06/2026",
- "copayment_tiers": null
}, - "usage_frequency_by_period": null,
- "waiting_period": null,
- "max_cost_by_end_of_contract": null,
- "max_cost_by_period": null,
- "max_cost_by_use": null,
- "copayment": null,
- "variable_copayment_by_days_of_current_service_request": null,
- "variable_copayment_by_usage_by_period": null,
- "variable_copayment_by_accumulated_days_by_period": null,
- "has_any_limits": true,
- "block_service": false
}
}, - {
- "id": 6174904479,
- "name": "My Service",
- "external_id": "3620726800",
- "limits": {
- "usage_frequency_by_end_of_contract": {
- "type": "LimitGroups::UsageFrequencyByEndOfContract",
- "multiplans_limit": "5.0",
- "multiplans_limit_progress": 0,
- "block_service": false,
- "multiplans_until_date": "03/06/2026",
- "copayment_tiers": null
}, - "usage_frequency_by_period": null,
- "waiting_period": null,
- "max_cost_by_end_of_contract": null,
- "max_cost_by_period": null,
- "max_cost_by_use": null,
- "copayment": null,
- "variable_copayment_by_days_of_current_service_request": null,
- "variable_copayment_by_usage_by_period": null,
- "variable_copayment_by_accumulated_days_by_period": null,
- "has_any_limits": true,
- "block_service": false
}
}
]
}
]
}Returns a list of plans. Only services owned by the logged in provider network are included in each plan.
{- "plans": [
- {
- "code": "mkbhnun7x2",
- "name": "Plan 1",
- "external_plan_id": "br5illrfbo",
- "services": [
- {
- "id": 3448793487,
- "name": "Service with provider network",
- "external_id": null,
- "limits": null
}
]
}, - {
- "code": "8bdmvat6as",
- "name": "Plan 2",
- "external_plan_id": "zgwcs2cbss",
- "services": [
- {
- "id": 4743207737,
- "name": "Service for same provider network",
- "external_id": null,
- "limits": null
}
]
}
]
}Retrieves all service requests associated with the logged in provider network.
document_identifier field is deprecated and will be removed in the future.access_identifier field is the new field that will be used to identify the contract.access_identifier_kind field is the kind of the access identifier.
It can be national_id, mobile_phone_number, email, phone_number or access_code.| current_status | string Filter service requests by current status |
| service_id | integer Filter service requests by service ID |
| contract_id | integer Filter service requests by contract ID |
| external_id | string Filter service requests by your external ID |
| access_identifier | string Filter service requests by User access identifier |
| document_identifier | string Filter service requests by User document identifier |
| service_external_id | string Filter service requests by service external ID |
| page[number] | integer Default: 1 Page number |
| page[size] | integer Default: 25 Number of results per page |
{- "service_requests": [
- {
- "id": 60,
- "service_id": 4576808125,
- "contract_id": 127,
- "external_id": "7646091030",
- "public_id": "00032-00060-7646091030",
- "plan_code": "qoy4sngqn1",
- "current_status": "assigned",
- "access_identifier": "3543271795",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2024-12-31T12:00:00.000Z",
- "assigned": "2025-01-01T12:00:00.000Z"
}, - "extra_info": "MyText",
- "origin_address": "Conjunto Berta Terrazas 73, Vitoria, Cbr 69430",
- "origin_latitude": "62.233638",
- "origin_longitude": "25.398591",
- "destination_address": "Esc. 930 Puente Carlos Jasso, 14, Vitoria, Com 31007",
- "destination_latitude": "94.082774",
- "destination_longitude": "41.979783",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Villalobos S.L.",
- "provider_phone": "916-773-639",
- "technician_name": "Benito Ballesteros Bermúdez",
- "user_full_name": "Micaela Anaya",
- "user_email": "dannie_littel@kihn.test",
- "user_phone": "948927048",
- "source": "MyString",
- "contact_center_phone": "913.756.134",
- "service_external_id": "6721566532",
- "user_first_name": "Micaela",
- "user_last_name": "Anaya",
- "external_plan_id": "d92un4n8xu",
- "document_identifier": "3543271795",
- "answers": [
- {
- "question_key": "name",
- "question_text": "Consectetur voluptatem numquam odio.",
- "value": "John",
- "answer_text": "Rerum praesentium corrupti tempora.",
- "type": "text"
}, - {
- "question_key": "last_name",
- "question_text": "Quas molestiae eius fugit.",
- "value": "Doe",
- "answer_text": "Distinctio aperiam fuga hic.",
- "type": "text"
}
]
}, - {
- "id": 61,
- "service_id": 4576808125,
- "contract_id": 127,
- "external_id": "6379750457",
- "public_id": "00032-00061-6379750457",
- "plan_code": "qoy4sngqn1",
- "current_status": "pending",
- "access_identifier": "3236584568",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2025-01-01T07:00:00.000Z"
}, - "extra_info": "MyText",
- "origin_address": "Lado Carlota Venegas, 62, Las Palmas de Gran Canaria, Mur 00037",
- "origin_latitude": "16.925108",
- "origin_longitude": "99.144538",
- "destination_address": "Barrio Daniela s/n. Esc. 670, Getafe, Bal 96520",
- "destination_latitude": "46.333277",
- "destination_longitude": "84.749782",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Meraz y Mesa",
- "provider_phone": "947.165.300",
- "technician_name": "José Luis Núñez Miramontes",
- "user_full_name": "José Eduardo Montenegro",
- "user_email": "kayla_feest@orn.example",
- "user_phone": "915 059 871",
- "source": "MyString",
- "contact_center_phone": "944-615-990",
- "service_external_id": "6721566532",
- "user_first_name": "José Eduardo",
- "user_last_name": "Montenegro",
- "external_plan_id": "d92un4n8xu",
- "document_identifier": "3236584568"
}, - {
- "id": 62,
- "service_id": 9195611664,
- "contract_id": 127,
- "external_id": "external_id",
- "public_id": "00032-00062-external_id",
- "plan_code": "qoy4sngqn1",
- "current_status": "pending",
- "access_identifier": "2773576533",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2025-01-01T12:00:00.000Z"
}, - "extra_info": "MyText",
- "origin_address": "Puerta 800 Bloque Mónica, 55, Las Palmas de Gran Canaria, Mad 96305",
- "origin_latitude": "12.446255",
- "origin_longitude": "96.363126",
- "destination_address": "Jardines Verónica Arteaga, 4, Parla, Bal 62483",
- "destination_latitude": "60.276201",
- "destination_longitude": "52.299105",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Jaramillo, Balderas y Correa Asociados",
- "provider_phone": "994.856.077",
- "technician_name": "Ariadna Escobedo Alcala",
- "user_full_name": "Adán Colunga",
- "user_email": "ray_purdy@hartmann-koelpin.test",
- "user_phone": "944-392-490",
- "source": "MyString",
- "contact_center_phone": "942 256 664",
- "service_external_id": "2726920597",
- "user_first_name": "Adán",
- "user_last_name": "Colunga",
- "external_plan_id": "d92un4n8xu",
- "document_identifier": "2773576533"
}, - {
- "id": 63,
- "service_id": 9195611664,
- "contract_id": 128,
- "external_id": "8737784681",
- "public_id": "00032-00063-8737784681",
- "plan_code": "qoy4sngqn1",
- "current_status": "pending",
- "access_identifier": "8969999663",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2025-01-01T12:00:00.000Z"
}, - "extra_info": "MyText",
- "origin_address": "Urbanización Horacio s/n. Esc. 613, Sanlúcar de Barrameda, Gal 35539",
- "origin_latitude": "13.422783",
- "origin_longitude": "60.277961",
- "destination_address": "Puerta 146 Explanada Virginia s/n., Benidorm, Leo 79073",
- "destination_latitude": "60.842945",
- "destination_longitude": "17.752326",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Burgos Hermanos",
- "provider_phone": "941.828.343",
- "technician_name": "Guadalupe Juárez Méndez",
- "user_full_name": "Susana Puga",
- "user_email": "leeanne.shields@roob-funk.test",
- "user_phone": "939.423.575",
- "source": "MyString",
- "contact_center_phone": "946 194 323",
- "service_external_id": "2726920597",
- "user_first_name": "Susana",
- "user_last_name": "Puga",
- "external_plan_id": "d92un4n8xu",
- "document_identifier": "8969999663"
}
]
}Creates a new service request for a user. This endpoint allows creating service requests for contracts that were previously validated using the contracts endpoint or by providing a document identifier or access identifier that matches an existing contract.
Important:
service_id
parameter or by providing a service_external_id that matches an existing service's
external ID.service_id and service_external_id are provided, the service_external_id
will have priority.contract_id
or by providing a access_identifier or document_identifier that matches an existing
contract.external_id is an optional field that can be used to link the service request to
your internal reference ID.document_identifier field is deprecated and will be removed in the future.access_identifier field is the new field that will be used to identify the contract.service_id, contract_id, external_id, current_status, access_identifier, requested_at, service_name, origin_address, origin_latitude, origin_longitude, destination_address, destination_latitude, destination_longitude, scheduled_date, scheduled_end_date, scheduled_time, provider_name, provider_phone, technician_name, user_phone, source, contact_center_phone, service_external_id
object |
{- "service_request": {
- "service_id": 5000382079,
- "contract_id": 131,
- "external_id": "4086603794",
- "current_status": "pending",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "origin_address": "Puerta 298 Colonia Esteban 9 Esc. 254, Linares, Mur 27365",
- "origin_latitude": "19.726368",
- "origin_longitude": "16.644645",
- "destination_address": "Esc. 275 Arrabal Patricio, 10, Toledo, Ara 91717",
- "destination_latitude": "45.042599",
- "destination_longitude": "60.376376",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Cotto S.L.",
- "provider_phone": "965-036-893",
- "technician_name": "Sofia Pelayo Salcido",
- "user_phone": "982-283-510",
- "source": "MyString",
- "contact_center_phone": "989 791 252"
}
}{- "service_request": {
- "id": 77,
- "service_id": 4738520125,
- "contract_id": 153,
- "external_id": "3050380851",
- "public_id": "00052-00077-3050380851",
- "plan_code": "ihmwfhro7w",
- "current_status": "pending",
- "access_identifier": "123456789",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2025-01-01T12:00:00.000Z"
}, - "extra_info": null,
- "origin_address": "Puerta 387 Vía Carlota Roque s/n., Málaga, Ara 01149",
- "origin_latitude": "45.726823",
- "origin_longitude": "38.479152",
- "destination_address": "Rincón Yolanda Zúñiga, 1, Ponferrada, Ast 70377",
- "destination_latitude": "56.939583",
- "destination_longitude": "52.763894",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Riojas, Armendáriz y Zambrano Asociados",
- "provider_phone": "973230258",
- "technician_name": "Isabel Polanco Villaseñor",
- "user_full_name": null,
- "user_email": "lloyd_wyman@mcclure.example",
- "user_phone": "986.238.053",
- "source": "MyString",
- "contact_center_phone": "986-195-120",
- "service_external_id": "1234567890",
- "user_first_name": "Blanca",
- "user_last_name": "Quintero Lebrón",
- "external_plan_id": "xlpb6vrkmw",
- "document_identifier": "123456789"
}
}Retrieves a specific service request by its ID.
| id required | integer |
{- "service_request": {
- "id": 78,
- "service_id": 3968113359,
- "contract_id": 175,
- "external_id": "2103233136",
- "public_id": "00072-00078-2103233136",
- "plan_code": "ix8t11xihp",
- "current_status": "pending",
- "access_identifier": "1207271233",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2025-01-01T12:00:00.000Z"
}, - "extra_info": "MyText",
- "origin_address": "Esc. 865 Lado Luis Miguel s/n. Puerta 769, Alcorcón, Ext 92112",
- "origin_latitude": "95.322374",
- "origin_longitude": "13.704067",
- "destination_address": "Grupo Gabriel Curiel s/n. Puerta 701, Segovia, Leo 07415",
- "destination_latitude": "62.894578",
- "destination_longitude": "91.979053",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Jaimes y Sanabria",
- "provider_phone": "974.074.513",
- "technician_name": "María Eugenia Arce Gamboa",
- "user_full_name": "Guillermo Soto",
- "user_email": "malcom.botsford@koss.test",
- "user_phone": "966 910 378",
- "source": "MyString",
- "contact_center_phone": "932.528.896",
- "service_external_id": null,
- "user_first_name": "Guillermo",
- "user_last_name": "Soto",
- "external_plan_id": null,
- "document_identifier": "1207271233",
- "answers": [
- {
- "question_key": "name",
- "question_text": "Ullam consectetur sed qui.",
- "value": "John",
- "answer_text": "Eos sunt aut quae.",
- "type": "text"
}, - {
- "question_key": "last_name",
- "question_text": "Ad ratione id earum.",
- "value": "Doe",
- "answer_text": "Id quos iste ut.",
- "type": "text"
}
]
}
}Updates an existing service request. This endpoint allows updating certain fields of a service request after it has been created.
Important:
document_identifier field is deprecated and will be removed in the future.access_identifier field is the new field that will be used to identify the contract.external_id, current_status, service_name, origin_address, origin_latitude, origin_longitude, destination_address, destination_latitude, destination_longitude, scheduled_date, scheduled_end_date, scheduled_time, provider_name, provider_phone, technician_name, user_phone, contact_center_phone
| id required | integer |
object |
{- "service_request": {
- "current_status": "assigned",
- "external_id": "REQ123456",
- "technician_name": "John Doe",
- "provider_name": "Gruas del Sur",
- "provider_phone": "+5491133334444",
- "contact_center_phone": "+5491133334444"
}
}{- "service_request": {
- "id": 90,
- "service_id": 3011034988,
- "contract_id": 183,
- "external_id": "4982958040",
- "public_id": "00084-00090-4982958040",
- "plan_code": "d6shorcedb",
- "current_status": "assigned",
- "access_identifier": "doc123",
- "access_identifier_kind": "national_id",
- "requested_at": "2024-12-17T15:24:48.000Z",
- "service_name": "MyString",
- "status_history": {
- "pending": "2025-01-01T12:00:00.000Z",
- "assigned": "2025-01-01T12:00:00.000Z"
}, - "extra_info": "MyText",
- "origin_address": "Municipio Diego Cervantes 1 Puerta 553, Segovia, Gal 84732",
- "origin_latitude": "63.525365",
- "origin_longitude": "57.470628",
- "destination_address": "Arroyo Caridad Vargas, 1 Esc. 103, Lugo, Man 12443",
- "destination_latitude": "47.686339",
- "destination_longitude": "74.604204",
- "scheduled_date": "2024-12-17",
- "scheduled_end_date": null,
- "scheduled_time": "15:24:48",
- "provider_name": "Marroquín S.L.",
- "provider_phone": "952 263 279",
- "technician_name": "Ana Guzmán Olvera",
- "user_full_name": "Jaime Rodríquez",
- "user_email": "tyler@crist.test",
- "user_phone": "943.418.781",
- "source": "MyString",
- "contact_center_phone": "948494324",
- "service_external_id": null,
- "user_first_name": "Jaime",
- "user_last_name": "Rodríquez",
- "external_plan_id": null,
- "document_identifier": "doc123"
}
}Receives a request to send a WhatsApp message.
The whatsapp_number parameter is required.
The whatsapp_number must be a valid number according to the E.164 standard.
| whatsapp_number required | string WhatsApp number of the user who called the call center |
{- "whatsapp_number": "123456789"
}nullSent to your configured webhook_url whenever a service request is created from one
of our platforms. Your endpoint should respond with a 2xx status to acknowledge receipt;
non-2xx responses are retried with exponential backoff.
Every request includes an X-Signature header: an HMAC-SHA256 hex digest of the raw
request body, keyed with your webhook_secret. Verify it before trusting the payload:
signature = request.headers['X-Signature']
expected = OpenSSL::HMAC.hexdigest('SHA256', webhook_secret, request.raw_post)
valid = ActiveSupport::SecurityUtils.secure_compare(signature, expected)
In addition to the signature, requests may carry credentials in one of these modes:
Authorization header with your username/password.To change your webhook_url, webhook_secret, or auth mode, contact us at
devs-moklabs@grupomok.com.
| X-Signature | string HMAC-SHA256 hex digest of the raw request body, keyed with your webhook_secret. |
| Webhook-From | string The application host that sent the webhook. |
| event required | string Enum: "service_request.created" "service_request.updated" The event that triggered the webhook. |
required | object (service_request) |
{- "event": "service_request.created",
- "payload": {
- "id": 95,
- "service_id": 2862459925,
- "contract_id": 270,
- "external_id": "8970266001",
- "public_id": "00043-00095-8970266001",
- "plan_code": "h9qiujmt12",
- "current_status": "pending",
- "access_identifier": "123456789",
- "access_identifier_kind": "national_id"
}
}Sent to your configured webhook_url whenever a service request is updated from one
of our platforms (for example, a status change). The signature, authentication and
acknowledgement rules are identical to service_request.created above.
| X-Signature | string HMAC-SHA256 hex digest of the raw request body, keyed with your webhook_secret. |
| Webhook-From | string The application host that sent the webhook. |
| event required | string Enum: "service_request.created" "service_request.updated" The event that triggered the webhook. |
required | object (service_request) |
{- "event": "service_request.updated",
- "payload": {
- "id": 108,
- "service_id": 2325473398,
- "contract_id": 300,
- "external_id": "6630321327",
- "public_id": "00065-00108-6630321327",
- "plan_code": "a7uukys4rw",
- "current_status": "assigned",
- "access_identifier": "doc123",
- "access_identifier_kind": "national_id"
}
}Returns every contract known to the application.
{- "contracts": [
- {
- "id": 1,
- "new_contract?": true,
- "success?": true,
- "access_identifier": "917275262",
- "web_app_name": "Juan Carlos Anguiano Benavídez",
- "active": true,
- "start_date": "2023-05-02",
- "end_date": "2025-11-23",
- "email": "angelique@schmidt-feeney.test",
- "email_validation_status": "pending",
- "mobile_phone_number": "+56918590965",
- "mobile_phone_number_validation_status": "valid",
- "external_extra_data": null,
- "errors": { }
}, - {
- "id": 2,
- "new_contract?": true,
- "success?": true,
- "access_identifier": "863566029",
- "web_app_name": "Marilu Tovar Salas",
- "active": true,
- "start_date": "2024-03-31",
- "end_date": "2026-04-14",
- "email": "tressie@bruen.test",
- "email_validation_status": "pending",
- "mobile_phone_number": "+56941996678",
- "mobile_phone_number_validation_status": "valid",
- "external_extra_data": null,
- "errors": { }
}, - {
- "id": 3,
- "new_contract?": true,
- "success?": true,
- "access_identifier": "263007778",
- "web_app_name": "Lucia Canales Marroquín",
- "active": true,
- "start_date": "2023-08-18",
- "end_date": "2026-02-05",
- "email": "regine@frami.example",
- "email_validation_status": "pending",
- "mobile_phone_number": "+56975594651",
- "mobile_phone_number_validation_status": "valid",
- "external_extra_data": null,
- "errors": { }
}
]
}Creates a contract, or updates the active contract that matches the given application_code
(plan code) and access_identifier. When an active contract exists with a different
client_contract, a new contract is created instead of updating the existing one.
The response new_contract? flag tells you whether a contract was created or updated, and
success? / errors report validation results.
required | object |
{- "contract": {
- "application_code": "abcdefg",
- "access_identifier": "123456789",
- "first_name": "Jane",
- "email": "jane@example.com",
- "start_date": "2025-01-01",
- "active": true
}
}{- "contract": {
- "id": 4,
- "new_contract?": true,
- "success?": true,
- "access_identifier": "123456789",
- "web_app_name": "Homero Delatorre Espino",
- "active": true,
- "start_date": "2025-01-01",
- "end_date": null,
- "email": "jane@example.com",
- "email_validation_status": "valid",
- "mobile_phone_number": null,
- "mobile_phone_number_validation_status": "invalid",
- "external_extra_data": null,
- "errors": { }
}
}Creates or updates many contracts in a single request. Each item follows the same rules as
create_or_update. The response returns one contract object per item, each carrying its own
success? / errors, so partial failures can be inspected without failing the whole batch.
required | Array of objects |
{- "contracts": [
- {
- "application_code": "abcdefg",
- "access_identifier": "111",
- "start_date": "2025-01-01"
}, - {
- "application_code": "abcdefg",
- "access_identifier": "222",
- "start_date": "2025-01-01"
}
]
}{- "contracts": [
- {
- "id": 5,
- "new_contract?": true,
- "success?": true,
- "access_identifier": "111",
- "web_app_name": "Gregorio Jáquez Ybarra",
- "active": true,
- "start_date": "2025-01-01",
- "end_date": null,
- "email": null,
- "email_validation_status": "invalid",
- "mobile_phone_number": null,
- "mobile_phone_number_validation_status": "invalid",
- "external_extra_data": null,
- "errors": { }
}, - {
- "id": 6,
- "new_contract?": true,
- "success?": true,
- "access_identifier": "222",
- "web_app_name": "Gregorio Jáquez Ybarra",
- "active": true,
- "start_date": "2025-01-01",
- "end_date": null,
- "email": null,
- "email_validation_status": "invalid",
- "mobile_phone_number": null,
- "mobile_phone_number_validation_status": "invalid",
- "external_extra_data": null,
- "errors": { }
}
]
}Returns every point transaction.
{- "point_transactions": [
- {
- "id": 1,
- "access_identifier": "my-dni-123",
- "transaction_type": "add",
- "status": "pending",
- "points": 913,
- "comment": "Atque sint aut quas.",
- "expiration_date": "2025-10-30T00:00:00.000Z",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z",
- "recurrent_point_transaction_id": null
}, - {
- "id": 2,
- "access_identifier": "my-dni-123",
- "transaction_type": "add",
- "status": "pending",
- "points": 384,
- "comment": "Excepturi accusantium officiis perspiciatis.",
- "expiration_date": "2025-11-25T00:00:00.000Z",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z",
- "recurrent_point_transaction_id": null
}, - {
- "id": 3,
- "access_identifier": "my-dni-123",
- "transaction_type": "add",
- "status": "pending",
- "points": 665,
- "comment": "Et illo exercitationem fugiat.",
- "expiration_date": "2025-02-01T00:00:00.000Z",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z",
- "recurrent_point_transaction_id": null
}
]
}Adds or spends points for the user identified by access_identifier. The transaction is
processed asynchronously.
required | object |
{- "point_transaction": {
- "access_identifier": "123456789",
- "transaction_type": "add",
- "points": 10.1
}
}{- "point_transaction": {
- "id": 4,
- "access_identifier": null,
- "transaction_type": "add",
- "status": "pending",
- "points": 10.1,
- "comment": null,
- "expiration_date": null,
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z",
- "recurrent_point_transaction_id": null
}
}| id required | integer Point transaction ID |
{- "point_transaction": {
- "id": 5,
- "access_identifier": "my-dni-123",
- "transaction_type": "add",
- "status": "pending",
- "points": 283,
- "comment": "Quae perferendis et in.",
- "expiration_date": "2025-03-21T00:00:00.000Z",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z",
- "recurrent_point_transaction_id": null
}
}{- "recurrent_point_transactions": [
- {
- "id": 1,
- "access_identifier": "0000123456789",
- "raw_access_identifier": "my-dni-123",
- "comment": null,
- "transaction_type": "spend",
- "points": 1,
- "recurrence_start_date": "2022-01-01T00:00:00.000Z",
- "recurrence_end_date": "2022-01-02T00:00:00.000Z",
- "last_recurrence_date": null,
- "recurrence_period": "P1M",
- "point_expiration_period": "P1Y",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z"
}, - {
- "id": 2,
- "access_identifier": "0000123456789",
- "raw_access_identifier": "my-dni-123",
- "comment": null,
- "transaction_type": "spend",
- "points": 1,
- "recurrence_start_date": "2022-01-01T00:00:00.000Z",
- "recurrence_end_date": "2022-01-02T00:00:00.000Z",
- "last_recurrence_date": null,
- "recurrence_period": "P1M",
- "point_expiration_period": "P1Y",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z"
}
]
}Schedules a rule that issues point transactions on a recurring cadence defined by
recurrence_period (an ISO 8601 duration such as P1D or P1M).
required | object |
{- "recurrent_point_transaction": {
- "access_identifier": "123456789",
- "transaction_type": "add",
- "points": 1.1,
- "recurrence_start_date": "2024-12-31",
- "recurrence_period": "P1D",
- "point_expiration_period": "P1D"
}
}{- "recurrent_point_transaction": {
- "id": 3,
- "access_identifier": null,
- "raw_access_identifier": "123456789",
- "comment": null,
- "transaction_type": "add",
- "points": 1.1,
- "recurrence_start_date": "2024-12-31T00:00:00.000Z",
- "recurrence_end_date": null,
- "last_recurrence_date": null,
- "recurrence_period": "P1D",
- "point_expiration_period": "P1D",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z"
}
}| id required | integer Recurrent point transaction ID |
{- "recurrent_point_transaction": {
- "id": 4,
- "access_identifier": "0000123456789",
- "raw_access_identifier": "my-dni-123",
- "comment": null,
- "transaction_type": "spend",
- "points": 1,
- "recurrence_start_date": "2022-01-01T00:00:00.000Z",
- "recurrence_end_date": "2022-01-02T00:00:00.000Z",
- "last_recurrence_date": null,
- "recurrence_period": "P1M",
- "point_expiration_period": "P1Y",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z"
}
}| id required | integer Recurrent point transaction ID |
required | object |
{- "recurrent_point_transaction": {
- "access_identifier": "123456789",
- "transaction_type": "add",
- "points": 2.5,
- "recurrence_start_date": "2024-12-31",
- "recurrence_end_date": "2025-12-31",
- "recurrence_period": "P1M",
- "point_expiration_period": "P1M"
}
}{- "recurrent_point_transaction": {
- "id": 5,
- "access_identifier": "0000123456789",
- "raw_access_identifier": "123456789",
- "comment": null,
- "transaction_type": "add",
- "points": 2.5,
- "recurrence_start_date": "2024-12-31T00:00:00.000Z",
- "recurrence_end_date": "2025-12-31T00:00:00.000Z",
- "last_recurrence_date": null,
- "recurrence_period": "P1M",
- "point_expiration_period": "P1M",
- "created_at": "2025-01-01T12:00:00.000Z",
- "updated_at": "2025-01-01T12:00:00.000Z"
}
}Returns the providers ranked for a given zone and service, scoped to the authenticated provider network.
Both zone_external_id and service_external_id are required; omitting either returns a
422 with detail missing_required_params.
| zone_external_id required | string External ID of the zone to rank providers for. |
| service_external_id required | string External ID of the service to rank providers for. |
{- "providers": [
- {
- "position": 1,
- "provider_name": "Grúas del Sur",
- "external_id": "4126842408"
}, - {
- "position": 2,
- "provider_name": "Asistencia Vial Norte",
- "external_id": "8477447173"
}
]
}