---
title: "API Reference | Flexie REST API for Contacts, Deals, Cases & More"
url: https://flexie.io/api
description: "Flexie's REST API: 142 endpoints across contacts, leads, deals, cases, tasks and custom records. API-key auth, JSON in and out. Download the OpenAPI spec."
---

REST API

# Build on your  
Flexie data.

A standard REST API over everything in your workspace: contacts, leads, deals, cases, tasks, and your own custom records. Predictable URLs, API-key auth, and JSON in and out, with 142 endpoints across 15 resource groups.

[Read the quickstart](#quickstart)[Download the OpenAPI spec](https://flexie.io/flexie-api.json)

OpenAPI 1.0.1 (Swagger 2.0). Import it into Postman, Insomnia, or your own client.

Quickstart

## Your first request, in a minute.

Every workspace has its own API host. Send your key with each request and you're talking to your live data.

Base URL

https://your-subdomain.flexie.io/api

Your API URL is your subdomain, then `/api/`, then the endpoint, for example `/api/leads`.

Authentication

Send your key in the `apikey` header, or as an `?apikey=` query parameter. Your key lives in your account settings, under API Settings. Prefer OAuth 2.0? That's supported too.

List contacts

```
curl https://your-subdomain.flexie.io/api/contacts \
  -H "apikey: YOUR_API_KEY"
```

Create a contact

```
curl -X POST https://your-subdomain.flexie.io/api/contacts/new \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "firstname": "Jane",
    "lastname": "Doe",
    "email": "jane@acme.com"
  }'
```

Every response is JSON, including errors.

Conventions

## Predictable by design.

### Resource URLs

Each resource has a clean path. List at `/api/contacts`, fetch one at `/api/contacts/{id}`.

### Standard verbs

GET to read, POST to create, PUT to update, DELETE to remove.

### JSON everywhere

Requests and responses are JSON, and so are errors, so you can parse one shape every time.

Status codes

200

Request succeeded.

204

Succeeded with nothing to return (e.g. a delete).

400

Bad request: something in the input was malformed.

404

No record matched the request.

500

Something went wrong on our side.

Endpoint reference

## 142 endpoints, grouped by what they touch.

Click any endpoint for a copy-ready request example. Field names are the default set, so an account with custom fields will use its own aliases. Download the OpenAPI spec for full response schemas.

[Contact16](#g-contact)[Lead16](#g-lead)[Accounts16](#g-accounts)[Deals16](#g-deals)[Cases20](#g-cases)[Tasks9](#g-tasks)[Notes4](#g-notes)[Emails4](#g-emails)[Custom entities16](#g-custom-entities)[Workflows6](#g-workflows)[Forms2](#g-forms)[Pages3](#g-pages)[Reports3](#g-reports)[Users8](#g-users)[Roles3](#g-roles)

### Contact

People you do business with, plus contact lists and segmentation.

16 endpoints

GET`/api/contact/lists`Filter Contact Lists

```
curl "https://your-subdomain.flexie.io/api/contact/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/contact/lists/{id}/add/{entityId}`Add a contact to a list

```
curl -X POST "https://your-subdomain.flexie.io/api/contact/lists/42/add/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/contact/lists/{id}/remove/{entityId}`Remove a contact from a list

```
curl -X POST "https://your-subdomain.flexie.io/api/contact/lists/42/remove/17" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/contacts`List Contacts

```
curl "https://your-subdomain.flexie.io/api/contacts?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/contacts`List Contacts

```
curl -X POST "https://your-subdomain.flexie.io/api/contacts" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/contacts/{id}`Get Contact

```
curl "https://your-subdomain.flexie.io/api/contacts/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/contacts/{id}`Update Contact

```
curl -X PUT "https://your-subdomain.flexie.io/api/contacts/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "david.okafor@example.com",
    "company": "Bluewave Logistics Ltd",
    "city": "Manchester",
    "status": "Nurture",
    "source": "Referral"
  }'
```

DELETE`/api/contacts/{id}`Delete Contact

```
curl -X DELETE "https://your-subdomain.flexie.io/api/contacts/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/contacts/{id}/lists`Get Contact Lists

```
curl "https://your-subdomain.flexie.io/api/contacts/42/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/contacts/{id}/notes`Get Contact Notes

```
curl "https://your-subdomain.flexie.io/api/contacts/42/notes" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/contacts/{id}/workflows`Get Contact Workflows

```
curl "https://your-subdomain.flexie.io/api/contacts/42/workflows" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/contacts/edit`Update Contact By Unique Field

```
curl -X PUT "https://your-subdomain.flexie.io/api/contacts/edit" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "david.okafor@example.com",
    "company": "Bluewave Logistics Ltd",
    "city": "Manchester",
    "status": "Nurture",
    "source": "Referral"
  }'
```

GET`/api/contacts/list/fields`List Contact Fields

```
curl "https://your-subdomain.flexie.io/api/contacts/list/fields" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/contacts/list/fields/categories`List Contact Field Categories

```
curl "https://your-subdomain.flexie.io/api/contacts/list/fields/categories" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/contacts/list/lists`List Contact Lists

```
curl "https://your-subdomain.flexie.io/api/contacts/list/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/contacts/new`Create Contact

```
curl -X POST "https://your-subdomain.flexie.io/api/contacts/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Ms.",
    "first_name": "David",
    "last_name": "Okafor",
    "email": "david.okafor@example.com",
    "phone": "+442071838750",
    "company": "Bluewave Logistics",
    "city": "London",
    "country": "United Kingdom",
    "status": "New",
    "source": "Meeting"
  }'
```

### Lead

Inbound and outbound leads, from capture through qualification.

16 endpoints

GET`/api/lead/lists`Filter Lead Lists

```
curl "https://your-subdomain.flexie.io/api/lead/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/lead/lists/{id}/add/{entityId}`Add a lead to a list

```
curl -X POST "https://your-subdomain.flexie.io/api/lead/lists/42/add/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/lead/lists/{id}/remove/{entityId}`Remove a lead from a list

```
curl -X POST "https://your-subdomain.flexie.io/api/lead/lists/42/remove/17" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/leads`List Leads

```
curl "https://your-subdomain.flexie.io/api/leads?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/leads`List Leads

```
curl -X POST "https://your-subdomain.flexie.io/api/leads" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/leads/{id}`Get Lead

```
curl "https://your-subdomain.flexie.io/api/leads/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/leads/{id}`Update Lead

```
curl -X PUT "https://your-subdomain.flexie.io/api/leads/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "maria.hernandez@example.com",
    "company": "Northwind Trading LLC",
    "city": "Dallas",
    "status": "Qualify",
    "source": "Referral"
  }'
```

DELETE`/api/leads/{id}`Delete Lead

```
curl -X DELETE "https://your-subdomain.flexie.io/api/leads/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/leads/{id}/lists`Get Lead Lists

```
curl "https://your-subdomain.flexie.io/api/leads/42/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/leads/{id}/notes`Get Lead Notes

```
curl "https://your-subdomain.flexie.io/api/leads/42/notes" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/leads/{id}/workflows`Get Lead Workflows

```
curl "https://your-subdomain.flexie.io/api/leads/42/workflows" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/leads/edit`Update Lead By Unique FIeld

```
curl -X PUT "https://your-subdomain.flexie.io/api/leads/edit" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "maria.hernandez@example.com",
    "company": "Northwind Trading LLC",
    "city": "Dallas",
    "status": "Qualify",
    "source": "Referral"
  }'
```

GET`/api/leads/list/fields`List Lead Fields

```
curl "https://your-subdomain.flexie.io/api/leads/list/fields" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/leads/list/fields/categories`List Lead Field Categories

```
curl "https://your-subdomain.flexie.io/api/leads/list/fields/categories" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/leads/list/lists`List Lead Lists

```
curl "https://your-subdomain.flexie.io/api/leads/list/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/leads/new`Create Lead

```
curl -X POST "https://your-subdomain.flexie.io/api/leads/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Mr.",
    "first_name": "Maria",
    "last_name": "Hernandez",
    "email": "maria.hernandez@example.com",
    "phone": "+15125550148",
    "company": "Northwind Trading",
    "city": "Austin",
    "state": "TX",
    "country": "United States",
    "status": "New",
    "source": "Website"
  }'
```

### Accounts

Companies and organizations, with their related records.

16 endpoints

GET`/api/account/lists`Filter Account Lists

```
curl "https://your-subdomain.flexie.io/api/account/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/account/lists/{id}/add/{entityId}`Add an account to a list

```
curl -X POST "https://your-subdomain.flexie.io/api/account/lists/42/add/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/account/lists/{id}/remove/{entityId}`Remove an account from a list

```
curl -X POST "https://your-subdomain.flexie.io/api/account/lists/42/remove/17" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/accounts`List Accounts

```
curl "https://your-subdomain.flexie.io/api/accounts?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/accounts`List Accounts

```
curl -X POST "https://your-subdomain.flexie.io/api/accounts" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/accounts/{id}`Get Account

```
curl "https://your-subdomain.flexie.io/api/accounts/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/accounts/{id}`Update Account

```
curl -X PUT "https://your-subdomain.flexie.io/api/accounts/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Northwind Trading LLC",
    "status": "Qualify",
    "annual_revenue": 5200000,
    "employees": 145
  }'
```

DELETE`/api/accounts/{id}`Delete Account

```
curl -X DELETE "https://your-subdomain.flexie.io/api/accounts/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/accounts/{id}/lists`Get Account Lists

```
curl "https://your-subdomain.flexie.io/api/accounts/42/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/accounts/{id}/notes`Get Account Notes

```
curl "https://your-subdomain.flexie.io/api/accounts/42/notes" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/accounts/{id}/workflows`Get Account Workflows

```
curl "https://your-subdomain.flexie.io/api/accounts/42/workflows" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/accounts/edit`Update Account By Unique FIeld

```
curl -X PUT "https://your-subdomain.flexie.io/api/accounts/edit" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Northwind Trading LLC",
    "status": "Qualify",
    "annual_revenue": 5200000,
    "employees": 145
  }'
```

GET`/api/accounts/list/fields`List Account Fields

```
curl "https://your-subdomain.flexie.io/api/accounts/list/fields" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/accounts/list/fields/categories`List Account Field Categories

```
curl "https://your-subdomain.flexie.io/api/accounts/list/fields/categories" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/accounts/list/lists`List Account Lists

```
curl "https://your-subdomain.flexie.io/api/accounts/list/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/accounts/new`Create Account

```
curl -X POST "https://your-subdomain.flexie.io/api/accounts/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Northwind Trading LLC",
    "status": "New",
    "email": "info@northwindtrading.com",
    "website": "https://www.northwindtrading.com",
    "phone": "+15125550100",
    "industry": "Retail",
    "annual_revenue": 4500000,
    "vat_number": "GB123456789",
    "employees": 120,
    "billing_city": "Austin",
    "billing_country": "United States"
  }'
```

### Deals

Opportunities moving through your sales pipelines.

16 endpoints

GET`/api/deal/lists`Filter Deal Lists

```
curl "https://your-subdomain.flexie.io/api/deal/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/deal/lists/{id}/add/{entityId}`Add a deal to a list

```
curl -X POST "https://your-subdomain.flexie.io/api/deal/lists/42/add/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/deal/lists/{id}/remove/{entityId}`Remove a deal from a list

```
curl -X POST "https://your-subdomain.flexie.io/api/deal/lists/42/remove/17" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/deals`List Deals

```
curl "https://your-subdomain.flexie.io/api/deals?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/deals`List Deals

```
curl -X POST "https://your-subdomain.flexie.io/api/deals" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/deals/{id}`Get Deal

```
curl "https://your-subdomain.flexie.io/api/deals/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/deals/{id}`Update Deal

```
curl -X PUT "https://your-subdomain.flexie.io/api/deals/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Enterprise license renewal",
    "amount": 15000,
    "close_date": "2026-10-15",
    "stage_id": 3
  }'
```

DELETE`/api/deals/{id}`Delete Deal

```
curl -X DELETE "https://your-subdomain.flexie.io/api/deals/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/deals/{id}/lists`Get Deal Lists

```
curl "https://your-subdomain.flexie.io/api/deals/42/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/deals/{id}/notes`Get Deal Notes

```
curl "https://your-subdomain.flexie.io/api/deals/42/notes" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/deals/{id}/workflows`Get Deal Workflows

```
curl "https://your-subdomain.flexie.io/api/deals/42/workflows" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/deals/edit`Update Deal By Unique FIeld

```
curl -X PUT "https://your-subdomain.flexie.io/api/deals/edit" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Enterprise license renewal",
    "amount": 15000,
    "close_date": "2026-10-15",
    "stage_id": 3
  }'
```

GET`/api/deals/list/fields`List Deal Fields

```
curl "https://your-subdomain.flexie.io/api/deals/list/fields" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/deals/list/fields/categories`List Deal Field Categories

```
curl "https://your-subdomain.flexie.io/api/deals/list/fields/categories" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/deals/list/lists`List Deal Lists

```
curl "https://your-subdomain.flexie.io/api/deals/list/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/deals/new`Create Deal

```
curl -X POST "https://your-subdomain.flexie.io/api/deals/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Enterprise license renewal",
    "amount": 12500,
    "close_date": "2026-09-30",
    "pipeline_id": 1,
    "stage_id": 2,
    "owner_id": 3
  }'
```

### Cases

Support tickets and service requests, end to end.

20 endpoints

GET`/api/case/lists`Filter Case Lists

```
curl "https://your-subdomain.flexie.io/api/case/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/case/lists/{id}/add/{entityId}`Add a case to a list

```
curl -X POST "https://your-subdomain.flexie.io/api/case/lists/42/add/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/case/lists/{id}/remove/{entityId}`Remove a case from a list

```
curl -X POST "https://your-subdomain.flexie.io/api/case/lists/42/remove/17" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/cases`List Cases

```
curl "https://your-subdomain.flexie.io/api/cases?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/cases`List Cases

```
curl -X POST "https://your-subdomain.flexie.io/api/cases" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/cases/{id}`Get Case

```
curl "https://your-subdomain.flexie.io/api/cases/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/cases/{id}`Update Case

```
curl -X PUT "https://your-subdomain.flexie.io/api/cases/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Login page returns 500 error",
    "priority": "Medium",
    "public_status": "In Process",
    "internalStatus": "open"
  }'
```

DELETE`/api/cases/{id}`Delete Case

```
curl -X DELETE "https://your-subdomain.flexie.io/api/cases/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/cases/{id}/lists`Get Case Lists

```
curl "https://your-subdomain.flexie.io/api/cases/42/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/cases/{id}/notes`Get Case Notes

```
curl "https://your-subdomain.flexie.io/api/cases/42/notes" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/cases/{id}/replies`Get Case Replies

```
curl "https://your-subdomain.flexie.io/api/cases/42/replies" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/cases/{id}/replies`Add Case Reply

```
curl -X POST "https://your-subdomain.flexie.io/api/cases/42/replies" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Thanks for reaching out. We have reset your account, so you should be able to log in now."
  }'
```

GET`/api/cases/{id}/workflows`Get Case Workflows

```
curl "https://your-subdomain.flexie.io/api/cases/42/workflows" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/cases/edit`Update Case By Unique Field

```
curl -X PUT "https://your-subdomain.flexie.io/api/cases/edit" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Login page returns 500 error",
    "priority": "Medium",
    "public_status": "In Process",
    "internalStatus": "open"
  }'
```

GET`/api/cases/list/fields`List Case Fields

```
curl "https://your-subdomain.flexie.io/api/cases/list/fields" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/cases/list/fields/categories`List Case Field Categories

```
curl "https://your-subdomain.flexie.io/api/cases/list/fields/categories" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/cases/list/lists`List Case Lists

```
curl "https://your-subdomain.flexie.io/api/cases/list/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/cases/new`Create Case

```
curl -X POST "https://your-subdomain.flexie.io/api/cases/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Login page returns 500 error",
    "source": "Email",
    "category": "Bug",
    "priority": "High",
    "public_status": "New Opened",
    "internalStatus": "open",
    "owner_id": 3
  }'
```

GET`/api/cases/replies/{identifier}`Get Case Replies By Identifier

```
curl "https://your-subdomain.flexie.io/api/cases/replies/REF-1042" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/cases/replies/{identifier}`Add Case Reply By Identifier

```
curl -X POST "https://your-subdomain.flexie.io/api/cases/replies/REF-1042" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": 3
  }'
```

### Tasks

To-dos and activities assigned across your team.

9 endpoints

GET`/api/tasks`List Tasks

```
curl "https://your-subdomain.flexie.io/api/tasks?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/tasks`List Tasks Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/tasks" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/tasks/{id}`Get Task

```
curl "https://your-subdomain.flexie.io/api/tasks/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/tasks/{id}`Update Task

```
curl -X PUT "https://your-subdomain.flexie.io/api/tasks/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "Call the customer to confirm renewal terms (rescheduled)",
    "due_date": "2026-06-26 10:00",
    "is_completed": false
  }'
```

DELETE`/api/tasks/{id}`Delete Task

```
curl -X DELETE "https://your-subdomain.flexie.io/api/tasks/42" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/tasks/{id}/complete`Complete Task

```
curl -X POST "https://your-subdomain.flexie.io/api/tasks/42/complete" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/tasks/{id}/incomplete`Incomplete Task

```
curl -X POST "https://your-subdomain.flexie.io/api/tasks/42/incomplete" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/tasks/list/categories`List Task Categories

```
curl "https://your-subdomain.flexie.io/api/tasks/list/categories" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/tasks/new`Create Task

```
curl -X POST "https://your-subdomain.flexie.io/api/tasks/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "Call the customer to confirm renewal terms",
    "owner_id": 3,
    "due_date": "2026-06-25 14:00",
    "association_type": "contact",
    "association_id": 47,
    "reminder_type": "email",
    "remind_minutes": 30
  }'
```

### Notes

Free-form notes attached to any record.

4 endpoints

POST`/api/notes/{entityType}/{entityId}`Create Note

```
curl -X POST "https://your-subdomain.flexie.io/api/notes/contact/17" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Discussed renewal terms and next steps with the customer.",
    "type": "call",
    "datetime": "2026-06-23T14:00:00+00:00"
  }'
```

GET`/api/notes/{id}`Get Note

```
curl "https://your-subdomain.flexie.io/api/notes/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/notes/{id}`Update Note

```
curl -X PUT "https://your-subdomain.flexie.io/api/notes/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Updated: renewal confirmed, contract sent for signature.",
    "type": "meeting"
  }'
```

DELETE`/api/notes/{id}`Delete Note

```
curl -X DELETE "https://your-subdomain.flexie.io/api/notes/42" \
  -H "apikey: YOUR_API_KEY"
```

### Emails

Email messages tied to your contacts and deals.

4 endpoints

GET`/api/emails`List Emails

```
curl "https://your-subdomain.flexie.io/api/emails?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/emails`List Emails Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/emails" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/emails/{id}`Get Email

```
curl "https://your-subdomain.flexie.io/api/emails/42" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/emails/{id}/send`Send Email

```
curl -X POST "https://your-subdomain.flexie.io/api/emails/42/send" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 100
  }'
```

### Custom entities

Your own record types, modeled to fit your business.

16 endpoints

GET`/api/ce/{tableName}`List Custom Entities

```
curl "https://your-subdomain.flexie.io/api/ce/your_table" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/ce/{tableName}`List Custom Entities

```
curl -X POST "https://your-subdomain.flexie.io/api/ce/your_table" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/ce/{tableName}/{id}`Get Custom Entity

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/ce/{tableName}/{id}`Update Custom Entity

```
curl -X PUT "https://your-subdomain.flexie.io/api/ce/your_table/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Renewal 2026 (revised)",
    "status": "won",
    "amount": 5200
  }'
```

DELETE`/api/ce/{tableName}/{id}`Delete Custom Entity

```
curl -X DELETE "https://your-subdomain.flexie.io/api/ce/your_table/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/ce/{tableName}/{id}/lists`Get Custom Entity Lists

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/42/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/ce/{tableName}/{id}/notes`Get Custom Entity Notes

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/42/notes" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/ce/{tableName}/{id}/workflows`Get Custom Entity Workflows

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/42/workflows" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/ce/{tableName}/edit`Update Custom Entity By Unique Field

```
curl -X PUT "https://your-subdomain.flexie.io/api/ce/your_table/edit" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Renewal 2026 (revised)",
    "status": "won",
    "amount": 5200
  }'
```

GET`/api/ce/{tableName}/list/fields`List Custom Entity Fields

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/list/fields" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/ce/{tableName}/list/fields/categories`List Custom Entity Field Categories

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/list/fields/categories" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/ce/{tableName}/list/lists`List Custom Entity Lists

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/list/lists" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/ce/{tableName}/lists`Filter Custom Entity Lists

```
curl "https://your-subdomain.flexie.io/api/ce/your_table/lists" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/ce/{tableName}/lists/{id}/add/{entityId}`Add a record to a list

```
curl -X POST "https://your-subdomain.flexie.io/api/ce/your_table/lists/42/add/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/ce/{tableName}/lists/{id}/remove/{entityId}`Remove a record from a list

```
curl -X POST "https://your-subdomain.flexie.io/api/ce/your_table/lists/42/remove/17" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/ce/{tableName}/new`Create Custom Entity

```
curl -X POST "https://your-subdomain.flexie.io/api/ce/your_table/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Renewal 2026",
    "status": "open",
    "amount": 4500
  }'
```

### Workflows

Trigger and manage automation from the outside.

6 endpoints

GET`/api/workflows`List Workflows

```
curl "https://your-subdomain.flexie.io/api/workflows?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/workflows`List Workflows Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/workflows" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/workflows/{id}`Get Workflow

```
curl "https://your-subdomain.flexie.io/api/workflows/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/workflows/{id}`Update Workflow

```
curl -X PUT "https://your-subdomain.flexie.io/api/workflows/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "VIP lead onboarding",
    "description": "Send a welcome sequence to new VIP leads",
    "category": 12,
    "isPublished": true,
    "runtime": "async"
  }'
```

DELETE`/api/workflows/{id}`Delete Workflow

```
curl -X DELETE "https://your-subdomain.flexie.io/api/workflows/42" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/workflows/list/categories`List Workflow Categories

```
curl "https://your-subdomain.flexie.io/api/workflows/list/categories" \
  -H "apikey: YOUR_API_KEY"
```

### Forms

The forms that capture data into Flexie.

2 endpoints

GET`/api/forms`List Forms

```
curl "https://your-subdomain.flexie.io/api/forms?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

GET`/api/forms/{id}`Get Form

```
curl "https://your-subdomain.flexie.io/api/forms/42" \
  -H "apikey: YOUR_API_KEY"
```

### Pages

Landing pages served by Flexie.

3 endpoints

GET`/api/pages`List Pages

```
curl "https://your-subdomain.flexie.io/api/pages?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/pages`List Pages Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/pages" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/pages/{id}`Get Page

```
curl "https://your-subdomain.flexie.io/api/pages/42" \
  -H "apikey: YOUR_API_KEY"
```

### Reports

Saved reports and the data behind them.

3 endpoints

GET`/api/reports`List Reports

```
curl "https://your-subdomain.flexie.io/api/reports?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/reports`List Reports Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/reports" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/reports/{id}`Get Report

```
curl "https://your-subdomain.flexie.io/api/reports/42" \
  -H "apikey: YOUR_API_KEY"
```

### Users

The people in your Flexie workspace.

8 endpoints

GET`/api/users`List Users

```
curl "https://your-subdomain.flexie.io/api/users?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/users`List Users Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/users" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/users/{id}`Get User

```
curl "https://your-subdomain.flexie.io/api/users/42" \
  -H "apikey: YOUR_API_KEY"
```

PUT`/api/users/{id}`Update User

```
curl -X PUT "https://your-subdomain.flexie.io/api/users/42" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "John",
    "lastName": "Doe",
    "position": "Senior Sales Manager",
    "role": 3,
    "isPublished": true
  }'
