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.

EndpointDescriptionRate Limit
GET /api/v1/resolveResolve domain to entity + connectors + actions20/min
POST /api/v1/execute-actionExecute a business action (book, contact, etc.)Auth required + per-action limit
GET /api/v1/searchSearch entities by name20/min

GET /api/v1/resolve

Resolve a business domain to find the entity and its connected software providers.

Parameters

NameTypeDescription
domainquery (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

FieldTypeDescription
entityobjectThe business entity (name, location, category)
connectorsarraySoftware providers detected for this business
capabilitiesarrayActions available for this business (booking, contact, etc.)
capabilities[].actionstringAction identifier (book, send_message, search_catalog...)
capabilities[].input_schemaobjectParameters required for this action (type, required, description)
connectors[].statusstring"connected" = MCP available, "not_connected" = detected but no MCP
connectors[].mcp_endpointstring?MCP server URL (only if status = connected)
connectors[].external_idstring?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

HeaderValue
AuthorizationBearer <access_token> (required)

Request Body

FieldTypeDescription
entityIdstring (required)The entity UUID from the resolve response
actionstring (required)The action identifier (e.g., "book", "send_message")
paramsobjectParameters 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 }

Search for entities by name with optional filters.

Parameters

NameTypeDescription
qquery (required)Search query
cityqueryFilter by city name
countryqueryFilter by country code (e.g., FR)
categoryqueryFilter by category (e.g., restaurant)
limitqueryMax 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.

EndpointLimitWindow
/api/v1/resolve20 requests1 minute
/api/v1/search20 requests1 minute
/api/v1/execute-actionAuth required + per-action limit1 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