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 170 endpoints across 12 resource groups.

Read the quickstartDownload the OpenAPI spec

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

170 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.

Contact22Lead23Accounts22Deals31Cases26Tasks10Notes6Emails2Custom entities22Reports4Users1Dynamic endpoints1

Contact

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

22 endpoints

GET/api/contact/listsFilter 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/contactsList Contacts

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

POST/api/contactsList 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"

PATCH/api/contacts/{id}Update Contact

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

GET/api/contacts/{id}/listsGet Contact Lists

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

GET/api/contacts/{id}/notesGet Contact Notes

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

GET/api/contacts/{id}/workflowsGet Contact Workflows

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

POST/api/contacts/editUpdate Contact By Unique Field

curl -X POST "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"
  }'

PUT/api/contacts/editUpdate 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"
  }'

PATCH/api/contacts/editUpdate Contact By Unique Field

curl -X PATCH "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"
  }'

POST/api/contacts/identifyFind one record by a unique field

curl -X POST "https://your-subdomain.flexie.io/api/contacts/identify" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "unique_field": "email",
    "unique_field_value": "david.okafor@example.com"
  }'

GET/api/contacts/list/fieldsThe fields configured on this entity

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

GET/api/contacts/list/fields/categoriesList Contact Field Categories

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

GET/api/contacts/list/filtersWhat this entity can be filtered by

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

GET/api/contacts/list/listsList Contact Lists

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

POST/api/contacts/newCreate 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"
  }'

POST/api/contacts/searchFilter Contacts with a rule set

curl -X POST "https://your-subdomain.flexie.io/api/contacts/search" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "condition": "AND",
      "rules": [
        {
          "field": "email",
          "operator": "contains",
          "value": "acme.com"
        },
        {
          "condition": "OR",
          "rules": [
            {
              "field": "date_added",
              "operator": "is",
              "value": "this_month"
            },
            {
              "field": "owner_id",
              "operator": "is_empty"
            }
          ]
        }
      ]
    },
    "orderBy": "date_modified",
    "orderByDir": "DESC",
    "page": 1,
    "limit": 50
  }'

Lead

Inbound and outbound leads, from capture through qualification.

23 endpoints

GET/api/lead/listsFilter 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/leadsList Leads

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

POST/api/leadsList 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"

PATCH/api/leads/{id}Update Lead

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

GET/api/leads/{id}/listsGet Lead Lists

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

GET/api/leads/{id}/notesGet Lead Notes

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

GET/api/leads/{id}/workflowsGet Lead Workflows

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

POST/api/leads/editUpdate Lead By Unique FIeld

curl -X POST "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"
  }'

PUT/api/leads/editUpdate 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"
  }'

PATCH/api/leads/editUpdate Lead By Unique FIeld

curl -X PATCH "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"
  }'

POST/api/leads/identifyFind one record by a unique field

curl -X POST "https://your-subdomain.flexie.io/api/leads/identify" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "unique_field": "email",
    "unique_field_value": "david.okafor@example.com"
  }'

GET/api/leads/list/fieldsThe fields configured on this entity

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

GET/api/leads/list/fields/categoriesList Lead Field Categories

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

GET/api/leads/list/filtersWhat this entity can be filtered by

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

GET/api/leads/list/listsList Lead Lists

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

GET/api/leads/list/ownersThe users leads can be owned by

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

POST/api/leads/newCreate 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"
  }'

POST/api/leads/searchFilter Leads with a rule set

curl -X POST "https://your-subdomain.flexie.io/api/leads/search" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "condition": "AND",
      "rules": [
        {
          "field": "email",
          "operator": "contains",
          "value": "acme.com"
        },
        {
          "condition": "OR",
          "rules": [
            {
              "field": "date_added",
              "operator": "is",
              "value": "this_month"
            },
            {
              "field": "owner_id",
              "operator": "is_empty"
            }
          ]
        }
      ]
    },
    "orderBy": "date_modified",
    "orderByDir": "DESC",
    "page": 1,
    "limit": 50
  }'

Accounts

Companies and organizations, with their related records.

22 endpoints

GET/api/account/listsFilter 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/accountsList Accounts

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

POST/api/accountsList 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"

PATCH/api/accounts/{id}Update Account

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

GET/api/accounts/{id}/listsGet Account Lists

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

GET/api/accounts/{id}/notesGet Account Notes

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

GET/api/accounts/{id}/workflowsGet Account Workflows

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

POST/api/accounts/editUpdate Account By Unique FIeld

curl -X POST "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
  }'

PUT/api/accounts/editUpdate 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
  }'

PATCH/api/accounts/editUpdate Account By Unique FIeld

curl -X PATCH "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
  }'

POST/api/accounts/identifyFind one record by a unique field

