(888) 881-1066
TwitterLinkedInFacebookInstagramYouTube
ech
win

API Reference

Complete API documentation for echowin

Getting Started
Authentication
Contacts
Agency

More APIs coming soon!

Additional APIs for agents, calls, messages, and more are currently private. We'll be releasing them publicly soon.

API Reference

Complete API documentation for echowin

More APIs coming soon!

Additional APIs for agents, calls, messages, and more are currently private. We'll be releasing them publicly soon.

Contacts API

The Contacts API allows you to programmatically manage contacts in your echowin account. You can create, read, update, and delete contacts, as well as manage custom fields and tags.

Table of Contents

Getting Started

Contact Operations

Notes Management

Assignments Management

Board Management

Tags & Custom Fields

Authentication

All API requests require authentication using an API key. Include your API key in the X-API-Key header:

X-API-Key: your-api-key-here
GET/api/v1/contacts

Get a paginated list of contacts for your team

Query Parameters

pageinteger(default: 1)

Page number

limitinteger(default: 20)

Number of results per page (max 100)

searchstring

Search contacts by name, email, or phone number

sortBystring(default: createdAt)

Sort field: createdAt, firstName, lastName, email, number

sortOrderstring(default: desc)

Sort order: asc or desc

tagIdsstring

Filter by tag IDs (comma-separated)

Responses

200Success
{
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "firstName": "John",
      "lastName": "Doe",
      "email": "[email protected]",
      "number": "+15551234567",
      "carrier": "AT&T",
      "customFields": {
        "company": "Acme Corp",
        "role": "Manager"
      },
      "tags": [
        {
          "id": "tag-id-1",
          "name": "VIP",
          "color": "#10B981"
        },
        {
          "id": "tag-id-2",
          "name": "Lead",
          "color": "#3B82F6"
        }
      ],
      "crmStage": {
        "id": "stage-id",
        "name": "Lead"
      },
      "createdAt": "2024-01-01T00:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "totalCount": 150,
    "totalPages": 8
  },
  "customFieldSchemas": [
    {
      "id": "field-id",
      "name": "company",
      "label": "Company",
      "type": "text",
      "required": false
    }
  ],
  "availableTags": [
    {
      "id": "tag-id-1",
      "name": "VIP",
      "color": "#10B981"
    },
    {
      "id": "tag-id-2",
      "name": "Lead",
      "color": "#3B82F6"
    }
  ]
}

API Tester

GET https://echo.win/api/v1/contacts
page
limit
search
sortBy
sortOrder
tagIds
GET/api/v1/contacts/:contactId

Get detailed information about a specific contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Responses

200Success
{
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "number": "+15551234567",
    "carrier": "AT&T",
    "customFields": {
      "company": "Acme Corp",
      "role": "Manager"
    },
    "tags": [
      {
        "id": "tag-id-1",
        "name": "VIP",
        "color": "#10B981"
      }
    ],
    "crmStage": {
      "id": "stage-id",
      "name": "Lead"
    },
    "notes": [
      {
        "id": "note-id",
        "note": "Interested in premium plan",
        "createdAt": "2024-01-01T00:00:00.000Z"
      }
    ],
    "createdAt": "2024-01-01T00:00:00.000Z"
  },
  "customFieldSchemas": [],
  "availableTags": [
    {
      "id": "tag-id-1",
      "name": "VIP",
      "color": "#10B981"
    },
    {
      "id": "tag-id-2",
      "name": "Lead",
      "color": "#3B82F6"
    }
  ]
}
404Contact not found
{
  "error": "Contact not found"
}

API Tester

GET https://echo.win/api/v1/contacts/:contactId
POST/api/v1/contacts

Create a new contact

Request Body

firstNamestring

Contact's first name

lastNamestring

Contact's last name

emailstring

Contact's email address

numberstringrequired

Contact's phone number (will be automatically cleaned)

carrierstring

Phone carrier

customFieldsobject

Custom field values as key-value pairs

tagIdsarray

Array of existing tag IDs to assign

tagNamesarray

