MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {BEARER_TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by using the api/login endpoint.

Autoresponder Endpoint(s)

APIs to manage Autoresponder.

GET User App Email Service List'

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-app-user-email-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-app-user-email-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-app-user-email-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

GET User App Other Service

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-app-user-other-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1,
    \"other_service_name\": \"chatgpt\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-app-user-other-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1,
    "other_service_name": "chatgpt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-app-user-other-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

other_service_name   string     

The name of the service name. Example: chatgpt

SAVE/UPDATE App User Other Services

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-app_user_other_service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1,
    \"app_user_other_service_id\": 1,
    \"other_service_name\": \"Chatgpt\",
    \"key1\": \"apikey123\",
    \"key2\": \"apikeyversion\",
    \"status\": 0
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-app_user_other_service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1,
    "app_user_other_service_id": 1,
    "other_service_name": "Chatgpt",
    "key1": "apikey123",
    "key2": "apikeyversion",
    "status": 0
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-app_user_other_service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The ID of the user. Example: 2

app_id   integer     

The ID of the app. Example: 1

app_user_other_service_id   integer  optional    

The ID of the app user’s other service. Example: 1

other_service_name   string     

The name of the other service. Example: Chatgpt

key1   string  optional    

The key1 value for the service. Example: apikey123

key2   string  optional    

The key2 value for the service. Example: apikeyversion

status   integer  optional    

The status of the service. Example: 0

Delete AppUserOtherService

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-app-user-other-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_user_other_service_id\": 1,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-app-user-other-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_user_other_service_id": 1,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-app-user-other-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_user_other_service_id   integer     

The id of the app user email service. Example: 1

app_id   integer     

The id of the APP. Example: 1

GET Autoresponder Name List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-autoresponder-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-autoresponder-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-autoresponder-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

SAVE AppEmailService

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/set-app-email-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1,
    \"app_email_service_id\": 1,
    \"app_email_service_name\": 1,
    \"status\": 0
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/set-app-email-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1,
    "app_email_service_id": 1,
    "app_email_service_name": 1,
    "status": 0
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/set-app-email-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

app_email_service_id   integer     

The id of the app email service. Example: 1

app_email_service_name   integer     

The id of the app email service name. Example: 1

status   integer     

The status of the app email service. Example: 0

UPDATE AppEmailService Settings

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-app-email-res" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1,
    \"app_user_email_service_id\": 1,
    \"data\": \"[\\\"key1\\\" => \\\"qwwe\\\", \\\"key2\\\" => \\\"\\\", \\\"key3\\\" => \\\"\\\", \\\"account_id\\\" => \\\"\\\", \\\"name\\\" => \\\"\\\", \\\"status\\\" => 0]\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-app-email-res"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1,
    "app_user_email_service_id": 1,
    "data": "[\"key1\" => \"qwwe\", \"key2\" => \"\", \"key3\" => \"\", \"account_id\" => \"\", \"name\" => \"\", \"status\" => 0]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-app-email-res

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

app_user_email_service_id   integer     

The id of the app user email service. Example: 1

data   string      "qwwe", "key2" => "", "key3" => "", "account_id" => "", "name" => "", "status" => 0]" data-component="body">

The data json of the Settings. Example: ["key1" => "qwwe", "key2" => "", "key3" => "", "account_id" => "", "name" => "", "status" => 0]

UPDATE Status AppUserEmailService

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/app/status/autoresponderlist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"status\": 1,
    \"app_user_email_service_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/app/status/autoresponderlist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "status": 1,
    "app_user_email_service_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/app/status/autoresponderlist

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

status   integer     

The status of the app user email service . Example: 1

app_user_email_service_id   integer     

The id of the app user email service. Example: 1

Delete AppUserEmailService

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-app-user-email-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_user_email_service_id\": 1,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-app-user-email-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_user_email_service_id": 1,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-app-user-email-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_user_email_service_id   integer     

The id of the app user email service. Example: 1

app_id   integer     

The id of the APP. Example: 1

GET Autoresponder List ID

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/autoresponderlistproduct" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_user_email_service_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/autoresponderlistproduct"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_user_email_service_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/autoresponderlistproduct

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_user_email_service_id   integer     

The id of the app email service. Example: 1

Connect Getresponse

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/connectGetresponse?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/connectGetresponse"
);

const params = {
    "name": "Test",
    "arId": "1",
    "user_id": "2",
    "app_id": "1",
    "base_url": "https://example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6IitMS3ZTeUZDL2d2ZVRWcFQ3dnVYV3c9PSIsInZhbHVlIjoiOHB6OVRtSC8yTlZ6ZHllempnVW8zeXdoRFI1bitFeGZmVkt5MFc0cGV4bDh0TlQ1TmVKbG80U1VWRGVUbFhuOHhsZkxVZGJ0cGMrcnE5ZElnVDFYT1RsRTZ1Vld2NFdrNDFVZjlWV3B2RlRPTmFLNDBMVFZtRmRmeFVUMmIxMFEiLCJtYWMiOiIxZmI4Y2Q1MTc4ODE1OTE2YmI1Y2Q5MGIzNTM2Y2IxNzdlYjk4ODNhMTU1OGM4ZjE1NzA4NTEzODEwMmRjNmJhIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6ImRpZ0dZTDU0a3Y5dDJ0Q1cxZ2t4V1E9PSIsInZhbHVlIjoiMzBScXE4d0l2alhPWWNvZHFxbVl0UEY3SU1KQzFaN3N6amkvSG9WZGJJMlErOWNjS2w0N1ZObVRnMmNaaVE1RVBEaEpuMGR0MytvZ1UyUXBMNjVoYUlHUm01R29HQlhuQi9SalFRT2ZJNEY3TDBaZVFiMlhZdVZ6NXRnQ3pRSVciLCJtYWMiOiI2ZjhhOWYxZDMwYWMyMDBmNWEzMTI4Mzg2ZDc2N2RkM2JjMDI2N2IwZWZlNWRiYzljMWQ2MWZmMzM4YjIyZTEyIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "success": true,
    "url": "https://api-v2.flexifunnels.com/api/setCookieUpdate?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com&url=https%3A%2F%2Fapp.getresponse.com%2Foauth2_authorize.html%3Fresponse_type%3Dcode%26client_id%3D%26state%3Dxyz"
}
 

Request      

GET api/connectGetresponse

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

name   string     

The name of the Account name. Example: Test

arId   integer     

The id of the app user email service. Example: 1

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

base_url   string     

The base_url of current domain. Example: https://example.com

Connect Mailchimp

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/connectMailchimp?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/connectMailchimp"
);

const params = {
    "name": "Test",
    "arId": "1",
    "user_id": "2",
    "app_id": "1",
    "base_url": "https://example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6Im83SFR0aHdWRDAwVmRSQXdNQW5vZWc9PSIsInZhbHVlIjoiNjhJeHFhY29DOTdvOCtkTXBmSDBqWFQvQWlOZHdwaERFSnJsR0pPK0lDYzAzZlc5VHcxRFF2VGwvbjhoNW1kZ2FlWmtFRVR5WmVFOVNBTHVsWjFobklOeDB1aUh4U1NYeG9sRTljaUVYOXRxYnJ3N2hnYUVTNSt6SjlhMUNOaXQiLCJtYWMiOiI0OTZlYmYyOGJiZGY4YjlmMWIwYmQ2ZWY3N2IwMzU0NWFmNWFkOTFiYzU3ZmNiYTk4ZDVmYzVmODczNDE0MWMzIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6InZMeGJCNTNiWGpzSnl5bW5Pa0FkcVE9PSIsInZhbHVlIjoiYSt0VUVHU1l4Qjc1bVh1dEZNUjIyQzJ1QUZ0azB1ckJtbjhxYUFFc3Nxcmo5MzI5b3ZUeHYzY1YrVjBKODQ4WlB1VW9Ia1F3ek1TSGM2dytNSHN4cjNEVXc2VjFNUEhzcTdzQm4xaEI4Q3IvaUZ5K3IxRmpFNW5jaHdOVmtTS1MiLCJtYWMiOiIyMmY0NmY1ODgxNzY5ZTViYzMxYmUwZGQwOTAwYjViOTI3MDkyYTU5MTU1MmQ4YTBmYmM1ZjUzMzMxMGJjNmM2IiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "success": true,
    "url": "https://api-v2.flexifunnels.com/api/setCookieUpdate?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com&url=https%3A%2F%2Flogin.mailchimp.com%2Foauth2%2Fauthorize%3Fresponse_type%3Dcode"
}
 

Request      

GET api/connectMailchimp

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

name   string     

The name of the Account name. Example: Test

arId   integer     

The id of the app user email service. Example: 1

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

base_url   string     

The base_url of current domain. Example: https://example.com

Connect Constantcontact

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/constantcontact?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/constantcontact"
);

const params = {
    "name": "Test",
    "arId": "1",
    "user_id": "2",
    "app_id": "1",
    "base_url": "https://example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6InpkeFZ1OVNOb0t3Q3ZaaTdmQU56ZFE9PSIsInZhbHVlIjoicFVxTTlMbTJoRXpUTHEzOEdUNDEyVnMwbVJHN2IwbHh0ZnR2aStRQlpZRGs1UXp6SVdwVEJnVmozTlg0c0VWMWpzRWQvSWw1YkZESVFaMGtPbnVEU0lFQ0M4QVMxK3k1Z3I2WXQvc0NjZXBTVGVJbTk5ZStMUTBqRWp5b1BndVUiLCJtYWMiOiI0MDQ4NWNmNjg0YWUzZTUzMWI1YTMzZDRmN2NlZGE4ODdkMzg3MGM1ZWFiMjYxZGQ1NjEzMzc2OGZmYjlmYjdlIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6IkFHYUkxV2d0NTZXdytzeEZ1M2ZiekE9PSIsInZhbHVlIjoicWxXeW9NU05scXVKRHVwZ0FnbXdjcUUyRmFhM08yanNIaFp0a205cHpMN1RhajlzSGc5MjJMV1Rpb0pGRDYwc3dkSEN4YW1mbHI3V3B0TGc2c1JyNUwvWHp1aEo4OG9XRzEzNWhNNVdnR1BrYXorSVB5eEFtNGpNWG16bSthVVgiLCJtYWMiOiJmYmIyN2Q0NzU3MGZhNTBkY2ZmYmExZWRlMDU3NzNjMzkyYzEzNGZkNGM3MTBlZTE3MDc3NWFhZTdhMzM3OGFkIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "success": true,
    "url": "https://api-v2.flexifunnels.com/api/setCookieUpdate?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com&url=https%3A%2F%2Fauthz.constantcontact.com%2Foauth2%2Fdefault%2Fv1%2Fauthorize%3Fclient_id%3D%26scope%3Daccount_read%2Baccount_update%2Bcontact_data%2Boffline_access%2Bcampaign_data%2Boffline_access%26response_type%3Dcode%26state%3Dflexifunnels_ar%26redirect_uri%3D"
}
 

