List call flags by task type
curl --request GET \
--url https://api.finosu.com/calls/flags \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.finosu.com/calls/flags"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.finosu.com/calls/flags', 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.finosu.com/calls/flags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.finosu.com/calls/flags"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.finosu.com/calls/flags")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finosu.com/calls/flags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"name": "DNC",
"description": "The customer requested that calls stop."
},
{
"name": "WRONG_NUMBER",
"description": "The dialed number does not belong to the intended customer."
}
]{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Calls
List Call Flags
Returns the flag catalog for the requested task type, served from the flag registry — the same source call results use — so every flag that can appear in your call results is discoverable here. Scoped to the authenticated company, ordered alphabetically by name, no pagination. This lookup does not enable workflows, configure webhook delivery, or cancel servicing.
GET
/
calls
/
flags
List call flags by task type
curl --request GET \
--url https://api.finosu.com/calls/flags \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.finosu.com/calls/flags"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.finosu.com/calls/flags', 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.finosu.com/calls/flags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.finosu.com/calls/flags"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.finosu.com/calls/flags")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finosu.com/calls/flags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"name": "DNC",
"description": "The customer requested that calls stop."
},
{
"name": "WRONG_NUMBER",
"description": "The dialed number does not belong to the intended customer."
}
]{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Retrieve the flag catalog for a task type. Use the returned names and
descriptions to populate your integration’s event configuration without
hardcoding flag codes on your side.
These are the values published by List Origination Task Types
and List Collections Task Types.
The catalog is scoped to the authenticated company: most flags are shared, and
flags provisioned for specific companies appear only for those companies. It does
not indicate whether a workflow is enabled for your account.
Authentication errors contain a string
Request
curl --request GET 'https://api.finosu.com/calls/flags?taskType=PendingLoanNewLead' \
--header 'X-API-Key: YOUR_API_KEY'
taskType is required and case-sensitive:
| Task type | Workflow |
|---|---|
PendingLoanNewLead | Origination for new applications |
PendingLoanReturning | Origination for returning borrowers |
Collections | Collections |
Response
HTTP200 returns an array of {name, description} objects, ordered alphabetically
by name, with no pagination. name is the case-sensitive flag code to use in
configuration; description explains its meaning for your UI. The live response is
the authoritative catalog for each task type — the OpenAPI examples are
illustrative, not exhaustive. Do not copy flag codes from documentation into your
configuration; load them from this endpoint.
The catalog is served from the same flag registry the call pipeline uses, so the
flags that can appear in your call results for a task type are discoverable here.
Use codes as identifiers and display
descriptions as text. Retrieve the catalog when loading configuration; it does not
need to be fetched after every call. Successful responses use
Cache-Control: private, max-age=3600: private clients may reuse the response for
one hour, while shared caches must not store it. Cache each taskType URL
separately and refresh after expiry. Clients that do not implement HTTP caching
must explicitly implement reuse; the header alone does not prevent requests.
Catalog updates can take up to one hour to appear in a fresh client cache.
Requests reaching the API still require a valid API key.
Configuring actions
Your integration decides which action to associate with each returned flag. For cancellation actions, retrieve the available reasons from List Stop Servicing Reasons. A flag code and a stop-servicing reason are separate values; do not assume their names match or that every flag requires cancellation. This endpoint provides definitions only. It does not deliver events, configure webhook URLs or credentials, or cancel servicing. Coordinate call-result delivery with your existing integration setup.Errors
| Status | Meaning |
|---|---|
401 | API key is missing, empty, invalid, inactive, or deleted |
422 | taskType is missing or is not one of the supported values |
detail. Query validation errors contain
an array of errors in detail, including each error’s loc, msg, and type.