curl -X POST "https://your-subdomain.flexie.io/api/accounts/identify" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "unique_field": "email",
    "unique_field_value": "david.okafor@example.com"
  }'

GET/api/accounts/list/fieldsThe fields configured on this entity

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

GET/api/accounts/list/fields/categoriesList Account Field Categories

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

GET/api/accounts/list/filtersWhat this entity can be filtered by

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

GET/api/accounts/list/listsList Account Lists

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

POST/api/accounts/newCreate 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"
  }'

POST/api/accounts/searchFilter Accounts with a rule set

curl -X POST "https://your-subdomain.flexie.io/api/accounts/search" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "condition": "AND",
      "rules": [
        {
          "field": "email",
          "operator": "contains",
          "value": "acme.com"
        },
        {
          "condition": "OR",
          "rules": [
            {
              "field": "date_added",
              "operator": "is",
              "value": "this_month"
            },
            {
              "field": "owner_id",
              "operator": "is_empty"
            }
          ]
        }
      ]
    },
    "orderBy": "date_modified",
    "orderByDir": "DESC",
    "page": 1,
    "limit": 50
  }'

Deals

Opportunities moving through your sales pipelines.

31 endpoints

GET/api/deal/listsFilter 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/dealsList Deals

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

POST/api/dealsList 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"

PATCH/api/deals/{id}Update Deal

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

POST/api/deals/{id}/associationsAttach records to a deal

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

DELETE/api/deals/{id}/associationsDetach records from a deal

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

GET/api/deals/{id}/listsGet Deal Lists

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

GET/api/deals/{id}/notesGet Deal Notes

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

GET/api/deals/{id}/workflowsGet Deal Workflows

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

POST/api/deals/editUpdate Deal By Unique FIeld

curl -X POST "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
  }'

PUT/api/deals/editUpdate 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
  }'

PATCH/api/deals/editUpdate Deal By Unique FIeld

curl -X PATCH "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
  }'

POST/api/deals/identifyFind one record by a unique field

curl -X POST "https://your-subdomain.flexie.io/api/deals/identify" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "unique_field": "email",
    "unique_field_value": "david.okafor@example.com"
  }'

GET/api/deals/list/fieldsThe fields configured on this entity

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

GET/api/deals/list/fields/categoriesList Deal Field Categories

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

GET/api/deals/list/filtersWhat this entity can be filtered by

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

GET/api/deals/list/listsList Deal Lists

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

POST/api/deals/newCreate 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
  }'

POST/api/deals/searchFilter Deals with a rule set

curl -X POST "https://your-subdomain.flexie.io/api/deals/search" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "condition": "AND",
      "rules": [
        {
          "field": "email",
          "operator": "contains",
          "value": "acme.com"
        },
        {
          "condition": "OR",
          "rules": [
            {
              "field": "date_added",
              "operator": "is",
              "value": "this_month"
            },
            {
              "field": "owner_id",
              "operator": "is_empty"
            }
          ]
        }
      ]
    },
    "orderBy": "date_modified",
    "orderByDir": "DESC",
    "page": 1,
    "limit": 50
  }'

GET/api/pipelinesList pipelines

curl "https://your-subdomain.flexie.io/api/pipelines?limit=30" \
  -H "apikey: YOUR_API_KEY"

POST/api/pipelinesCreate a pipeline

curl -X POST "https://your-subdomain.flexie.io/api/pipelines" \
  -H "apikey: YOUR_API_KEY"

GET/api/pipelines/{id}Get one pipeline

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

PUT/api/pipelines/{id}Update a pipeline

curl -X PUT "https://your-subdomain.flexie.io/api/pipelines/42" \
  -H "apikey: YOUR_API_KEY"

DELETE/api/pipelines/{id}Delete a pipeline

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

PATCH/api/pipelines/{id}Update a pipeline

curl -X PATCH "https://your-subdomain.flexie.io/api/pipelines/42" \
  -H "apikey: YOUR_API_KEY"

GET/api/stagesList pipeline stages

curl "https://your-subdomain.flexie.io/api/stages?limit=30" \
  -H "apikey: YOUR_API_KEY"

Cases

Support tickets and service requests, end to end.

26 endpoints

GET/api/case/listsFilter 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/casesList Cases

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

POST/api/casesList 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"

PATCH/api/cases/{id}Update Case

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

GET/api/cases/{id}/listsGet Case Lists

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

GET/api/cases/{id}/notesGet Case Notes

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

GET/api/cases/{id}/repliesGet Case Replies

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

POST/api/cases/{id}/repliesAdd 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}/workflowsGet Case Workflows

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

POST/api/cases/editUpdate Case By Unique Field

curl -X POST "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"
  }'

PUT/api/cases/editUpdate 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"
  }'