Request      

GET api/constantcontact

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

name   string     

The name of the Account name. Example: Test

arId   integer     

The id of the app user email service. Example: 1

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

base_url   string     

The base_url of current domain. Example: https://example.com

Connect Aweber

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/connectAweber?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/connectAweber"
);

const params = {
    "name": "Test",
    "arId": "1",
    "user_id": "2",
    "app_id": "1",
    "base_url": "https://example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6Ill1Yld6Z1ZyVitxcFllNE4zbkVKM2c9PSIsInZhbHVlIjoiUFM4SVI1elI3WlBPSk5iM0N2L0JOQ2xBc0pJTFd1TTNzcmxCMEZtczJIR05ibTZyRTVISXFaYnNqRU90OFZCa2hjRUVxNFBZb01rQTdUNm41YnZaZ0NROURoanJxUjVYTzZlVTJ0b0ZzSjRvR3RmdWhZMmhmNGFEOFRGelp1MUYiLCJtYWMiOiJhNGZhZDIwMjlkN2E0ZTY0ZGM5ZmU3ODc2YTFiODUzZWFmMWFjMTdiMTllYmYzYjQ3ZWI3NjBkMTg0YjRlZGE2IiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6InAxd0JuZGlDQVBRZ2dlN2R5ZmpaQnc9PSIsInZhbHVlIjoiZ1lHTkVyODFLZ1lkOWpLVFhBeTVCNlBjYTBIWEFnb1FwSTdVbm9JTWMzVkU5S2s1SE40bUF2b1IyRURaeGhGc3N2TjlFZ3NyYlV1VGZlQkhpQi9FajV6UE1WUVhpWE5XWS9YOVdVV3NvdUVIUWNyWjRhSlQvSXkwQ0dsYWtHT3IiLCJtYWMiOiJiMjU1OTIwNWE1Zjk3OTQzMzg4YWIxOTQ4ZmFkY2E4N2IwNzhlYTE3MGJjMTA4MGRhN2MwNjkwZWMzYTUzMzM4IiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "success": true,
    "url": "https://api-v2.flexifunnels.com/api/setCookieUpdate?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com&url=https%3A%2F%2Fauth.aweber.com%2Foauth2%2Fauthorize%3Fstate%3Dcddfb8e8b7b596328d1c3ea30a554e63%26scope%3Daccount.read%2520list.read%2520list.write%2520subscriber.read%2520subscriber.write%2520email.read%2520email.write%2520subscriber.read-extended%2520landing-page.read%26response_type%3Dcode%26approval_prompt%3Dauto"
}
 

Request      

GET api/connectAweber

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

name   string     

The name of the Account name. Example: Test

arId   integer     

The id of the app user email service. Example: 1

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

base_url   string     

The base_url of current domain. Example: https://example.com

GET GetResponse RefreshToken

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/refresh-get-response" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"refresh\": 12345,
    \"app_user_email_service_id\": 1,
    \"account_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/refresh-get-response"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "refresh": 12345,
    "app_user_email_service_id": 1,
    "account_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/refresh-get-response

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

refresh   integer     

The id of the user. Example: 12345

app_user_email_service_id   integer     

The id of the app user email service. Example: 1

account_id   integer     

The id of the account_id. Example: 1

GET Aweber RefreshToken

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/refresh-awber" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"refresh\": 12345,
    \"app_user_email_service_id\": 1,
    \"account_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/refresh-awber"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "refresh": 12345,
    "app_user_email_service_id": 1,
    "account_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/refresh-awber

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

refresh   integer     

The id of the user. Example: 12345

app_user_email_service_id   integer     

The id of the app user email service. Example: 1

account_id   integer     

The id of the account_id. Example: 1

Set Cookie

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/setCookieUpdate?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/setCookieUpdate"
);