Array of tag names (will create new tags if they don't exist)

noteobject

Optional note to create for the contact. Object with 'note' (string, required) and 'type' (string, optional: GENERAL, INFO, WARNING, or DANGER)

assignUserIdsarray

Array of user IDs to assign to this contact

boardIdsarray

Array of board IDs to add the contact to

Responses

201Created
{
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "number": "+15551234567",
    "carrier": "AT&T",
    "customFields": {},
    "tags": [
      {
        "id": "tag-id-1",
        "name": "New Customer",
        "color": "#3B82F6"
      }
    ],
    "createdAt": "2024-01-01T00:00:00.000Z"
  },
  "message": "Contact created successfully"
}
400Validation error
{
  "error": "Validation error",
  "details": [
    {
      "field": "email",
      "message": "Invalid email format"
    }
  ]
}

API Tester

POST https://echo.win/api/v1/contacts
PUT/api/v1/contacts/:contactId

Update an existing contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Request Body

firstNamestring

Contact's first name

lastNamestring

Contact's last name

emailstring

Contact's email address

numberstring

Contact's phone number

carrierstring

Phone carrier

customFieldsobject

Custom field values to update

crmStageIdstring

CRM stage ID

tagIdsarray

Array of tag IDs (replaces all existing tags)

tagNamesarray

Array of tag names (creates new tags if needed, replaces all existing tags)

Responses

200Success
{
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "firstName": "John",
    "lastName": "Smith",
    "email": "[email protected]",
    "number": "+15551234567",
    "customFields": {
      "company": "New Company"
    },
    "tags": [
      {
        "id": "tag-id-1",
        "name": "VIP",
        "color": "#10B981"
      },
      {
        "id": "tag-id-2",
        "name": "Customer",
        "color": "#F59E0B"
      }
    ]
  },
  "message": "Contact updated successfully"
}

API Tester

PUT https://echo.win/api/v1/contacts/:contactId
DELETE/api/v1/contacts/:contactId

Delete a contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Responses

200Success
{
  "message": "Contact deleted successfully"
}
404Contact not found
{
  "error": "Contact not found"
}

API Tester

DELETE https://echo.win/api/v1/contacts/:contactId
POST/api/v1/contacts/bulk

Create multiple contacts in a single request

Request Body

contactsarrayrequired

Array of contact objects (max 100)

Responses

201Created
{
  "message": "Bulk contact creation completed",
  "summary": {
    "requested": 2,
    "created": 2,
    "errors": 0
  }
}

API Tester

POST https://echo.win/api/v1/contacts/bulk

Notes Management

GET/api/v1/contacts/:contactId/notes

Get all notes for a specific contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Responses

200Success
{
  "data": [
    {
      "id": "note-id-1",
      "note": "Discussed pricing options",
      "type": "INFO",
      "createdAt": "2024-01-01T00:00:00.000Z",
      "creator": {
        "id": "user-id",
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]"
      }
    },
    {
      "id": "note-id-2",
      "note": "Follow up needed",
      "type": "WARNING",
      "createdAt": "2024-01-02T00:00:00.000Z",
      "creator": {
        "id": "user-id",
        "firstName": "Jane",
        "lastName": "Smith",
        "email": "[email protected]"
      }
    }
  ]
}

API Tester

GET https://echo.win/api/v1/contacts/:contactId/notes
POST/api/v1/contacts/:contactId/notes

Create a new note for a contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Request Body

notestringrequired

The content of the note

typestring(default: GENERAL)

Note type: GENERAL, INFO, WARNING, or DANGER

Responses

201Created
{
  "data": {
    "id": "new-note-id",
    "note": "Customer interested in enterprise plan",
    "type": "INFO",
    "createdAt": "2024-01-01T00:00:00.000Z",
    "creator": {
      "id": "user-id",
      "firstName": "John",
      "lastName": "Doe",
      "email": "[email protected]"
    }
  },
  "message": "Note created successfully"
}

API Tester

POST https://echo.win/api/v1/contacts/:contactId/notes

Assignments Management

GET/api/v1/contacts/:contactId/assignments

Get all team member assignments for a contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Responses

