List Applications (v2)
curl --request POST \
--url https://api.example.com/external/v2/applications/import requests
url = "https://api.example.com/external/v2/applications/"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/external/v2/applications/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/external/v2/applications/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/external/v2/applications/"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/external/v2/applications/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/external/v2/applications/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyList Applications (v2)
Enhanced application listing with advanced filtering by OG variables
POST
/
external
/
v2
/
applications
/
List Applications (v2)
curl --request POST \
--url https://api.example.com/external/v2/applications/import requests
url = "https://api.example.com/external/v2/applications/"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/external/v2/applications/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/external/v2/applications/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/external/v2/applications/"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/external/v2/applications/")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/external/v2/applications/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyList Applications (v2)
Retrieve a paginated list of applications with advanced filtering capabilities including OG variable filters.Endpoint
POST /external/v2/applications/
Authentication
[!NOTE] Requires a valid company API key in theAuthorizationheader (format:Api-Key <key>).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
flow_id | string (UUID) | Yes | The flow ID (must belong to the company) |
current_stage | string (UUID) | No | Filter by stage ID |
application_ids | array of strings | No | Optional list of application IDs to include |
og_variable_ids | array of strings | No | Optional list of OG variable paths to return |
filters | object | No | Dict of {og_path: value} pairs for filtering |
page | integer | No | Page number (1-based) |
page_size | integer | No | Items per page |
created__gt | string (ISO 8601) | No | Applications created after this datetime |
created__gte | string (ISO 8601) | No | Applications created on or after this datetime |
created__lt | string (ISO 8601) | No | Applications created before this datetime |
created__lte | string (ISO 8601) | No | Applications created on or before this datetime |
updated_at__gt | string (ISO 8601) | No | Applications updated after this datetime |
updated_at__gte | string (ISO 8601) | No | Applications updated on or after this datetime |
updated_at__lt | string (ISO 8601) | No | Applications updated before this datetime |
updated_at__lte | string (ISO 8601) | No | Applications updated on or before this datetime |
Filter Value Formats
Thefilters field supports different value formats depending on the field type:
| Field Type | Format | Example |
|---|---|---|
| Text / Email / Phone | Plain string (case-insensitive substring) | "john" |
| Selection | Comma-separated choice IDs, or {"values_to_include": ["id1"], "check_for_empty": true} | "choice-id-1,choice-id-2" |
| Date | Named preset (TODAY, THIS_WEEK, THIS_MONTH, THIS_YEAR) or range "startDate,endDate" | "2024-01-01,2024-12-31" |
| Number | Range "min,max" (use "null" for open-ended) | "50,100" or "50,null" |
| Document | Boolean | true (uploaded) or false (not uploaded) |
Example Request
curl -X POST "https://api.firstwork.com/external/v2/applications/" \
-H "Authorization: Api-Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"flow_id": "550e8400-e29b-41d4-a716-446655440000",
"og_variable_ids": [
"USER.PERSONAL_INFORMATION.first_name",
"USER.PERSONAL_INFORMATION.last_name"
],
"filters": {
"USER.PERSONAL_INFORMATION.first_name": "John"
},
"page": 1,
"page_size": 50
}'
Response Structure
Returns a paginated envelope with:results: Array of application records with dynamic keys per requested variableslabels_map: Mapping of variable keys to human-readable labelsunavailable_application_ids: IDs that were requested but not founderrored_request_variables: Invalid variable IDs