const params = {
    "name": "Test",
    "arId": "1",
    "user_id": "2",
    "app_id": "1",
    "base_url": "https://example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (302):

Show headers
cache-control: no-cache, private
location: https://api-v2.flexifunnels.com
content-type: text/html; charset=utf-8
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6InVOT1JhVGRWL0daOFNJckhScVFtTlE9PSIsInZhbHVlIjoienJvZ1dIa05PR0ZnMkhQT3dhQnh4dUpLeGNZemZsYXBXM0pVL0U0NDNMRTBrdWhjemNQM2JzQWM4R1VySS9UQWtLWEEvanc1RXRKNlpvdUlneVlOblhLTmVYYXJ2Q3NqeHZOTjFiRXkySHhkZW12Q3ZsajF3cUdpelZiSUt3QUYiLCJtYWMiOiI1OGU3YTU1NDM4MDAwMTdiNTY1MGY1NjNkNzMxNTk4NzM0YmNiNzE3YmM2YTlkYTc4MTJjODdhODZjZTE4ZTI1IiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:19 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6IlU1aVBhdWVqWE0zTFNkWU1pQ215aVE9PSIsInZhbHVlIjoidE9JVjN4T3Jvb2lLKzlTWGlmZlpMbmR5NHRzaU1oN3Y4dUdOaHJjZXZwRFRlU0VKRlRrcGtwNlhCSFFHS2dFdlV0S3NQMWh1Rk11ellBaEpIQnRPZGpxVERSejhFZnVMMmlTTDlhbEJmYVNBODJaa2ZBK2JCczcxbUxVOXdvWTkiLCJtYWMiOiI1NDI1ZWQ4OWZmNTU5NWEwNDBjMTUyMTNjNTFmNjQzYWU5M2QzNzNmYjk4YThlZjRlOTVhMmZiMjhhNzU0ZmVkIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:19 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="refresh" content="0;url='https://api-v2.flexifunnels.com'" />

        <title>Redirecting to https://api-v2.flexifunnels.com</title>
    </head>
    <body>
        Redirecting to <a href="https://api-v2.flexifunnels.com">https://api-v2.flexifunnels.com</a>.
    </body>
</html>
 

Request      

GET api/setCookieUpdate

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

name   string     

The name of the Account name. Example: Test

arId   integer     

The id of the app user email service. Example: 1

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

base_url   string     

The base_url of current domain. Example: https://example.com

Course Endpoint(s)

APIs to manage course.

GET FunnelAuto URL

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getfunnel-auto-url" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"name\": \"example@test.com\",
    \"email\": \"example@test.com\",
    \"url\": \"https:\\/\\/example.com\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getfunnel-auto-url"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "name": "example@test.com",
    "email": "example@test.com",
    "url": "https:\/\/example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getfunnel-auto-url

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 9

name   string     

The name of the member. Example: example@test.com

email   string     

The email of the member. Example: example@test.com

url   string     

The url nme of the memmbership Example: https://example.com

GET Courses

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/courselist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"member_id\": 786,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/courselist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "member_id": 786,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/courselist

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 9

member_id   integer     

The id of the funnel. Example: 786

token   string     

The login accesstoken. Example: xyz

SEARCH Courses

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/searchcourselist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"member_id\": 786,
    \"search_name\": \"xyz\",
    \"search_type\": \"course\",
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/searchcourselist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "member_id": 786,
    "search_name": "xyz",
    "search_type": "course",
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/searchcourselist

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 9

member_id   integer     

The id of the funnel. Example: 786

search_name   string     

The search name of the course Example: xyz

search_type   string  optional    

optional The search type (course,lesson) of the course or lesson Example: course

token   string     

The login accesstoken. Example: xyz

Endpoints

GET InviteCode

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getinvitecode" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getinvitecode"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getinvitecode

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

GET InviteLogin

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getinvitelogin" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"invite_code\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getinvitelogin"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "invite_code": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getinvitelogin

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

invite_code   string     

The invite_code of the funnel. Example: xyz

POST api/getfunnel

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getfunnel" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getfunnel"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/getfunnel

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET Membership

Resolves /membership/{membership_code}/{path} to a funnel and page in one call. Unlike getFunnel, this takes the membership_code slug straight from the URL -- no hashid, no second round trip to look the ids up.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getmembership" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"membership_code\": \"fgdddkkkk\",
    \"path\": \"dashboard\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getmembership"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "membership_code": "fgdddkkkk",
    "path": "dashboard"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getmembership

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

membership_code   string     

The membership code slug from the URL. Example: fgdddkkkk

path   string  optional    

optional The page segment from the URL. Falls back to the login page. Example: dashboard

Login

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"password\": \"|]|{+-\",
    \"funnel_id\": 9,
    \"device_name\": \"Windows NT 10.0; Win64; x64\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "password": "|]|{+-",
    "funnel_id": 9,
    "device_name": "Windows NT 10.0; Win64; x64"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Example: gbailey@example.net

password   string     

Example: |]|{+-

funnel_id   integer     

The id of the funnel. Example: 9

device_name   string     

The string of the login device name. Example: Windows NT 10.0; Win64; x64

Automatic Login

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/autologin" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"xyza\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/autologin"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "xyza"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/autologin

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

The string of the funnel. Example: xyza

POST api/membership-sso-token — mint a single-use sign-in code.

Header: X-Membership-Sso-Secret. Body: { funnel_id, member_id }.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-sso-token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 16,
    \"member_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-sso-token"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 16,
    "member_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/membership-sso-token

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

Example: 16

member_id   integer     

Example: 16

POST api/membership-sso-login — redeem a code for a normal member session.

Body: { code }.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-sso-login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"b\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-sso-login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/membership-sso-login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Must not be greater than 80 characters. Example: b

Get Device Login Data

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-device-login-data" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"devicekey\": \"xyza\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-device-login-data"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "devicekey": "xyza"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-device-login-data

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

devicekey   string     

The string of the funnel ID. Example: xyza

Forgot Password

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/forgot_password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"test@flexifunnels.com\",
    \"funnel_id\": 9,
    \"base_url\": \"test.flexifunnels.com\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/forgot_password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "test@flexifunnels.com",
    "funnel_id": 9,
    "base_url": "test.flexifunnels.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/forgot_password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The email of the member. Example: test@flexifunnels.com

funnel_id   integer     

The id of the funnel. Example: 9

base_url   string     

The url of the funnel. Example: test.flexifunnels.com

POST api/membership-send-otp

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-send-otp" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-send-otp"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-send-otp

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/membership-verify-otp

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-verify-otp" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-verify-otp"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-verify-otp

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/membership-reset-password

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-reset-password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-reset-password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-reset-password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Reset Password

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/reset_password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"architecto\",
    \"password\": \"|]|{+-\",
    \"confirmpassword\": \"architecto\",
    \"funnel_id\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/reset_password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "architecto",
    "password": "|]|{+-",
    "confirmpassword": "architecto",
    "funnel_id": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/reset_password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

The Reset Password Token. Example: architecto

password   string     

The password of the member. Example: |]|{+-

confirmpassword   string     

The confirm password of the member. Example: architecto

funnel_id   string     

The id of the funnel. Example: xyz

GET CustomScript

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/customscript" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/customscript"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/customscript

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 9

Logout

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"qweruery\",
    \"membership_device_id\": 9
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "qweruery",
    "membership_device_id": 9
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/logout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

The Login Accesstoken. Example: qweruery

membership_device_id   integer     

The id of the Membership Device. Example: 9

Flexi Proof Automatic Login

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/flexiproof-autologin" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"xyza\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/flexiproof-autologin"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "xyza"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/flexiproof-autologin

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

The string of the funnel. Example: xyza

POST api/activity-feed

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/activity-feed" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/activity-feed"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/activity-feed

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET Profile

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/profile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/profile

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

The Login Accesstoken. Example: qweruery

UPDATE Profile

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/profileupdate" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"architecto\",
    \"funnel_id\": 9,
    \"member_id\": \"9\",
    \"profile_img\": \"http:\\/\\/example.com\\/img.png\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/profileupdate"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "architecto",
    "funnel_id": 9,
    "member_id": "9",
    "profile_img": "http:\/\/example.com\/img.png",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/profileupdate

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

The name of the member. Example: architecto

funnel_id   integer     

The id of the Funnel. Example: 9

member_id   string     

The member_id of the member. Example: 9

profile_img   string     

The img of the member. Example: http://example.com/img.png

token   string     

The Login Accesstoken. Example: qweruery

UPDATE ChangePassword

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/changepassword" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"currentpassword\": \"architecto\",
    \"newpassword\": \"architecto\",
    \"confirmnewpassword\": \"architecto\",
    \"funnel_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/changepassword"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "currentpassword": "architecto",
    "newpassword": "architecto",
    "confirmnewpassword": "architecto",
    "funnel_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/changepassword

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

currentpassword   string     

The current password of the member. Example: architecto

newpassword   string     

The new password of the member. Example: architecto

confirmnewpassword   string     

The confirm new password of the member. Example: architecto

funnel_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

POST api/get-myplans

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-myplans" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-myplans"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-myplans

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-footer" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-footer"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

POST api/cancel-subscription

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/cancel-subscription" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": \"architecto\",
    \"member_email\": \"zbailey@example.net\",
    \"product_id\": \"architecto\",
    \"subscription_id\": \"architecto\",
    \"reason\": \"n\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/cancel-subscription"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": "architecto",
    "member_email": "zbailey@example.net",
    "product_id": "architecto",
    "subscription_id": "architecto",
    "reason": "n"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/cancel-subscription

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   string     

Example: architecto

member_email   string     

Must be a valid email address. Example: zbailey@example.net

product_id   string     

Example: architecto

subscription_id   string     

Example: architecto

reason   string  optional    

Must not be greater than 500 characters. Example: n

Flexi Proof Logout

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/flexi-proof-logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"qweruery\",
    \"type\": \"9\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/flexi-proof-logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "qweruery",
    "type": "9"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/flexi-proof-logout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

token   string     

The Login Accesstoken. Example: qweruery

type   string     

The type of the FlexiFunnel Product. Example: 9

Approved message templates, already normalised for the caller.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/wati-templates" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/wati-templates"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/wati-templates

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Send one approved template to one number.

Expects: phone, template_name, broadcast_name, params {name: value}

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/wati-send-template" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/wati-send-template"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/wati-send-template

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Real delivery outcome for the most recent message to a number.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/wati-message-status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/wati-message-status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/wati-message-status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/contest-register

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/contest-register" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/contest-register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/contest-register

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Must be a valid email address. Example: gbailey@example.net

POST api/send-register-mail

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/send-register-mail" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/send-register-mail"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/send-register-mail

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/send-global-mail

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/send-global-mail" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/send-global-mail"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/send-global-mail

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/contest-send-otp

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/contest-send-otp" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"contest_id\": \"architecto\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/contest-send-otp"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "contest_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/contest-send-otp

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Must be a valid email address. Example: gbailey@example.net

contest_id   string     

Example: architecto

POST api/contest-verify-otp

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/contest-verify-otp" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"token\": \"architecto\",
    \"otp\": \"architecto\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/contest-verify-otp"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "token": "architecto",
    "otp": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/contest-verify-otp

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Must be a valid email address. Example: gbailey@example.net

token   string     

Example: architecto

otp   string     

Example: architecto

POST api/contest-reset-password

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/contest-reset-password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"gbailey@example.net\",
    \"otp\": \"architecto\",
    \"token\": \"architecto\",
    \"password\": \"]|{+-0pBNvYg\",
    \"contest_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/contest-reset-password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "gbailey@example.net",
    "otp": "architecto",
    "token": "architecto",
    "password": "]|{+-0pBNvYg",
    "contest_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/contest-reset-password

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

Must be a valid email address. Example: gbailey@example.net

otp   string     

Example: architecto

token   string     

Example: architecto

password   string     

Must be at least 6 characters. Example: ]|{+-0pBNvYg

contest_id   integer     

Example: 16

POST api/contest-login

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/contest-login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/contest-login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/contest-login

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/contest-member-update

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/contest-member-update" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"phone\": \"+6\",
    \"password\": \"-0pBNvYgxw\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/contest-member-update"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "phone": "+6",
    "password": "-0pBNvYgxw"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/contest-member-update

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must match the regex /^[A-Za-z\s]+$/. Must not be greater than 255 characters. Example: b

phone   string  optional    

only letters and spaces. Must match the regex /^+?[0-9]{1,14}$/. Example: +6

password   string  optional    

only digits, optional +, max 14 digits. Must be at least 8 characters. Example: -0pBNvYgxw

confirm_password   string  optional    

The value and password must match.

OPTIONS api/membership-{any}

Example request:
curl --request OPTIONS \
    "https://api-v2.flexifunnels.com/api/membership-|{+-0p" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-|{+-0p"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "OPTIONS",
    headers,
}).then(response => response.json());

Request      

OPTIONS api/membership-{any}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

any   string     

