---
schema: "agents.md/v1"
platform: "expedify"
version: "2.0.0"
api_base: "https://api.expedify.ai"
docs_base: "https://docs.expedify.ai"
---

# Expedify AI Agent Configuration

> Machine-readable configuration for AI agents integrating with Expedify CRM & Marketing Automation

## Platform Overview

```yaml
name: Expedify
description: Enterprise CRM and marketing automation with AI-powered workflows
version: "2.0"
capabilities:
  - crm: Customer relationship management (contacts, companies, deals, tasks)
  - workflows: Visual workflow automation with 100+ node types
  - marketing: Multi-channel campaigns (email, SMS, WhatsApp, voice)
  - analytics: Custom dashboards, charts, and query builder
  - agentic: AI orchestrator with skill-based execution
  - integrations: 50+ third-party integrations
```

## Authentication

```yaml
auth:
  type: bearer_token
  header: "Authorization: Bearer {api_key}"
  obtain:
    endpoint: POST /api/auth/api-keys
    requires: user_session
  format: "exp_[a-zA-Z0-9]{32}"
```

## Core Operations

### CRM

```yaml
contacts:
  list:
    method: GET
    endpoint: /api/contacts
    params:
      page: int
      limit: int (max 100)
      search: string
  create:
    method: POST
    endpoint: /api/contacts
    body:
      name: string (required)
      email: string (required)
      phone: string
      company_id: uuid
  read:
    method: GET
    endpoint: /api/contacts/{id}
  update:
    method: PUT
    endpoint: /api/contacts/{id}
  delete:
    method: DELETE
    endpoint: /api/contacts/{id}

companies:
  list: GET /api/companies
  create: POST /api/companies
  read: GET /api/companies/{id}

deals:
  list: GET /api/deals
  create: POST /api/deals
  update_stage: PUT /api/deals/{id}/stage

tasks:
  list: GET /api/tasks
  create: POST /api/tasks
  complete: PUT /api/tasks/{id}/complete
```

### Workflows

```yaml
workflows:
  list:
    method: GET
    endpoint: /api/workflows

  execute:
    method: POST
    endpoint: /api/triggers/execute
    body:
      trigger_uuid: string (required)
      variables: object
    example:
      trigger_uuid: "btn-summary-contact-v1"
      variables:
        contact_id: "abc-123"
        action: "generate_summary"

  status:
    method: GET
    endpoint: /api/workflow-executions/{execution_id}

  stream:
    method: GET
    endpoint: /api/workflow-executions/{id}/stream
    type: server_sent_events
    events:
      - node_started
      - node_completed
      - node_error
      - workflow_completed
```

### Agentic Mode

```yaml
agentic:
  chat:
    method: POST
    endpoint: /api/agentic/chat
    body:
      message: string
      conversation_id: string (optional)
      mode: "agentic"

  stream:
    method: GET
    endpoint: /api/agentic/stream/{conversation_id}
    type: server_sent_events
    events:
      - thinking
      - skill_started
      - skill_completed
      - response

  skills:
    - kb_search: Search knowledge bases
    - crm_query: Query CRM data
    - workflow_execute: Run workflows
    - data_analysis: Analyze data with SQL
```

### Marketing

```yaml
campaigns:
  list: GET /api/campaigns
  create: POST /api/campaigns
  send: POST /api/campaigns/{id}/send
  stats: GET /api/campaigns/{id}/stats

templates:
  list: GET /api/templates
  create: POST /api/templates
```

## Webhook Events

```yaml
webhooks:
  configure: POST /api/webhooks
  events:
    - contact.created
    - contact.updated
    - company.created
    - deal.created
    - deal.stage_changed
    - deal.won
    - deal.lost
    - task.created
    - task.completed
    - workflow.started
    - workflow.completed
    - workflow.failed
    - campaign.sent
    - campaign.opened
    - campaign.clicked
```

## Rate Limits

```yaml
rate_limits:
  default: 1000/hour
  burst: 100/minute
  headers:
    remaining: X-RateLimit-Remaining
    reset: X-RateLimit-Reset
```

## Error Handling

```yaml
errors:
  format:
    error: string
    code: string
    details: object

  codes:
    400: Bad Request
    401: Unauthorized
    403: Forbidden
    404: Not Found
    429: Rate Limited
    500: Internal Error
```

## Quick Start Examples

### Create Contact (curl)

```bash
curl -X POST https://api.expedify.ai/api/contacts \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "phone": "+1234567890"
  }'
```

### Execute Workflow (curl)

```bash
curl -X POST https://api.expedify.ai/api/triggers/execute \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "trigger_uuid": "btn-summary-contact-v1",
    "variables": {
      "contact_id": "abc-123"
    }
  }'
```

### Agentic Chat (curl)

```bash
curl -X POST https://api.expedify.ai/api/agentic/chat \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Find all deals closing this month",
    "mode": "agentic"
  }'
```

## Documentation Links

- [Getting Started](/docs/getting-started/quickstart)
- [API Reference](/docs/api/overview)
- [Workflow Nodes](/docs/features/workflows/nodes)
- [Full OpenAPI Spec](/openapi.yaml)

## Support

- Documentation: https://docs.expedify.ai
- API Status: https://status.expedify.ai
- Email: support@expedify.ai
