API Key External API (/api/ext)
Documentation for external endpoints protected with API Key.
Authenticationβ
All endpoints in this document use:
Authorization: X-API-Key YOUR_API_KEY
Content-Type: application/json
Base URL:
https://api-staging.minotaursales.io/api/ext
Example:
curl --location '{API_GATEWAY_URL}/api/ext/contacts/list' \
--header 'Authorization: X-API-Key YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{}'
Common Response Formatsβ
DefaultResponseβ
Many create/update/delete endpoints respond with:
{
"success": true,
"data": {},
"message": "Operation completed"
}
PaginateResponse<T>β
{
"data": [],
"pagination": {
"total_records": 0,
"current_page": 1,
"total_pages": 1
}
}
Contacts (/contacts)β
POST /contacts/list (contacts:read)β
Request (minimum example):
{
"filters": {},
"paginate": {
"page": 1,
"limit": 25
}
}
Response 200 (ContactsResponse[]):
[
{
"id": "7b9c3df7-0eb5-4be2-af74-7e48d4b43b9c",
"first_name": "Ana",
"middle_name": null,
"last_name": "Perez",
"gender": null,
"birth_year": null,
"linkedin_url": null,
"facebook_url": null,
"twitter_url": null,
"work_email": "ana@example.com",
"personal_email": null,
"other_emails": null,
"industry": "Software",
"job_title": "Engineer",
"location_locality": "Bogota",
"location_country": "CO",
"location_region": "Cundinamarca",
"location_postal_code": null,
"phone_numbers": [],
"company": "Acme",
"mobile_phone": null,
"score": 87,
"verification_status": "verified",
"last_verified": "2026-04-01T10:30:00.000Z",
"custom_fields": {}
}
]
POST /contacts/metadata (contacts:read)β
Request:
{
"filters": {},
"paginate": {
"page": 1,
"limit": 25
}
}
Response 200 (ContactMetadataResponse):
{
"pagination": {
"current_page": 1,
"total_records": 1,
"total_pages": 1
}
}
POST /contacts (contacts:create)β
Required fields for create:
first_namelast_namework_emailphone_numbers(can be empty array)
Request:
{
"first_name": "Ana",
"last_name": "Perez",
"work_email": "ana@example.com",
"phone_numbers": [],
"job_title": "Engineer",
"company": "Acme"
}
Response 200 (DefaultResponse):
{
"success": true,
"data": {
"id": "7b9c3df7-0eb5-4be2-af74-7e48d4b43b9c"
},
"message": "Contact created"
}
GET /contacts/:id (contacts:read)β
Response 200 (ContactsResponse):
{
"id": "7b9c3df7-0eb5-4be2-af74-7e48d4b43b9c",
"first_name": "Ana",
"middle_name": null,
"last_name": "Perez",
"work_email": "ana@example.com",
"industry": "Software",
"job_title": "Engineer",
"location_locality": "Bogota",
"location_country": "CO",
"score": 87,
"verification_status": "verified",
"last_verified": "2026-04-01T10:30:00.000Z",
"custom_fields": {}
}
PATCH /contacts/:id (contacts:update)β
Request:
{
"job_title": "Senior Engineer",
"phone_numbers": ["+573001234567"]
}
Response 200 (DefaultResponse):
{
"success": true,
"data": {},
"message": "Contact updated"
}
DELETE /contacts/:id (contacts:delete)β
Response 200 (DefaultResponse):
{
"success": true,
"data": {},
"message": "Contact deleted"
}
Companies (/company)β
POST /company/list (companies:read)β
Request:
{
"filters": {},
"paginate": { "page": 1, "limit": 25 }
}
Response 200 (CompaniesResponse[]):
[
{
"id": "30ea8d4e-6b76-4f8f-bcf8-a1cc5af13b4b",
"company_name": "Acme Inc",
"size": "51-200",
"industry": "Software",
"location_locality": "Bogota",
"location_country": "CO",
"verification_status": "verified",
"score": 80,
"custom_fields": {}
}
]
POST /company (companies:create)β
Required fields:
typecompany_name
Request:
{
"type": "company",
"company_name": "Acme Inc",
"industry": "Software"
}
Response 200 (DefaultResponse):
{
"success": true,
"data": { "id": "30ea8d4e-6b76-4f8f-bcf8-a1cc5af13b4b" },
"message": "Company created"
}
PATCH /company/:id (companies:update)β
Request:
{
"industry": "SaaS",
"location_country": "CO"
}
Response 200 (DefaultResponse):
{
"success": true,
"data": {},
"message": "Company updated"
}
DELETE /company/:id (companies:delete)β
Response 200 (DefaultResponse):
{
"success": true,
"data": {},
"message": "Company deleted"
}
Lists (/list-contact)β
POST /list-contact (list_contacts:create)β
Request:
{
"name": "Prospects Latam",
"description": "Initial list",
"rules": [
{
"field": "location_country",
"operator": "contains",
"value": "CO"
}
]
}
Response 200 (CreateListContactResponse):
{
"id": "9f720ce2-f5d1-4ef4-a0c8-3399f68d386d",
"name": "Prospects Latam"
}
PATCH /list-contact/:id (list_contacts:update)β
Request:
{
"name": "Prospects Latam v2",
"description": "Updated list"
}
DELETE /list-contact/:id (list_contacts:delete)β
Response 200 (DefaultResponse):
{
"success": true,
"data": {},
"message": "List deleted"
}
POST /list-contact/duplicate (list_contacts:read)β
Request:
{
"list_id": "9f720ce2-f5d1-4ef4-a0c8-3399f68d386d",
"new_name": "Prospects Latam Copy"
}
POST /list-contact/verify-contacts/:id (list_contacts:read)β
Request: no body.
Response 200 (DefaultResponse):
{
"success": true,
"data": {},
"message": "Verification started"
}
Prospect (/prospect)β
POST /prospect/filters (prospect:read)β
Request:
{
"source": "job_title",
"search": "engineer"
}
Response 200 (list of suggested values):
[
{
"type": "job_title",
"value": "Software Engineer"
}
]
POST /prospect/list (prospect:read)β
Request:
{
"filters": {},
"paginate": { "page": 1, "limit": 25 },
"all_contacts": false
}
Service Handler (/service-handler)β
POST /service-handler/unlock-contacts (payment_prospect:create)β
Request:
{
"filters": {},
"order_by": { "score": "DESC" },
"total_records": 100,
"sync_hubspot": false
}
Response 200:
{
"id": "7ec0d9c6-cab6-46cf-8d5a-b5f22f17f6da",
"status": "PENDING"
}
POST /service-handler/unlock-selected-contacts (payment_prospect:create)β
Request:
{
"ids": [
"7b9c3df7-0eb5-4be2-af74-7e48d4b43b9c",
"a96f2d7f-743f-4747-9198-7ca35ccab774"
],
"sync_hubspot": false
}
POST /service-handler/verify-email (verify_email:create)β
Request:
{
"emails": [
{
"email": "ana@example.com",
"contact_id": "7b9c3df7-0eb5-4be2-af74-7e48d4b43b9c"
}
],
"sync_hubspot": false
}
Common Errorsβ
401 Unauthorizedβ
When the Authorization header is missing or invalid:
{
"statusCode": 401,
"message": "The provided API key is invalid or unauthorized."
}
400 Bad Requestβ
When the body fails validations (required fields, invalid UUID, incorrect types).