200Success
{
  "data": [
    {
      "id": "assignment-id-1",
      "contactId": "contact-id",
      "userId": "user-id-1",
      "assignedAt": "2024-01-01T00:00:00.000Z",
      "user": {
        "id": "user-id-1",
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]",
        "picture": null
      }
    },
    {
      "id": "assignment-id-2",
      "contactId": "contact-id",
      "userId": "user-id-2",
      "assignedAt": "2024-01-01T00:00:00.000Z",
      "user": {
        "id": "user-id-2",
        "firstName": "Jane",
        "lastName": "Smith",
        "email": "[email protected]",
        "picture": "https://example.com/avatar.jpg"
      }
    }
  ]
}

API Tester

GET https://echo.win/api/v1/contacts/:contactId/assignments
POST/api/v1/contacts/:contactId/assignments

Add team members to a contact (keeps existing assignments)

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Request Body

userIdsarrayrequired

Array of user IDs to assign to the contact

Responses

201Created
{
  "data": [
    {
      "id": "assignment-id",
      "contactId": "contact-id",
      "userId": "user-id",
      "assignedAt": "2024-01-01T00:00:00.000Z",
      "user": {
        "id": "user-id",
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]"
      }
    }
  ],
  "message": "Added 1 assignment(s)"
}
400Invalid users
{
  "error": "Some users are not members of this team"
}

API Tester

POST https://echo.win/api/v1/contacts/:contactId/assignments
PUT/api/v1/contacts/:contactId/assignments

Replace all team member assignments for a contact

Path Parameters

contactIdstringrequired

The unique identifier of the contact

Request Body

userIdsarrayrequired

Array of user IDs to assign (replaces all existing assignments)

Responses

200Success
{
  "data": [
    {
      "id": "assignment-id",
      "contactId": "contact-id",
      "userId": "user-id",
      "assignedAt": "2024-01-01T00:00:00.000Z",
      "user": {
        "id": "user-id",
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]"
      }
    }
  ],
  "message": "Assignments updated successfully"
}

API Tester

PUT https://echo.win/api/v1/contacts/:contactId/assignments

Tags Management

GET/api/v1/tags

Get all tags for your team

Responses

200Success
{
  "data": [
    {
      "id": "tag-id-1",
      "name": "VIP",
      "color": "#10B981",
      "contactCount": 25,
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    },
    {
      "id": "tag-id-2",
      "name": "Lead",
      "color": "#3B82F6",
      "contactCount": 150,
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    }
  ]
}

API Tester

GET https://echo.win/api/v1/tags
POST/api/v1/tags

Create a new tag

Request Body

namestringrequired

Tag name (must be unique per team)

