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

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.

Contact16Lead16Accounts16Deals16Cases20Tasks9Notes4Emails4Custom entities16Workflows6Forms2Pages3Reports3Users8Roles3

Contact

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

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

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"

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

GET/api/contacts/list/fieldsList Contact Fields

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

Lead

Inbound and outbound leads, from capture through qualification.

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

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"

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

GET/api/leads/list/fieldsList Lead Fields

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/listsList Lead Lists

curl "https://your-subdomain.flexie.io/api/leads/list/lists" \
  -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"
  }'

Accounts

Companies and organizations, with their related records.

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

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"

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

GET/api/accounts/list/fieldsList Account Fields

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

Deals

Opportunities moving through your sales pipelines.

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

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"

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

GET/api/deals/list/fieldsList Deal Fields

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/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
  }'

Cases

Support tickets and service requests, end to end.

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

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"

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

GET/api/cases/list/fieldsList Case Fields

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/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
  }'

Tasks

To-dos and activities assigned across your team.

9 endpoints

GET/api/tasksList Tasks

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

POST/api/tasksList 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}/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.

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/emailsList Emails

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

POST/api/emailsList 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}/sendSend 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}/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"

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

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

Workflows

Trigger and manage automation from the outside.

6 endpoints

GET/api/workflowsList Workflows

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

POST/api/workflowsList 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/categoriesList 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/formsList 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/pagesList Pages

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

POST/api/pagesList 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/reportsList Reports

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

POST/api/reportsList 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/usersList Users

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

POST/api/usersList 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}/permissionCheck 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/newCreate 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/selfGet 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/rolesList Roles

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

POST/api/rolesList 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 →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 →