```

DELETE`/api/users/{id}`Delete User

```
curl -X DELETE "https://your-subdomain.flexie.io/api/users/42" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/users/{id}/permission`Check Permission

```
curl -X POST "https://your-subdomain.flexie.io/api/users/42/permission" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "permissions": [
      "lead:leads:viewown",
      "lead:leads:editown"
    ]
  }'
```

POST`/api/users/new`Create User

```
curl -X POST "https://your-subdomain.flexie.io/api/users/new" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "jdoe",
    "firstName": "John",
    "lastName": "Doe",
    "email": "jdoe@example.com",
    "password": "S3cretPass!",
    "position": "Sales Manager",
    "timezone": "America/New_York",
    "locale": "en_US",
    "role": 3,
    "isPublished": true
  }'
```

GET`/api/users/self`Get Self

```
curl "https://your-subdomain.flexie.io/api/users/self" \
  -H "apikey: YOUR_API_KEY"
```

### Roles

Permission roles that govern who can do what.

3 endpoints

GET`/api/roles`List Roles

```
curl "https://your-subdomain.flexie.io/api/roles?limit=30&search=acme" \
  -H "apikey: YOUR_API_KEY"
```

POST`/api/roles`List Roles Filtered

```
curl -X POST "https://your-subdomain.flexie.io/api/roles" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "type": "text",
        "alias": "email",
        "value": {
          "operator": "like",
          "input": "acme.com"
        },
        "strict": false,
        "starts": false,
        "ends": false
      }
    ],
    "start": 0,
    "limit": 30,
    "orderBy": "date_modified",
    "orderByDir": "DESC"
  }'
```

GET`/api/roles/{id}`Get Role

```
curl "https://your-subdomain.flexie.io/api/roles/42" \
  -H "apikey: YOUR_API_KEY"
```

[OpenAPI specDownload flexie-api.json and import it into Postman, Insomnia, or generate a client.Download the spec →](https://flexie.io/flexie-api.json)[Integrations & MCPWebhooks, native integrations, and an MCP server so AI tools can read and write your data directly.See integrations →](https://flexie.io/integrations)[Talk to usBuilding something on the API and want a hand? Tell us what you're wiring up and we'll help.Get in touch →](https://flexie.io/contact)