colorstring(default: #3B82F6)

Hex color code (e.g., #3B82F6)

Responses

201Created
{
  "data": {
    "id": "new-tag-id",
    "name": "Premium",
    "color": "#10B981",
    "createdAt": "2024-01-01T00:00:00.000Z",
    "updatedAt": "2024-01-01T00:00:00.000Z"
  },
  "message": "Tag created successfully"
}
400Tag already exists
{
  "error": "A tag with this name already exists"
}

API Tester

POST https://echo.win/api/v1/tags
GET/api/v1/contacts/custom-fields

Get the custom field schemas configured for contacts

Responses

200Success
{
  "data": [
    {
      "id": "field-id",
      "name": "company",
      "label": "Company",
      "type": "text",
      "required": false,
      "placeholder": "Enter company name",
      "helpText": "The company the contact works for",
      "order": 1
    },
    {
      "id": "field-id-2",
      "name": "role",
      "label": "Role",
      "type": "select",
      "required": true,
      "options": [
        "Manager",
        "Employee",
        "Executive"
      ],
      "order": 2
    }
  ]
}

API Tester

GET https://echo.win/api/v1/contacts/custom-fields

Board Operations

GET/api/v1/contacts/:contactId/boards

List all boards a contact is assigned to

Responses

200Success
{
  "data": [
    {
      "id": "board-id-123",
      "name": "Sales Pipeline",
      "description": "Main sales tracking board",
      "customFieldSchema": {
        "id": "schema-id-123",
        "name": "sales_fields",
        "label": "Sales Fields",
        "type": "object"
      },
      "contactCount": 45,
      "createdAt": "2024-01-15T10:30:00Z"
    }
  ]
}

API Tester

GET https://echo.win/api/v1/contacts/:contactId/boards
POST/api/v1/contacts/:contactId/boards

Assign a contact to one or more boards

Request Body

boardIdsarrayrequired

Array of board IDs to assign the contact to

Responses

200Success
{
  "data": {
    "message": "Contact assigned to 2 boards successfully",
    "boards": [
      {
        "id": "board-id-123",
        "name": "Sales Pipeline"
      },
      {
        "id": "board-id-456",
        "name": "Support Queue"
      }
    ]
  }
}

API Tester

POST https://echo.win/api/v1/contacts/:contactId/boards
PUT/api/v1/contacts/:contactId/boards

Update a contact's board assignments (replaces existing assignments)

Request Body

boardIdsarrayrequired

Array of board IDs to assign (replaces all existing assignments)

Responses

200Success
{
  "data": {
    "message": "Contact board assignments updated successfully",
    "removedFrom": 2,
    "addedTo": 1,
    "boards": [
      {
        "id": "board-id-789",
        "name": "Customer Success"
      }
    ]
  }
}

API Tester

PUT https://echo.win/api/v1/contacts/:contactId/boards
DELETE/api/v1/contacts/:contactId/boards

Remove a contact from all boards

Responses

200Success
{
  "data": {
    "message": "Contact removed from all boards successfully",
    "removedFrom": 3
  }
}

API Tester

DELETE https://echo.win/api/v1/contacts/:contactId/boards

Board Management

GET/api/v1/boards

List all available boards for your team

Responses

200Success
{
  "data": [
    {
      "id": "board-id-123",
      "name": "Sales Pipeline",
      "description": "Main sales tracking board",
      "customFieldSchema": {
        "id": "schema-id-123",
        "name": "sales_fields",
        "label": "Sales Fields",
        "type": "object",
        "options": {
          "fields": [
            {
              "name": "deal_value",
              "type": "number",
              "label": "Deal Value"
            },
            {
              "name": "stage",
              "type": "select",
              "label": "Sales Stage",
              "options": [
                "Lead",
                "Qualified",
                "Proposal",
                "Closed"
              ]
            }
          ]
        }
      },
      "contactCount": 45,
      "createdAt": "2024-01-15T10:30:00Z",
      "updatedAt": "2024-01-20T14:20:00Z"
    },
    {
      "id": "board-id-456",
      "name": "Support Queue",
      "description": "Customer support tracking",
      "customFieldSchema": {
        "id": "schema-id-456",
        "name": "support_fields",
        "label": "Support Fields",
        "type": "object"
      },
      "contactCount": 23,
      "createdAt": "2024-01-10T09:00:00Z"
    }
  ]
}

API Tester

GET https://echo.win/api/v1/boards
ech
win

echowin is the leading AI Receptionist And Call Automation Platform, enabling businesses to create and deploy intelligent agents for phone, chat, and Discord in minutes.

(888) 881-1066[email protected]

Boulder, Austin & Kathmandu

Products

  • Agent Builder Platform
  • AI Voice Agent
  • AI Chatbot
  • AI Receptionist
  • Business Phone Number
  • Free AI CRM

Solutions

  • Receptionist
  • Customer Support
  • Collections
  • Appointment Scheduling
  • Lead Qualification
  • Call Routing
  • Multilingual Support
  • After Hours

Industries

  • Energy & Power
  • Roofing
  • Automotive Repair
  • Medical Practice
  • Security Operations
  • Call Center
  • Agencies & Resellers

Resources

  • Blog
  • Documentation
  • API Documentation
  • Reviews & Mentions
  • FAQ
  • News
  • Changelog
  • About Us
  • Contact Us
  • Career
Terms of ServicePrivacy PolicyLimited Use DisclosureUser Data Deletion
TwitterLinkedInFacebookInstagramYouTube

© 2025 echowin Inc. All rights reserved.Built with ❤️ in Boulder, Austin, and Kathmandu