PATCH/api/cases/editUpdate Case By Unique Field

curl -X PATCH "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"
  }'

POST/api/cases/identifyFind one record by a unique field

curl -X POST "https://your-subdomain.flexie.io/api/cases/identify" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "unique_field": "email",
    "unique_field_value": "david.okafor@example.com"
  }'

GET/api/cases/list/fieldsThe fields configured on this entity

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

GET/api/cases/list/fields/categoriesList Case Field Categories

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

GET/api/cases/list/filtersWhat this entity can be filtered by

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

GET/api/cases/list/listsList Case Lists

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

POST/api/cases/newCreate 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
  }'

POST/api/cases/searchFilter Cases with a rule set

curl -X POST "https://your-subdomain.flexie.io/api/cases/search" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "condition": "AND",
      "rules": [
        {
          "field": "email",
          "operator": "contains",
          "value": "acme.com"
        },
        {
          "condition": "OR",
          "rules": [
            {
              "field": "date_added",
              "operator": "is",
              "value": "this_month"
            },
            {
              "field": "owner_id",
              "operator": "is_empty"
            }
          ]
        }
      ]
    },
    "orderBy": "date_modified",
    "orderByDir": "DESC",
    "page": 1,
    "limit": 50
  }'

Tasks

To-dos and activities assigned across your team.

10 endpoints

GET/api/tasksList Tasks

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

POST/api/tasksList Tasks

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

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"

PATCH/api/tasks/{id}Update Task

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

POST/api/tasks/{id}/completeComplete Task

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

POST/api/tasks/{id}/incompleteIncomplete Task

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

GET/api/tasks/list/categoriesList Task Categories

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

POST/api/tasks/newCreate 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.

6 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"
  }'

DELETE/api/notes/{entityType}/{entityId}Delete a record's notes

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

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"

PATCH/api/notes/{id}Update Note

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

Emails

Email messages tied to your contacts and deals.

2 endpoints

GET/api/emailsList Emails

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

GET/api/emails/{id}Get Email

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

Custom entities

Your own record types, modeled to fit your business.

22 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"

PATCH/api/ce/{tableName}/{id}Update Custom Entity

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

GET/api/ce/{tableName}/{id}/listsGet 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}/notesGet 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}/workflowsGet Custom Entity Workflows

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

POST/api/ce/{tableName}/editUpdate Custom Entity By Unique Field

curl -X POST "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
  }'

PUT/api/ce/{tableName}/editUpdate 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
  }'

PATCH/api/ce/{tableName}/editUpdate Custom Entity By Unique Field

curl -X PATCH "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
  }'

POST/api/ce/{tableName}/identifyFind one record by a unique field

curl -X POST "https://your-subdomain.flexie.io/api/ce/your_table/identify" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "unique_field": "email",
    "unique_field_value": "david.okafor@example.com"
  }'

GET/api/ce/{tableName}/list/fieldsThe fields configured on this entity

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

GET/api/ce/{tableName}/list/fields/categoriesList 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/filtersWhat this entity can be filtered by

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

GET/api/ce/{tableName}/list/listsList Custom Entity Lists

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

GET/api/ce/{tableName}/listsFilter 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}/newCreate 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
  }'

POST/api/ce/{tableName}/searchFilter Custom Entitys with a rule set

curl -X POST "https://your-subdomain.flexie.io/api/ce/your_table/search" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "condition": "AND",
      "rules": [
        {
          "field": "email",
          "operator": "contains",
          "value": "acme.com"
        },
        {
          "condition": "OR",
          "rules": [
            {
              "field": "date_added",
              "operator": "is",
              "value": "this_month"
            },
            {
              "field": "owner_id",
              "operator": "is_empty"
            }
          ]
        }
      ]
    },
    "orderBy": "date_modified",
    "orderByDir": "DESC",
    "page": 1,
    "limit": 50
  }'

Reports

Saved reports and the data behind them.

4 endpoints

GET/api/reportsList Reports

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

GET/api/reports/{id}Get Report

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

GET/api/reports/{id}/dataGet a report's data

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

POST/api/reports/{id}/dataGet a report's data

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

Users

The people in your Flexie workspace.

1 endpoint

GET/api/usersList Users

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

Dynamic endpoints

The URLs that start a workflow, and everything you need to call one.

1 endpoint

GET/api/dynamic_endpointsList dynamic endpoints

curl "https://your-subdomain.flexie.io/api/dynamic_endpoints?limit=30" \
  -H "apikey: YOUR_API_KEY"

OpenAPI specDownload flexie-api.json and import it into Postman, Insomnia, or generate a client.Download the spec →Integrations & MCPWebhooks, native integrations, and an MCP server so AI tools can read and write your data directly.See 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 →