Example: |{+-0p

POST /api/membership-details — the membership itself, without its groups.

/membership-groups answers two different questions at once: "what is this membership" (the community object, the theme, the pixels, the member count, and the group this page is scoped to) and "what groups are in it". Only two screens ask the second one — the group list, and the feed's group switcher — but EVERY page paid for it.

Same handler, same response minus groups and total_group. It is not a rename: /membership-groups keeps working exactly as before, because a deployed learner app is still calling it.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/membership-groups

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-groups" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-groups"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-groups

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-my-memberships body: { community_token, member_token | Authorization: Bearer }

All memberships the signed-in learner belongs to, for the header membership switcher. There is no cross-membership pivot: one learner = multiple membership_user rows sharing an email, each bound to a different funnel (membership_mode=1). So we resolve the acting member from the JWT, take their email, and return every active membership that email is a member of. Each membership's display fields come from the same brand/feature settings the community payload uses, so the dropdown matches its branding.

Switching is a plain navigation to the target membership's token; because the JWT is single-funnel, the learner lands on that membership's own stored session (or its login).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-my-memberships" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-my-memberships"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-my-memberships

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-join body: { community_token, name, email, password, phone? }

Registers a new member into membership_members (mirrors contest register: password = bcrypt, depwd = reversible AES for admin display).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-join" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-join"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-join

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-group-join body: { community_token, group_token (or group_id), community_member_id }

Adds a signed-in community member to a group (membership_group_members).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-join" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-join"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-join

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-group-leave body: { community_token, group_token (or group_id), community_member_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-leave" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-leave"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-leave

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-group-landing body: { community_token, group_token (or group_id), community_member_id? }

Public group landing page (marketing): description + media gallery + skills. No membership required (mirrors guruai's landing page preview).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-landing" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-landing"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-landing

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-custom-page — one custom menu's page: its label and the creator's embed code. Members only: it is member-area content, and the member app renders it in a sandboxed iframe.

body: { community_token, member_token (or Bearer), page_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-custom-page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-custom-page"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-custom-page

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-members (admin only) body: { community_token, group_token|group_id } Every member of the group with role + status, so the admin UI can approve pending requests, change roles, or remove members in one round-trip.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-members" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-members"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-members

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-approve (admin only) body: { community_token, group_token|group_id, member_id, action: approve|reject }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-approve" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-approve"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-approve

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-member-role (admin only) body: { community_token, group_token|group_id, member_id, role: 0|1|2 }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-member-role" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-member-role"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-member-role

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-member-remove (admin only) body: { community_token, group_token|group_id, member_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-member-remove" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-member-remove"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-member-remove

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-update (admin only) — A4.

Edit core group fields + settings from the learner app (no admin portal). body: { community_token, group_token|group_id, name?, description?, access_type?, pricing_type?, amt?, trial_duration?, approve_members?, quota_status?, quota_limit? } Only provided keys are changed (partial update). Settings merge into the existing group_settings JSON.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-update" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-update"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-update

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-checkout — B5.

Paid-group join → returns the external checkout URL the FE should redirect to (the bridge has no in-house gateway; FlexiFunnels hosts checkout). The URL is the group's configured checkout_url, else a constructed default carrying group + member context so the gateway can attribute the purchase. body: { community_token, group_token|group_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-checkout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-checkout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-checkout

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-events — upcoming/past events for the community body: { community_token }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-events" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-events"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-events

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

People the acting member can start a chat with, scoped exactly as the Members page scopes its list — by a GROUP they joined or a COURSE they have. Both lists come back on every call (only the scopes the viewer is actually in), and `contacts` is populated only once one is selected.

The scope is a picker, not a permission: opening and sending are membership-wide (see open()), so a contact surfaced through either list can always be messaged — including a pair who share only a course and no group, which chatLevelBlocked() deliberately leaves unblocked.

body: { community_token, member_token, q?, group_token?, course_page_id? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-contacts" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-contacts"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-contacts

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

The acting member's favourite people (for the quick-access strip).

body: { community_token, member_token }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-favorites" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-favorites"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-favorites

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Add or remove a favourite.

body: { community_token, member_token, target_member_token, action? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-favorite" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-favorite"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-favorite

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

The acting member's conversation list, newest activity first.

body: { community_token, member_token }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-conversations" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-conversations"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-conversations

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

body: { community_token, member_token, q }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-search"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Per-side conversation list actions.

body: { community_token, member_token, conversation_id, action: pin|unpin|archive|unarchive|mark-unread|delete }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-conversation-action" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-conversation-action"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-conversation-action

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Find or create a conversation with another member (their url_token).

body: { community_token, member_token, target_member_token }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-open" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-open"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-open

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Messages of a conversation (oldest first). Opening also marks it read.

body: { community_token, member_token, conversation_id, before_id? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-messages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-messages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-messages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Send a message. body: { community_token, member_token, conversation_id, body }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-send" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-send"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-send

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Mark a conversation read for the acting member.

body: { community_token, member_token, conversation_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-read

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Mark the other participant's messages as delivered (the recipient's device received them) without marking them read. Broadcasts a delivered receipt so the sender's ticks turn double-grey.

body: { community_token, member_token, conversation_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-delivered" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-delivered"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-delivered

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Edit one of your own messages.

body: { community_token, member_token, conversation_id, message_id, body }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-edit" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-edit"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-edit

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Soft-delete one of your own messages.

body: { community_token, member_token, conversation_id, message_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-delete" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-delete"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-delete

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Toggle an emoji reaction on a message.

body: { community_token, member_token, conversation_id, message_id, emoji }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-react" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-react"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-react

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Upload an image to send in a chat. Returns its URL (the client then sends a normal message whose body is the URL).

multipart: { community_token, member_token, image }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-upload" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-upload"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-upload

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

image   string  optional    

Block or unblock a member.

body: { community_token, member_token, target_member_token, action? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-block" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-block"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-block

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

List the members the acting member has blocked.

body: { community_token, member_token }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-blocked" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-blocked"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-blocked

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Toggle mute on a conversation for the acting member.

body: { community_token, member_token, conversation_id, action? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-mute" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-mute"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-mute

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Report a member (optionally a specific message) for abuse.

body: { community_token, member_token, conversation_id?, target_member_token?, message_id?, reason? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-report" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-report"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-report

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Custom broadcast authorization for the member token scheme.

The community FE authenticates members by an encrypted token rather than a Laravel guard/session, so the default /broadcasting/auth endpoint can't authorize them. Echo posts socket_id + channel_name here (plus our community_token + member_token via auth.params); we verify the member is a participant of conversation.{id} and return the Pusher-protocol signature that the broadcaster expects.

The bridge may lack a configured broadcaster (no key/secret); in that case we still return the same JSON shape the reference returns rather than crashing — the signature simply uses empty credentials.

body: { community_token, member_token, socket_id, channel_name }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-chat-auth" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-chat-auth"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-chat-auth

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-members — members of a group (approved) with points.

body: { community_token, group_token (or group_id), member_token? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-members" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-members"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-members

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-mention-members body: { community_token, group_token, member_token, community_member_id?, q? } Lightweight list of a group's approved members for the composer's @mention picker — id + name + img only (no PII). The id is the mention token used in @[name](id) markup and counted by the Member Tagging Limit gate.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-mention-members" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-mention-members"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-mention-members

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-group-categories body: { community_token, group_token } Post categories for a group's composer (membership_group_categories), active only, ordered by sort_order. `admin_only` flags admin-restricted ones.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-group-categories" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-group-categories"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-group-categories

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-members-map — members with location for the group map.

body: { community_token, group_token, member_token?, q?, country?, state?, city?, role?, near?, radius_km? }

Privacy masking is applied server-side: a member's precise coordinates are NEVER sent for city/country/hidden privacy levels.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-members-map" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-members-map"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-members-map

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-geocode — location search proxy (Nominatim/OSM).

body: { q } Returns normalized place suggestions for the profile location picker. Proxied server-side so we can send the required User-Agent and keep the front-end on the same axios(COMMUNITY_API_URL) pattern as everything else.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-geocode" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-geocode"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-geocode

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-notifications — recent notifications + unread count.

body: { community_token, member_token }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-notifications" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-notifications"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-notifications

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-notifications-read — mark all (or one) as read.

body: { community_token, member_token, notification_id? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-notifications-read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-notifications-read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-notifications-read

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-member-settings body: { community_token, member_token, settings? }

Load (no settings) returns the member's current (or default) account preferences + the groups they belong to (for per-group overrides). Save (with settings) normalises + persists them. Identity comes from the sealed member_token. Backs the learner FE's AccountSettingsModal. Ports CommunityFeController::membershipMemberSettings; the member row is membership_user (settings JSON column).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/community-member-settings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/community-member-settings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/community-member-settings

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/membership-rail

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-rail" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-rail"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-rail

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/membership-home

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-home" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-home"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-home

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-leaderboard — ranked points board + level ladder body: { community_token, group_token? (or group_id?), community_member_id? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-leaderboard" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-leaderboard"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-leaderboard

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-rewards — badges & rewards earned by points threshold body: { community_token, community_member_id? }

Badges/rewards are "assigned" in the admin via community_badge_relations: type 1 = badge, type 2 = reward, points = threshold to earn it.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-badge-reward-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-badge-reward-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-badge-reward-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-rewards — badges & rewards earned by points threshold body: { community_token, community_member_id? }

Badges/rewards are "assigned" in the admin via community_badge_relations: type 1 = badge, type 2 = reward, points = threshold to earn it.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-rewards" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-rewards"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-rewards

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-feed body: { community_token, group_token (or group_id), community_member_id? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-feed" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-feed"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-feed

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/membership-posts

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-posts" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-posts"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-posts

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-post-create body: { community_token, group_token, community_member_id, content }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-post-create" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-post-create"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-create

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-post-like (toggle) body: { community_token, community_member_id, post_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-post-like" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-post-like"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-like

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-poll-vote body: { community_token, community_member_id, post_id, option_index }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-poll-vote" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-poll-vote"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-poll-vote

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-post-delete body: { community_token, community_member_id, post_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-post-delete" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-post-delete"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-delete

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-pending-posts body: { community_token, group_token, member_token } Admin-only: lists this group's posts awaiting approval (status 0).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-pending-posts" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-pending-posts"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-pending-posts

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-post-approve body: { community_token, group_token, member_token, post_id, action? } Admin-only: approve (publish) or reject (delete) a pending post.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-post-approve" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-post-approve"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-approve

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-post-edit (own post — edit text and/or image) body: { community_token, community_member_id, post_id, content, image? (file), remove_image? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-post-edit" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-post-edit"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-edit

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-post-pin (toggle, own post) body: { community_token, community_member_id, post_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-post-pin" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-post-pin"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-pin

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-post-protected-detail body: { community_token, member_token, post_id }

The stored link itself, for the edit form — the SECOND and last place the URL leaves the database (the first being the open endpoint). Restricted to whoever may edit the post: its author, or a moderator and up. A member who can merely READ the post gets nothing, even though they may open it.

Example request:
curl --request POST \
    "https://bridge.flexifunnels.com/api/membership-post-protected-detail" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bridge.flexifunnels.com/api/membership-post-protected-detail"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-protected-detail

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-post-protected-open body: { community_token, member_token, post_id }

Hands back the real URL behind a protected post's button — the only route that ever does. The feed payload carries the label and the expiry and nothing else, so a member who is no longer entitled to the group, or who saved the page, still cannot reach the link: every click asks here, and here re-checks.

Access is the group's own read rule (gateGroupRead), so a paid group's private room follows the group's entitlement automatically — including a member whose access lapsed after the post was published.

Example request:
curl --request POST \
    "https://bridge.flexifunnels.com/api/membership-post-protected-open" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bridge.flexifunnels.com/api/membership-post-protected-open"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-post-protected-open

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-comments — list comments for a post body: { community_token, post_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-comments" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-comments"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-comments

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-comment-create body: { community_token, group_token, community_member_id, post_id, cmt }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-comment-create" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-comment-create"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-comment-create

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-ai-comment body: { community_token, group_token (or group_id), post_id }

Best-effort: when the group's "Automatic AI reply to the member post" setting is on, generates a short AI reply to the post and adds it as a comment authored by the configured admin member. Called by the FE right after a post is created; it self-checks the setting and no-ops otherwise.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-ai-comment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-ai-comment"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-ai-comment

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-comment-like (toggle) body: { community_token, community_member_id, comment_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-comment-like" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-comment-like"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-comment-like

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-comment-delete (own comment) body: { community_token, community_member_id, comment_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-comment-delete" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-comment-delete"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-comment-delete

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/membership-comment-edit (own comment/reply) body: { community_token, comment_id, cmt, manage_images?, keep_images[]?, images[]?, image_urls[]? } — edits text + the image set.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-comment-edit" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-comment-edit"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-comment-edit

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST /api/community-banners body: { community_token, group_token?, placement? }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-banners" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-banners"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-banners

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-link-preview" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-link-preview"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

POST /api/community-instructor body: { community_token, instructor_id }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-instructor" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-instructor"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/membership-instructor

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Flexi Contest FE Endpoint(s)

APIs to manage contest.

POST api/get-fe-contest-details

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-fe-contest-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-fe-contest-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-fe-contest-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-fe-entry-list

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-fe-entry-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-fe-entry-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-fe-entry-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/save-member-entry

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-member-entry" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-member-entry"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/save-member-entry

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-badge-details

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-badge-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-badge-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-badge-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/get-reward-details

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/get-reward-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-reward-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
content-type: text/html; charset=utf-8
cache-control: no-cache, private
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6InlZdzd2MklkZlIvOFRvUytlcjNRamc9PSIsInZhbHVlIjoiVnJ5RnZpWS90YVlOekxzdUNnZ2lKVkV2RmVPNmpsaktiOW1yNEZlc3Z1SFo3ZDU5NGpvTWZwWGRnVHBxMVdiQUJTOFZYTTJMZ2FVYmtWUk5CekRIVU9BWXY4MXFGanV1dnVDSVY4MW44d1prUDBhLys3NXZXVklVYnR4bHBXSEciLCJtYWMiOiIyNDBkYTNkNmRiYTVjNWFhMjNjZWNhMDE4NTYwMmYxOWM5ODNjYjdhZjMzZGJkNDZjNjMwYmIxNGRkNTZhYjAzIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:19 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6IldpeFdoYnVyd0cwekxtaU01c1dyTVE9PSIsInZhbHVlIjoidUZOZjhBajZnbmczUTFuN3RMRUYyV0JqZVZPYjRvNjNmNW1GV3AvTlZFdFZ6UXozS2N3dm9oVHc1a3A2bUJ1SXptL3lVbEowaklkUFVOZVdxWmxDbElWNUJ2cTFGVXVITTYwTEIzNUdyNlRJY3YxL2IrTjRjYVMwR1Q5bTVhaHAiLCJtYWMiOiJmYzdiNjFjNzNiZWRhYjEzMTE0ZjQ5ZjQzYTRmNzc0MTllNmM1MDE3NDBiNmMyZDVkYzc0YjYwMTUzMjYwNjZjIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:19 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 


 

Request      

GET api/get-reward-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-prize-setup

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-prize-setup" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-prize-setup"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-prize-setup

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-member-achievement-details

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-achievement-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-achievement-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-member-achievement-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-badge-count

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-badge-count" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-badge-count"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-badge-count

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-viral-share-details

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-viral-share-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-viral-share-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-viral-share-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-leaderboard-details

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-leaderboard-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-leaderboard-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-leaderboard-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/fe-get-winner-list

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/fe-get-winner-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/fe-get-winner-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/fe-get-winner-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-branding-status

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-branding-status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-branding-status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-branding-status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/get-qrcode-settings

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-qrcode-settings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-qrcode-settings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-qrcode-settings

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Flexi Proof Endpoint(s)

APIs to manage flexi proof.

GET FlexiProofAutoURL

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getflexiproof-auto-url" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@test.com\",
    \"user_id\": 786,
    \"url\": \"https:\\/\\/example.com\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getflexiproof-auto-url"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@test.com",
    "user_id": 786,
    "url": "https:\/\/example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getflexiproof-auto-url

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The email of the User. Example: example@test.com

user_id   integer     

The user_id of the User. Example: 786

url   string     

The url nme of the membership Example: https://example.com

GET FlexiContestAutoURL

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getflexicontest-auto-url" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@test.com\",
    \"user_id\": 786,
    \"url\": \"https:\\/\\/example.com\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getflexicontest-auto-url"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@test.com",
    "user_id": 786,
    "url": "https:\/\/example.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getflexicontest-auto-url

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   string     

The email of the User. Example: example@test.com

user_id   integer     

The user_id of the User. Example: 786

url   string     

The url nme of the external site Example: https://example.com

GET ProofAlert

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-proof-alert" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_page_id\": \"1,2\",
    \"product_id\": \"1,2\",
    \"prof_campaign_id\": 0,
    \"page\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-proof-alert"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_page_id": "1,2",
    "product_id": "1,2",
    "prof_campaign_id": 0,
    "page": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-proof-alert

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_page_id   string     

The comma Separated Value of the FunnelPage ID. Example: 1,2

product_id   string     

The comma Separated Value of the Product ID. Example: 1,2

prof_campaign_id   integer     

The id of the Prof campaign. Example: 0

page   integer     

The pagination of result per page 25 records will show. Example: 1

GET ProofAlertTest

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-proof-alert-test" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_page_id\": \"1,2\",
    \"product_id\": \"1,2\",
    \"page\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-proof-alert-test"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_page_id": "1,2",
    "product_id": "1,2",
    "page": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-proof-alert-test

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_page_id   string     

The comma Separated Value of the FunnelPage ID. Example: 1,2

product_id   string     

The comma Separated Value of the Product ID. Example: 1,2

page   integer     

The pagination of result per page 25 records will show. Example: 1

GET CampaignData

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-campaign-data" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prof_campaign_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-campaign-data"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prof_campaign_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-campaign-data

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prof_campaign_id   integer     

The id of campaign. Example: 1

GET CampaignList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/campaign-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"page\": 1,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/campaign-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "page": 1,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/campaign-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

page   integer     

The pagination of post per page 10 records will show. Example: 1

token   string     

The login accesstoken. Example: xyz

SEARCH CampaignList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/search-campaign-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"search_name\": \"xyz\",
    \"page\": 1,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/search-campaign-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "search_name": "xyz",
    "page": 1,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search-campaign-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

search_name   string     

The search name of the campaign Example: xyz

page   integer     

The pagination of post per page 10 records will show. Example: 1

token   string     

The login accesstoken. Example: xyz

GET CampaignById

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/campaign-by-id" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"prof_campaign_id\": 1,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/campaign-by-id"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "prof_campaign_id": 1,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/campaign-by-id

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

prof_campaign_id   integer     

The id of campaign. Example: 1

token   string     

The login accesstoken. Example: xyz

GET AlertSettings

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/campaign-alert-settings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"prof_campaign_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/campaign-alert-settings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "prof_campaign_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/campaign-alert-settings

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

prof_campaign_id   integer     

The prof_campaign_id of the campaign. Example: 2

token   string     

The login accesstoken. Example: xyz

GET AlertSettingbyId

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/campaign-alert-settings-by-id" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"prof_campaigns_setting_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/campaign-alert-settings-by-id"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "prof_campaigns_setting_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/campaign-alert-settings-by-id

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

prof_campaigns_setting_id   integer     

The prof_campaigns_setting_id of the campaign. Example: 2

token   string     

The login accesstoken. Example: xyz

GET PageSettings

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/campaign-page-settings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"prof_campaign_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/campaign-page-settings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "prof_campaign_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/campaign-page-settings

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

prof_campaign_id   integer     

The prof_campaign_id of the campaign. Example: 2

token   string     

The login accesstoken. Example: xyz

SAVE / EDIT CampaignName

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-campaign-name" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"name\": \"test\",
    \"prof_campaign_id\": 0,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-campaign-name"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "name": "test",
    "prof_campaign_id": 0,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-campaign-name

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

name   string     

The name of the campaign. Example: test

prof_campaign_id   integer  optional    

optional The id of the campaign (Set "Edit" Option Only). Example: 0

token   string     

The login accesstoken. Example: xyz

SAVE / EDIT AlertSettings

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-alert-setting" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"prof_campaign_id\": 2,
    \"alert_type\": \"lead\",
    \"funnel_id\": \"1,2\",
    \"funnel_page_id\": \"1,2\",
    \"product_id\": \"1,2\",
    \"alert_customization\": \"qwer\",
    \"prof_campaigns_setting_id\": 0,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-alert-setting"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "prof_campaign_id": 2,
    "alert_type": "lead",
    "funnel_id": "1,2",
    "funnel_page_id": "1,2",
    "product_id": "1,2",
    "alert_customization": "qwer",
    "prof_campaigns_setting_id": 0,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-alert-setting

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

prof_campaign_id   integer     

The prof_campaign_id of the campaign. Example: 2

alert_type   string     

The type of the alert(lead,sale,visitor). Example: lead

funnel_id   string     

The comma Separated Value of the Funnel ID. Example: 1,2

funnel_page_id   string     

The comma Separated Value of the FunnelPage ID. Example: 1,2

product_id   string     

The comma Separated Value of the Product ID. Example: 1,2

alert_customization   string     

The alert_customization of the campaign {"alert_title":"test", "is_title_bold":"0"}. Example: qwer

prof_campaigns_setting_id   integer  optional    

optional The id of the campaignsettings(Set "Edit" Option Only). Example: 0

token   string     

The login accesstoken. Example: xyz

SAVE / Edit PageSettings

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-page-setting" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prof_campaign_id\": 2,
    \"page_customization\": \"qwer\",
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-page-setting"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prof_campaign_id": 2,
    "page_customization": "qwer",
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-page-setting

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prof_campaign_id   integer     

The prof_campaign_id of the campaign. Example: 2

page_customization   string     

The alert_customization of the campaign {"alert_duration":"5", "alert_position":"left"}. Example: qwer

token   string     

The login accesstoken. Example: xyz

DELETE Campaign

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-campaign" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"id\": 9,
    \"type\": \"alertsettting\",
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-campaign"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "id": 9,
    "type": "alertsettting",
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-campaign

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 9

id   integer     

The id of the campaign/alertsetttings. Example: 9

type   string     

The type (campaign/alertsettting) of the campaign. Example: alertsettting

token   string     

The login accesstoken. Example: xyz

UPDATE CampaignStatus

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/update-status-campaign" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"id\": 9,
    \"type\": \"alertsettting\",
    \"status\": 1,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/update-status-campaign"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "id": 9,
    "type": "alertsettting",
    "status": 1,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/update-status-campaign

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 9

id   integer     

The id of the campaign/alertsetttings. Example: 9

type   string     

The type (campaign/alertsettting) of the campaign. Example: alertsettting

status   integer     

The status(0/1) of the campaign/alertsetttings. Example: 1

token   string     

The login accesstoken. Example: xyz

GET ProjectList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/project-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/project-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/project-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

token   string     

The login accesstoken. Example: xyz

GET PageList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/page-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"user_id\": 786,
    \"campaign_id\": 0,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/page-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "user_id": 786,
    "campaign_id": 0,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/page-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the user. Example: 9

user_id   integer     

The id of the user. Example: 786

campaign_id   integer  optional    

optional The id of the campaign. Example: 0

token   string     

The login accesstoken. Example: xyz

GET ProductList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/product-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/product-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/product-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 9

token   string     

The login accesstoken. Example: xyz

GET LibraryImageList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/library-img-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"token\": \"xyz\",
    \"page\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/library-img-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "token": "xyz",
    "page": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/library-img-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

token   string     

The login accesstoken. Example: xyz

page   integer     

The pagination of result per page 25 records will show. Example: 1

Save ImageLibrary

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-img-library" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"img_path\": \"https:\\/\\/example.com\",
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-img-library"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "img_path": "https:\/\/example.com",
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-img-library

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

img_path   string     

Image Library. Example: https://example.com

token   string     

The login accesstoken. Example: xyz

GET PublishedURL

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/published-url-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"prof_campaign_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/published-url-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "prof_campaign_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/published-url-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

prof_campaign_id   integer     

The prof_campaign_id of the campaign. Example: 2

token   string     

The login accesstoken. Example: xyz

SAVE EmbedCode

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-embed-code" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": \"1,2\",
    \"user_id\": 786,
    \"flexiproof_embed\": \"qwer\",
    \"funnel_page_id_del\": \"1,2\",
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-embed-code"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": "1,2",
    "user_id": 786,
    "flexiproof_embed": "qwer",
    "funnel_page_id_del": "1,2",
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-embed-code

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the user. Example: 9

funnel_page_id   string     

The id(comma separated) of the funnelpage. Example: 1,2

user_id   integer     

The id of the user. Example: 786

flexiproof_embed   string     

The flexiproof_embed of the funnelpage. Example: qwer

funnel_page_id_del   string     

The id(comma separated) of the funnelpage. Example: 1,2

token   string     

The login accesstoken. Example: xyz

Gamification Endpoint(s)

APIs to manage gamification.

GET Gamify Points

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-gamify-points" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"funnel_page_id\": 3,
    \"lesson_id\": 3,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-gamify-points"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "funnel_page_id": 3,
    "lesson_id": 3,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-gamify-points

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

funnel_page_id   integer     

The id of the funnel_page. Example: 3

lesson_id   integer     

The id of the Lesson. Example: 3

token   string     

The login accesstoken. Example: xyz

GET Member Points

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-points" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-points"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-member-points

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

token   string     

The login accesstoken. Example: xyz

GET Goals

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/goallist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"funnel_page_id\": 3,
    \"lesson_id\": 3,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/goallist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "funnel_page_id": 3,
    "lesson_id": 3,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/goallist

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the memeber. Example: 2

funnel_page_id   integer     

The id of the Funnel Page. Example: 3

lesson_id   integer     

The id of the lesson_id. Example: 3

token   string     

The login accesstoken. Example: xyz

UPDATE Member Points

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/update-member-points" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"funnel_page_id\": 3,
    \"lesson_id\": 3,
    \"fk_id\": 3,
    \"type\": \"goal,comment,resource,lesson_complete,post_like,cmt_like,upload_profile\",
    \"goal_user_input\": \"Lorem Epsem\",
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/update-member-points"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "funnel_page_id": 3,
    "lesson_id": 3,
    "fk_id": 3,
    "type": "goal,comment,resource,lesson_complete,post_like,cmt_like,upload_profile",
    "goal_user_input": "Lorem Epsem",
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/update-member-points

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

funnel_page_id   integer     

The id of the funnel_page. Example: 3

lesson_id   integer     

The id of the Lesson. Example: 3

fk_id   integer     

The Primary Key id of the goal,comment,resource,lesson_complete(lesson_id),
post_like(post_id),cmt_like(comment_id),upload_profile(user_id). Example: 3

type   string     

The string of the User Action. Example: goal,comment,resource,lesson_complete,post_like,cmt_like,upload_profile

goal_user_input   string  optional    

optional The string of the goal user input Action. Example: Lorem Epsem

token   string     

The login accesstoken. Example: xyz

Member Badge List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/member-badge-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"funnel_page_id\": 3,
    \"lesson_id\": 3,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/member-badge-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "funnel_page_id": 3,
    "lesson_id": 3,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/member-badge-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

funnel_page_id   integer     

The id of the funnel_page. Example: 3

lesson_id   integer     

The id of the Lesson. Example: 3

token   string     

The login accesstoken. Example: xyz

GET Next Badge

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-next-badge" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"funnel_page_id\": 3,
    \"lesson_id\": 3,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-next-badge"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "funnel_page_id": 3,
    "lesson_id": 3,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-next-badge

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

funnel_page_id   integer     

The id of the funnel_page. Example: 3

lesson_id   integer     

The id of the Lesson. Example: 3

token   string     

The login accesstoken. Example: xyz

Member Reward List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/member-reward-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"funnel_page_id\": 3,
    \"lesson_id\": 3,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/member-reward-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "funnel_page_id": 3,
    "lesson_id": 3,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/member-reward-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

funnel_page_id   integer     

The id of the funnel_page. Example: 3

lesson_id   integer     

The id of the Lesson. Example: 3

token   string     

The login accesstoken. Example: xyz

GET Member Level

Bridge port of the admin GamificationService::memberStats slice that deals with level progression. Reads from levels (funnel-scoped) and membership_user.tot_points. Frontend (LevelProgress.jsx) renders the current level chip, next-level meter, and full ladder.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-level" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-level"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-member-level

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

token   string     

The login accesstoken. Example: xyz

GET Member Streak

Bridge port of GamificationService streak read. Returns current daily activity streak + lifetime longest streak for the StreakBadge component. The recording side (incrementing streak on activity) lives in the admin project's GamificationService::recordStreak — this endpoint is read-only.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-streak" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-streak"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-member-streak

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

token   string     

The login accesstoken. Example: xyz

GET Leaderboard

Funnel-scoped leaderboard. Period filter mirrors the admin service:

Period-windowed paths read point_transactions; if that table has no rows for the period, the leaderboard is empty (by design — windowed means "who earned points in this window").

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-leaderboard" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"period\": \"architecto\",
    \"limit\": 16,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-leaderboard"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "period": "architecto",
    "limit": 16,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-leaderboard

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

period   string  optional    

optional Period filter: all|daily|weekly|monthly. Default: all. Example: architecto

limit   integer  optional    

optional Max rows to return (1-100). Default: 30. Example: 16

token   string     

The login accesstoken. Example: xyz

Redeem Reward

Member spends their tot_points to claim a redeemable reward (one with cost_points > 0). Auto-awarded rewards (cost_points = 0, gated by reward_points threshold) are claimed via the existing badge-evaluator inside UpdateMemberPoints — not this endpoint.

Wrapped in a DB transaction so the points debit, the member_badges insert, the stock decrement, and the point_transactions audit row either all land or none of them do.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/redeem-reward" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 1,
    \"member_id\": 2,
    \"reward_id\": 5,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/redeem-reward"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 1,
    "member_id": 2,
    "reward_id": 5,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/redeem-reward

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the funnel. Example: 1

member_id   integer     

The id of the Member. Example: 2

reward_id   integer     

The id of the reward. Example: 5

token   string     

The login accesstoken. Example: xyz

Lesson Endpoint(s)

APIs to manage lesson.

GET Lessons

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/lessonlist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/lessonlist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lessonlist

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

GET LessonsDetails

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/lesson-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/lesson-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lesson-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Mark Complete

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/markecomplete" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/markecomplete"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/markecomplete

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Unlock Mark Complete

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-markecomplete" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-markecomplete"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-markecomplete

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Course Complete Percentage

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/completeperc" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/completeperc"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/completeperc

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Submit a lesson goal (assignment). Goals are authored in the admin panel (membership_lesson_goals, keyed on the legacy lesson_id). Auto-approve goals (approval_type=1) also mark the lesson complete immediately.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/membership-goal-submit" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"text\": \"architecto\",
    \"url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/membership-goal-submit"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "text": "architecto",
    "url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/membership-goal-submit

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

Example: 9

funnel_page_id   integer     

Example: 9

lesson_id   integer     

Example: 9

member_id   integer     

Example: 9

text   string  optional    

The text response (submission_type=1). Example: architecto

url   string  optional    

The video/audio link (submission_type=2|3). Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

SAVE / EDIT LessonPost

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/lesson-post" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"post_id\": 0,
    \"post_title\": \"title\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/lesson-post"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "post_id": 0,
    "post_title": "title",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lesson-post

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

post_id   integer  optional    

optional The id of the Post (Set "Edit" Option Only). Example: 0

post_title   string     

The title of the post. Example: title

token   string     

The Login Accesstoken. Example: qweruery

SAVE / EDIT LessonComment

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/lesson-comment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"post_id\": 9,
    \"parent_id\": 9,
    \"member_id\": 9,
    \"comment_id\": 0,
    \"comment\": \"comment\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/lesson-comment"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "post_id": 9,
    "parent_id": 9,
    "member_id": 9,
    "comment_id": 0,
    "comment": "comment",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lesson-comment

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

post_id   integer     

The id of the post. Example: 9

parent_id   integer     

The id of the post. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

comment_id   integer  optional    

optional The id of the Comment (Set "Edit" Option Only). Example: 0

comment   string     

The cmt of the comment. Example: comment

token   string     

The Login Accesstoken. Example: qweruery

SAVE LessonLike

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/lesson-like" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"type\": 1,
    \"fk_id\": 9,
    \"like\": 1,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/lesson-like"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "type": 1,
    "fk_id": 9,
    "like": 1,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lesson-like

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

type   integer     

The type of the post(1) or comment(2). Example: 1

fk_id   integer     

The id of the post or comment. Example: 9

like   integer     

The like(1) or unlike(0) of the lesson. Example: 1

token   string     

The Login Accesstoken. Example: qweruery

SAVE / EDIT LessonNotes

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-lesson-notes" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"notes\": \"{\\\"time\\\":\\\"00.53\\\",\\\"note\\\":\\\"Good\\\"}\",
    \"lesson_note_id\": 0,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-lesson-notes"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "notes": "{\"time\":\"00.53\",\"note\":\"Good\"}",
    "lesson_note_id": 0,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-lesson-notes

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

notes   string     

The cmt of the lesson note. Example: {"time":"00.53","note":"Good"}

lesson_note_id   integer  optional    

optional The id of the lesson note (Set "Edit" Option Only). Example: 0

token   string     

The Login Accesstoken. Example: qweruery

GET LessonNotes

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-lesson-notes" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-lesson-notes"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-lesson-notes

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

DELETE LessonNotes

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-lesson-notes" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"lesson_note_id\": 16,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-lesson-notes"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "lesson_note_id": 16,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-lesson-notes

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

lesson_note_id   integer     

The id of the Lesson Notes.Example: Example: 16

token   string     

The Login Accesstoken. Example: qweruery

GET AllLessonPostComment

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/getlesson-post-comment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"page\": 1,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/getlesson-post-comment"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "page": 1,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/getlesson-post-comment

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

page   integer     

The pagination of post per page 10 records will show. Example: 1

token   string     

The Login Accesstoken. Example: qweruery

DELETE Post / Comment

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-post-comment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"id\": 9,
    \"type\": \"post\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-post-comment"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "id": 9,
    "type": "post",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-post-comment

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

id   integer     

The id of the Post/Comment . Example: 9

type   (post/comment)  optional    

string required The type of the Post/Comment . Example: post

token   string     

The Login Accesstoken. Example: qweruery

Community feed — cross-lesson posts within a funnel, newest first.

Joins membership_user for the author card and aggregates likes + comment counts so the list view doesn't need follow-up queries.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/community-feed" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 16,
    \"member_id\": 16,
    \"page\": 16,
    \"per_page\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/community-feed"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 16,
    "member_id": 16,
    "page": 16,
    "per_page": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/community-feed

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

Example: 16

member_id   integer     

(for token auth) Example: 16

page   integer  optional    

optional default 1 Example: 16

per_page   integer  optional    

optional default 20 Example: 16

List the caller's conversations, newest activity first. Each row includes the OTHER participant's profile + the last message preview + an unread count.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-conversations" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"limit\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-conversations"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "limit": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-conversations

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

limit   integer  optional    

optional default 50 Example: 16

Paginated message history for a conversation. Newest first; the client typically reverses to render chronological top-down.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-messages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"conversation_id\": 16,
    \"before_id\": 16,
    \"limit\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-messages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "conversation_id": 16,
    "before_id": 16,
    "limit": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-messages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

(caller — must be participant) Example: 16

funnel_id   integer     

Example: 16

conversation_id   integer     

Example: 16

before_id   integer  optional    

optional — paginate older messages Example: 16

limit   integer  optional    

optional default 40 Example: 16

Send a message. Auto-creates the conversation on first send. Both members must be active (status=1) and in the same funnel.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/send-message" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"to_member_id\": 16,
    \"body\": \"architecto\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/send-message"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "to_member_id": 16,
    "body": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/send-message

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

(sender) Example: 16

funnel_id   integer     

Example: 16

to_member_id   integer     

(recipient) Example: 16

body   string     

(1..5000 chars) Example: architecto

Mark all messages in a conversation that were sent TO the caller as read. The caller's own messages are never touched.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mark-conversation-read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"conversation_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mark-conversation-read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "conversation_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mark-conversation-read

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

conversation_id   integer     

Example: 16

Lightweight unread count for the nav badge. Single aggregate query.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-unread-message-count" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-unread-message-count"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-unread-message-count

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

Edit a message. Only the sender can edit. No time window — but the client shows "edited" so receivers know.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/edit-message" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"message_id\": 16,
    \"body\": \"architecto\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/edit-message"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "message_id": 16,
    "body": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/edit-message

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

message_id   integer     

Example: 16

body   string     

Example: architecto

Soft-delete a message. The row stays so threading and counts don't go strange; UI shows "[deleted]" for body.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-message" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-message"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/delete-message

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Search messages within the caller's conversations. Optionally scoped to one conversation.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/search-messages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/search-messages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/search-messages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Toggle a block. Symmetric in send-check (handled separately) — this just records the directional row.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/toggle-block-member" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/toggle-block-member"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/toggle-block-member

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Lightweight typing-indicator ping. Sets is_typing_until = now + ~5s for the caller in this conversation. Recipients see it via the typing_member_ids field in getMessages.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/typing-ping" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/typing-ping"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/typing-ping

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a group conversation. Title + initial members.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/create-group" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/create-group"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/create-group

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Add a member to a group (caller must be a participant).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/add-group-member" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/add-group-member"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/add-group-member

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Leave a group. Sets left_at; doesn't delete history.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/leave-group" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/leave-group"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/leave-group

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Save (or refresh) a Web Push subscription for the caller's browser.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/subscribe-push" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/subscribe-push"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/subscribe-push

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Upload a message attachment. Returns the public URL the client then passes to send-message via media_url + media_type.

Storage: simple filesystem path under public/mem_message_attachments/ The membership platform already serves /mem_resources via S3; for v1 we keep attachments local until that bucket is wired in.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/upload-message-attachment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/upload-message-attachment"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/upload-message-attachment

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Paginated member directory for a funnel — name + email search, sort by joined / points / name. Joins are kept lean: profile fields from membership_user, badge count via subquery (cheaper than join+group).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-directory" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 16,
    \"member_id\": 16,
    \"q\": \"architecto\",
    \"sort\": \"architecto\",
    \"page\": 16,
    \"per_page\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-directory"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 16,
    "member_id": 16,
    "q": "architecto",
    "sort": "architecto",
    "page": 16,
    "per_page": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-member-directory

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

Example: 16

member_id   integer     

(caller — for token auth) Example: 16

q   string  optional    

optional — search name/email Example: architecto

sort   string  optional    

optional — joined|points|name (default: points) Example: architecto

page   integer  optional    

optional default 1 Example: 16

per_page   integer  optional    

optional default 24 Example: 16

Single-member profile card. Same shape as one row of the directory but doesn't need pagination. Used by hover cards.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-profile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/get-member-profile

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Toggle an emoji reaction on a post or comment. Same endpoint handles both: target_type='post'|'comment', target_id=post_id|comment_id.

One row per (member, target, reaction) — re-clicking removes it.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/toggle-reaction" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"target_type\": \"architecto\",
    \"target_id\": 16,
    \"reaction\": \"architecto\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/toggle-reaction"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "target_type": "architecto",
    "target_id": 16,
    "reaction": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/toggle-reaction

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

target_type   string     

— post|comment Example: architecto

target_id   integer     

Example: 16

reaction   string     

— like|heart|celebrate|wow|hundred|laugh|sad Example: architecto

Bulk fetch reaction state for a list of targets in one round-trip.

The client renders many posts at once; this avoids N+1 requests.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-reactions" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"targets\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-reactions"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "targets": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-reactions

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

(for token + "mine" annotation) Example: 16

targets   string[]     

— [{type:"post"|"comment", id:123}, ...]

Toggle a lesson's saved/bookmarked state. Returns the new state so the client can flip the icon without a follow-up GET.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/toggle-saved-lesson" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"lesson_id\": 16,
    \"funnel_id\": 16,
    \"funnel_page_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/toggle-saved-lesson"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "lesson_id": 16,
    "funnel_id": 16,
    "funnel_page_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/toggle-saved-lesson

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

lesson_id   integer     

Example: 16

funnel_id   integer     

Example: 16

funnel_page_id   integer  optional    

optional Example: 16

List the member's saved lessons. Joins lesson + course metadata so the sidebar view can render with one round-trip.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-saved-lessons" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-saved-lessons"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-saved-lessons

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

In-app notification inbox for the member. Returns unread count + most recent N items so the bell dropdown can render in one round-trip.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-member-notifications" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"limit\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-member-notifications"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "limit": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-member-notifications

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

limit   integer  optional    

optional default 20 Example: 16

Mark notifications as read. With no ids, marks all of the member's notifications as read (bulk "clear inbox").

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mark-notifications-read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"notification_ids\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mark-notifications-read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "notification_ids": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mark-notifications-read

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer     

Example: 16

notification_ids   string[]  optional    

optional — when present, only these are marked

Save the member's current playback position for a lesson. Upserts on (membership_user_id, lesson_id). Supports a batch payload via the `positions` array so the client can flush several lessons in one call.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/save-video-position" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16,
    \"funnel_page_id\": 16,
    \"lesson_id\": 16,
    \"position_seconds\": 16,
    \"duration_seconds\": 16,
    \"positions\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/save-video-position"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16,
    "funnel_page_id": 16,
    "lesson_id": 16,
    "position_seconds": 16,
    "duration_seconds": 16,
    "positions": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/save-video-position

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer  optional    

Example: 16

funnel_page_id   integer  optional    

Example: 16

lesson_id   integer  optional    

Example: 16

position_seconds   integer  optional    

Example: 16

duration_seconds   integer  optional    

Example: 16

positions   string[]  optional    

optional — [{lesson_id, position_seconds, duration_seconds}, ...]

Return all saved positions for this member, optionally scoped by funnel. Response shape mirrors the local lessonResume map: { positions: { [lesson_id]: seconds } }

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-video-positions" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"member_id\": 16,
    \"funnel_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-video-positions"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "member_id": 16,
    "funnel_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-video-positions

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

member_id   integer     

Example: 16

funnel_id   integer  optional    

optional Example: 16

Resource List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/downloadcontent" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/downloadcontent"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/downloadcontent

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Mock Test Endpoint(s)

Learner-facing API for the standalone Live/Mock Test — a TIMED exam, distinct from the lesson Quiz (QuizController). Design notes:

Body params mirror the quiz endpoints: funnel_id + member_id identify the member (the route sits behind the same auth middleware as the quiz routes).

POST api/mock-test-list

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/mock-test-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Pre-start detail: meta + instructions + attempts left + whether a live attempt exists to resume. Does NOT return questions.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 16,
    \"member_id\": 16,
    \"mock_test_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 16,
    "member_id": 16,
    "mock_test_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mock-test-details

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

Example: 16

member_id   integer     

Example: 16

mock_test_id   integer     

Example: 16

Start (or resume) a timed attempt.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-start" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 16,
    \"member_id\": 16,
    \"mock_test_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-start"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 16,
    "member_id": 16,
    "mock_test_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mock-test-start

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

Example: 16

member_id   integer     

Example: 16

mock_test_id   integer     

Example: 16

Resume an in-progress attempt (after refresh / new tab / reconnect).

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-resume" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"attempt_id\": 16,
    \"member_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-resume"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "attempt_id": 16,
    "member_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mock-test-resume

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

attempt_id   integer     

Example: 16

member_id   integer     

Example: 16

Autosave one question's answer. Rejected (and the attempt auto-finalized) if time has elapsed.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-save-answer" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"attempt_id\": 16,
    \"member_id\": 16,
    \"bank_question_id\": 16,
    \"choice_rand_id\": \"architecto\",
    \"marked_for_review\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-save-answer"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "attempt_id": 16,
    "member_id": 16,
    "bank_question_id": 16,
    "choice_rand_id": "architecto",
    "marked_for_review": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mock-test-save-answer

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

attempt_id   integer     

Example: 16

member_id   integer     

Example: 16

bank_question_id   integer     

Example: 16

choice_rand_id   string  optional    

the selected option (null clears it) Example: architecto

marked_for_review   integer  optional    

0|1 Example: 16

Finalize an attempt (manual submit). Idempotent — a second submit returns the existing result.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-submit" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"attempt_id\": 16,
    \"member_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-submit"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "attempt_id": 16,
    "member_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mock-test-submit

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

attempt_id   integer     

Example: 16

member_id   integer     

Example: 16

Read a finalized attempt's result.

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/mock-test-result" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"attempt_id\": 16,
    \"member_id\": 16
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/mock-test-result"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "attempt_id": 16,
    "member_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mock-test-result

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

attempt_id   integer     

Example: 16

member_id   integer     

Example: 16

Quiz Endpoint(s)

APIs to manage quiz.

GET QuizList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/quiz-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/quiz-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/quiz-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Quiz Result

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/quiz-response" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"funnel_page_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"answer\": \"[{\\\"quiz_question_id\\\":1,\\\"choice_rand_id\\\":\\\"9Hlfpy\\\"},{\\\"quiz_question_id\\\":2,\\\"choice_rand_id\\\":\\\"a9SsHN\\\"}]\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/quiz-response"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "funnel_page_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "answer": "[{\"quiz_question_id\":1,\"choice_rand_id\":\"9Hlfpy\"},{\"quiz_question_id\":2,\"choice_rand_id\":\"a9SsHN\"}]",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/quiz-response

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

funnel_page_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

answer   string     

The answer json of the quiz. Example: [{"quiz_question_id":1,"choice_rand_id":"9Hlfpy"},{"quiz_question_id":2,"choice_rand_id":"a9SsHN"}]

token   string     

The Login Accesstoken. Example: qweruery

GET QuizMembersAnswer

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/quiz-member-answer" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"funnel_id\": 9,
    \"lesson_id\": 9,
    \"member_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/quiz-member-answer"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "funnel_id": 9,
    "lesson_id": 9,
    "member_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/quiz-member-answer

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

funnel_id   integer     

The id of the Funnel. Example: 9

lesson_id   integer     

The id of the Funnel. Example: 9

member_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Settings Endpoint(s)

APIs to manage quiz.

Fetch Domain List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-domain-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-domain-list"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-domain-list

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Add Domain

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/add-domain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain_name\": \"example.com\",
    \"user_id\": 2,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/add-domain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "domain_name": "example.com",
    "user_id": 2,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/add-domain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

domain_name   string     

The id of the Funnel. Example: example.com

user_id   integer     

The id of the Funnel. Example: 2

token   string     

The Login Accesstoken. Example: qweruery

Verify Domain

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/verify-domain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"domain_id\": 9,
    \"user_id\": 2,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/verify-domain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "domain_id": 9,
    "user_id": 2,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/verify-domain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

domain_id   integer     

The id of the Funnel. Example: 9

user_id   integer     

The id of the Funnel. Example: 2

token   string     

The Login Accesstoken. Example: qweruery

Delete Domain

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-domain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-domain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-domain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Fetch Account Domain

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-account-subdomain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-account-subdomain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-account-subdomain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Add Account Domain

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/add-account-subdomain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 99,
    \"name\": \"sub.flexifunnels.com\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/add-account-subdomain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 99,
    "name": "sub.flexifunnels.com",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/add-account-subdomain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the Funnel. Example: 99

name   string     

The id of the Funnel. Example: sub.flexifunnels.com

token   string     

The Login Accesstoken. Example: qweruery

Verified Domain List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/verified-domain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/verified-domain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/verified-domain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Assign Domain for Contest

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/assign-domain" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"custom_domain_id\": 9,
    \"funnel_id\": 9,
    \"old_custom_domain\": \"9\",
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/assign-domain"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "custom_domain_id": 9,
    "funnel_id": 9,
    "old_custom_domain": "9",
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/assign-domain

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the Funnel. Example: 9

custom_domain_id   integer     

The custom domain id of the Funnel. Example: 9

funnel_id   integer     

The id of the Funnel. Example: 9

old_custom_domain   string     

The id of the Funnel. Example: 9

token   string     

The Login Accesstoken. Example: qweruery

Create Project and Page for Contest

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/create-project-pages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"path\": \"winner\",
    \"name\": \"name\",
    \"id\": 0,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/create-project-pages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "path": "winner",
    "name": "name",
    "id": 0,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/create-project-pages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The user id of the Flexi. Example: 9

path   string     

The path of the Application. Example: winner

name   string     

The name of the Application. Example: name

id   integer     

The id of the Application. Example: 0

token   string     

The Login Accesstoken. Example: qweruery

Create Page for Application

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/create-page" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"funnel_id\": 0,
    \"path\": \"winner\",
    \"name\": \"name\",
    \"id\": 0,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/create-page"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "funnel_id": 0,
    "path": "winner",
    "name": "name",
    "id": 0,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/create-page

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The user id of the Flexi. Example: 9

funnel_id   integer     

The funnel_id of the Application. Example: 0

path   string     

The path of the Application. Example: winner

name   string     

The name of the Application. Example: name

id   integer     

The id of the Application. Example: 0

token   string     

The Login Accesstoken. Example: qweruery

GET ProjectList

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/project-lists" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 786,
    \"token\": \"xyz\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/project-lists"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 786,
    "token": "xyz"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/project-lists

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 786

token   string     

The login accesstoken. Example: xyz

Update Page for Contest

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/update-page-slug" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"name\": \"test\",
    \"path\": \"winner\",
    \"funnel_page_id\": 133,
    \"funnel_id\": 143,
    \"id\": 0,
    \"token\": \"qweruery\"
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/update-page-slug"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "name": "test",
    "path": "winner",
    "funnel_page_id": 133,
    "funnel_id": 143,
    "id": 0,
    "token": "qweruery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/update-page-slug

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The user id of the Flexi. Example: 9

name   string     

The name of the Contest. Example: test

path   string     

The path of the Application. Example: winner

funnel_page_id   integer     

The funnel page id of the Application. Example: 133

funnel_id   integer     

The funnel id of the Application. Example: 143

id   integer     

The id of the Application. Example: 0

token   string     

The Login Accesstoken. Example: qweruery

Update MetaData for Contest

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/update-contest-meta" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 9,
    \"name\": \"test\",
    \"funnel_page_id\": 133,
    \"funnel_id\": 0,
    \"contest_url\": \"143\",
    \"contest_id\": 32
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/update-contest-meta"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 9,
    "name": "test",
    "funnel_page_id": 133,
    "funnel_id": 0,
    "contest_url": "143",
    "contest_id": 32
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/update-contest-meta

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The user id of the Flexi. Example: 9

name   string     

The name of the Contest. Example: test

funnel_page_id   integer     

The funnel page id of the Application. Example: 133

funnel_id   integer     

The funnel id of the Application. Example: 0

contest_url   string     

The funnel id of the Application. Example: 143

contest_id   integer     

The id of the Application. Example: 32

Webinar Endpoint(s)

APIs to manage Webinar.

GET User App Webinar Service List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-app-user-webinar-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-app-user-webinar-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-app-user-webinar-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

GET Webinar Service Name List

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-app-webinar-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-app-webinar-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-app-webinar-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

Save App User Webinar Service

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/set-app-webinar-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/set-app-webinar-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/set-app-webinar-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

UPDATE Status AppUserWebinarService

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/user/status/webinarlist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"status\": 1,
    \"app_user_webinar_service_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/user/status/webinarlist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "status": 1,
    "app_user_webinar_service_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/user/status/webinarlist

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

status   integer     

The status of the app_user_webinar_service_id . Example: 1

app_user_webinar_service_id   integer     

The id of the app user webinar service. Example: 1

Delete AppUserWebinarService

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/delete-app-user-webinar-service" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_user_webinar_service_id\": 1,
    \"app_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/delete-app-user-webinar-service"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_user_webinar_service_id": 1,
    "app_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/delete-app-user-webinar-service

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_user_webinar_service_id   integer     

The id of the app user webinar service. Example: 1

app_id   integer     

The id of the APP. Example: 1

Connect GoToWebinar

Example request:
curl --request GET \
    --get "https://api-v2.flexifunnels.com/api/connectGotowebinar?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com%2F" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/connectGotowebinar"
);

const params = {
    "name": "Test",
    "arId": "1",
    "user_id": "2",
    "app_id": "1",
    "base_url": "https://example.com/",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With, Accept, Origin
access-control-allow-credentials: true
vary: Origin
set-cookie: XSRF-TOKEN=eyJpdiI6IjgzNzh5b3VHVGxaM1Z3U21Rdmd4YXc9PSIsInZhbHVlIjoiQnFPSmViWlhieFFaWVMxZW9HcEd4T0RpQlNTOTRJVzN6elZJVkdublBVZFVFWXBKT2lOdFJsTThra3M5NVAzSjl3QjlEVUNTSVRKb2NIRjd5dUY2d29oR0xRZzBVc2hEUUlESDlnWUNPV29SWEp5MEc1NFRDOUswT3R3eDFoUzciLCJtYWMiOiI4MDJhZDk0MGY0YjYxMWI5ZTE5MmI5YjEzODEyZDQ2OTNhZjM1ZTBkNjVmMjRiOThlZDk0N2UwNzM4ZmU5MjFhIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:19 GMT; Max-Age=7200; path=/; secure; samesite=lax; membershipapi-session=eyJpdiI6IlltcmtwemlYM3ZkUndsY2JCaXpuTHc9PSIsInZhbHVlIjoiYng2Nkw2N3k4YWZUSDRNTDYwZ2ljSVdDejFRYkNDeWNSQnd4ZHdzVHdJRHVLY01NQW5mZVNZWVg1TEJzclVQQ1JIViswRmplbC8xT3VpazhmTDNxYkZVV01wZ3lmR2hiOTNJWVIrcmFHSUsvTmJZZkZtOWt0UWovQlBMdWRBSE8iLCJtYWMiOiIzYjM2MzJkYzBjNjBkYWZhYjEwYTkyNjRiMTk3NzYzMjJjOWE4YmY4MWE2NjcxMWNkZDM1YmQwNjYwMjE0ZTZmIiwidGFnIjoiIn0%3D; expires=Tue, 22 Sep 2026 12:16:19 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "success": true,
    "url": "https://api-v2.flexifunnels.com/api/setCookieUpdate?name=Test&arId=1&user_id=2&app_id=1&base_url=https%3A%2F%2Fexample.com%2F&url=https%3A%2F%2Fauthentication.logmeininc.com%2Foauth%2Fauthorize%3Fclient_id%3D%26response_type%3Dcode%26redirect_uri%3D"
}
 

Request      

GET api/connectGotowebinar

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

name   string     

The name of the Account name. Example: Test

arId   integer     

The id of the app user email service. Example: 1

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

base_url   string     

The base_url of current domain. Example: https://example.com/

GET Webinar List ID

Example request:
curl --request POST \
    "https://api-v2.flexifunnels.com/api/get-webinar-list-id" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_id\": 2,
    \"app_id\": 1,
    \"app_user_webinar_service_id\": 1
}"
const url = new URL(
    "https://api-v2.flexifunnels.com/api/get-webinar-list-id"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_id": 2,
    "app_id": 1,
    "app_user_webinar_service_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/get-webinar-list-id

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

user_id   integer     

The id of the user. Example: 2

app_id   integer     

The id of the APP. Example: 1

app_user_webinar_service_id   integer     

The id of the app user webinar service. Example: 1