API Reference
Base URL: https://api.dockai.co
Dock AI maps businesses to their software connectors (booking systems, payment providers, etc.). Use our API to resolve a domain and discover available integrations.
| Endpoint | Description | Rate Limit |
|---|---|---|
| GET /api/v1/resolve | Resolve domain to entity + connectors + actions | 20/min |
| POST /api/v1/execute-action | Execute a business action (book, contact, etc.) | Auth required + per-action limit |
| GET /api/v1/search | Search entities by name | 20/min |
GET /api/v1/resolve
Resolve a business domain to find the entity and its connected software providers.
Parameters
| Name | Type | Description |
|---|---|---|
| domain | query (required) | The domain to resolve (e.g., septime-charonne.fr) |
Example Request
curl "https://api.dockai.co/api/v1/resolve?domain=septime-charonne.fr"Response
{
"entity": {
"id": "uuid",
"name": "Septime",
"domain": "septime-charonne.fr",
"category": "restaurant",
"city": "Paris",
"country": "FR",
"address": "80 Rue de Charonne",
"lat": 48.8534,
"lng": 2.3839
},
"connectors": [
{
"slug": "zenchef",
"name": "Zenchef",
"category": "booking",
"status": "connected",
"mcp_endpoint": "https://mcp.zenchef.com",
"external_id": "12345"
}
],
"capabilities": [
{
"action": "book",
"name": "Booking",
"description": "Book a table at Septime. Open Tuesday to Saturday.",
"input_schema": {
"date": { "type": "string", "required": true, "description": "Date", "format": "date" },
"time": { "type": "string", "required": true, "description": "Time", "format": "time" },
"guests": { "type": "number", "required": true, "description": "Number of guests" },
"name": { "type": "string", "required": true, "description": "Name" },
"phone": { "type": "string", "required": false, "description": "Phone", "format": "phone" }
}
},
{
"action": "send_message",
"name": "Contact",
"description": "Send a message to the Septime team.",
"input_schema": {
"name": { "type": "string", "required": true, "description": "Name" },
"email": { "type": "string", "required": true, "description": "Email", "format": "email" },
"message": { "type": "string", "required": true, "description": "Message" }
}
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
| entity | object | The business entity (name, location, category) |
| connectors | array | Software providers detected for this business |
| capabilities | array | Actions available for this business (booking, contact, etc.) |
| capabilities[].action | string | Action identifier (book, send_message, search_catalog...) |
| capabilities[].input_schema | object | Parameters required for this action (type, required, description) |
| connectors[].status | string | "connected" = MCP available, "not_connected" = detected but no MCP |
| connectors[].mcp_endpoint | string? | MCP server URL (only if status = connected) |
| connectors[].external_id | string? | Entity ID at the provider (use when calling MCP) |
Errors
// 400 Bad Request
{ "error": "Missing domain parameter" }
// 404 Not Found
{ "error": "Entity not found", "domain": "unknown.com" }
// 429 Too Many Requests
{ "error": "Rate limit exceeded" }POST /api/v1/execute-action
Execute a business action (booking, contact, etc.) discovered via the resolve endpoint.
Authentication Required: This endpoint requires a valid Bearer token. Use our MCP server (handles auth automatically) or request an API key at support@dockai.co.
Headers
| Header | Value |
|---|---|
| Authorization | Bearer <access_token> (required) |
Request Body
| Field | Type | Description |
|---|---|---|
| entityId | string (required) | The entity UUID from the resolve response |
| action | string (required) | The action identifier (e.g., "book", "send_message") |
| params | object | Parameters matching the action's input_schema |
Example Request
curl -X POST "https://api.dockai.co/api/v1/execute-action" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"entityId": "uuid-from-resolve",
"action": "book",
"params": {
"date": "2025-02-15",
"time": "20:00",
"guests": 4,
"name": "Jean Dupont",
"phone": "+33612345678"
}
}'Response
{
"success": true,
"action": "book",
"result": {
"confirmation": "Your booking has been confirmed",
"reference": "RES-12345"
}
}Errors
// 401 Unauthorized - Missing or invalid token
{ "error": "Authentication required", "message": "This endpoint requires authentication. Please provide a valid Bearer token." }
{ "error": "Invalid token", "message": "The provided token is invalid or expired." }
// 400 Bad Request - Invalid parameters
{ "error": "Invalid parameters", "details": ["date is required", "guests must be a number"] }
// 404 Not Found - Action not available
{ "error": "Action not found", "message": "The action \"book\" is not available for this entity" }
// 429 Too Many Requests
{ "error": "Rate limit exceeded", "message": "Maximum 60 requests per hour", "retry_after": 3600 }
// 502 Bad Gateway - Webhook error
{ "success": false, "error": "Webhook returned an error", "status": 500 }GET /api/v1/search
Search for entities by name with optional filters.
Parameters
| Name | Type | Description |
|---|---|---|
| q | query (required) | Search query |
| city | query | Filter by city name |
| country | query | Filter by country code (e.g., FR) |
| category | query | Filter by category (e.g., restaurant) |
| limit | query | Max results (default: 10, max: 50) |
Example Request
curl "https://api.dockai.co/api/v1/search?q=septime&city=Paris&limit=5"Response
{
"results": [
{
"entity": {
"id": "uuid",
"name": "Septime",
"domain": "septime-charonne.fr",
"city": "Paris",
"country": "FR",
"category": "restaurant"
},
"connectors": [
{ "slug": "zenchef", "name": "Zenchef", "status": "connected" }
],
"capabilities": [
{
"action": "book",
"name": "Booking",
"description": "Book a table",
"input_schema": { "date": { "type": "string", "required": true } }
}
]
}
]
}For AI Assistants: See our MCP documentation to add Dock AI to Claude, ChatGPT, or Mistral.
Rate Limits
All endpoints are rate limited by IP address.
| Endpoint | Limit | Window |
|---|---|---|
| /api/v1/resolve | 20 requests | 1 minute |
| /api/v1/search | 20 requests | 1 minute |
| /api/v1/execute-action | Auth required + per-action limit | 1 hour |
execute-action requires authentication. Rate limiting is per-user plus a per-action limit set by the business (default 20/hour).
Need higher limits? Contact us at support@dockai.co