List Credit Transactions
curl --request POST \
--url https://api.example.com/api/public/tools/list_credit_transactions \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"fromUtc": null,
"toUtc": null,
"featureTypes": null,
"limit": null,
"cursor": null,
"userId": null,
"source": null
}
'import requests
url = "https://api.example.com/api/public/tools/list_credit_transactions"
payload = {
"fromUtc": None,
"toUtc": None,
"featureTypes": None,
"limit": None,
"cursor": None,
"userId": None,
"source": None
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fromUtc: null,
toUtc: null,
featureTypes: null,
limit: null,
cursor: null,
userId: null,
source: null
})
};
fetch('https://api.example.com/api/public/tools/list_credit_transactions', 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/api/public/tools/list_credit_transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fromUtc' => null,
'toUtc' => null,
'featureTypes' => null,
'limit' => null,
'cursor' => null,
'userId' => null,
'source' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/public/tools/list_credit_transactions"
payload := strings.NewReader("{\n \"fromUtc\": null,\n \"toUtc\": null,\n \"featureTypes\": null,\n \"limit\": null,\n \"cursor\": null,\n \"userId\": null,\n \"source\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
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/api/public/tools/list_credit_transactions")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fromUtc\": null,\n \"toUtc\": null,\n \"featureTypes\": null,\n \"limit\": null,\n \"cursor\": null,\n \"userId\": null,\n \"source\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/list_credit_transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fromUtc\": null,\n \"toUtc\": null,\n \"featureTypes\": null,\n \"limit\": null,\n \"cursor\": null,\n \"userId\": null,\n \"source\": null\n}"
response = http.request(request)
puts response.read_body{
"summary": "<string>",
"teamId": "<string>",
"effectiveFilters": {
"fromUtc": "2023-11-07T05:31:56Z",
"toUtc": "2023-11-07T05:31:56Z",
"featureTypes": [
"email_unlock"
],
"statuses": [
"reserved"
],
"userId": "<string>",
"source": "<string>"
},
"items": [
{
"id": "<string>",
"created": "2023-11-07T05:31:56Z",
"featureType": "email_unlock",
"cost": 123,
"type": "incoming",
"status": "reserved",
"isAdminChange": true,
"metadata": {},
"description": "<string>"
}
],
"cursor": "<string>",
"totalCount": 123
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}FirstTouch tools
List Credit Transactions
Lists the current team’s committed credits transaction history with UTC date, billing feature, user, and source filters.
Usage notes
- Requires team billing access.
- Use userId to return the exact transactions attributed to one user.
- Results can include committed spend, purchases, or administrative adjustments; inspect transaction type before describing an item as spent credits.
POST
/
api
/
public
/
tools
/
list_credit_transactions
List Credit Transactions
curl --request POST \
--url https://api.example.com/api/public/tools/list_credit_transactions \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"fromUtc": null,
"toUtc": null,
"featureTypes": null,
"limit": null,
"cursor": null,
"userId": null,
"source": null
}
'import requests
url = "https://api.example.com/api/public/tools/list_credit_transactions"
payload = {
"fromUtc": None,
"toUtc": None,
"featureTypes": None,
"limit": None,
"cursor": None,
"userId": None,
"source": None
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fromUtc: null,
toUtc: null,
featureTypes: null,
limit: null,
cursor: null,
userId: null,
source: null
})
};
fetch('https://api.example.com/api/public/tools/list_credit_transactions', 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/api/public/tools/list_credit_transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fromUtc' => null,
'toUtc' => null,
'featureTypes' => null,
'limit' => null,
'cursor' => null,
'userId' => null,
'source' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/public/tools/list_credit_transactions"
payload := strings.NewReader("{\n \"fromUtc\": null,\n \"toUtc\": null,\n \"featureTypes\": null,\n \"limit\": null,\n \"cursor\": null,\n \"userId\": null,\n \"source\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
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/api/public/tools/list_credit_transactions")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fromUtc\": null,\n \"toUtc\": null,\n \"featureTypes\": null,\n \"limit\": null,\n \"cursor\": null,\n \"userId\": null,\n \"source\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/list_credit_transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fromUtc\": null,\n \"toUtc\": null,\n \"featureTypes\": null,\n \"limit\": null,\n \"cursor\": null,\n \"userId\": null,\n \"source\": null\n}"
response = http.request(request)
puts response.read_body{
"summary": "<string>",
"teamId": "<string>",
"effectiveFilters": {
"fromUtc": "2023-11-07T05:31:56Z",
"toUtc": "2023-11-07T05:31:56Z",
"featureTypes": [
"email_unlock"
],
"statuses": [
"reserved"
],
"userId": "<string>",
"source": "<string>"
},
"items": [
{
"id": "<string>",
"created": "2023-11-07T05:31:56Z",
"featureType": "email_unlock",
"cost": 123,
"type": "incoming",
"status": "reserved",
"isAdminChange": true,
"metadata": {},
"description": "<string>"
}
],
"cursor": "<string>",
"totalCount": 123
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}Authorizations
Body
application/json
Optional inclusive UTC lower bound for transaction creation time.
Optional inclusive UTC upper bound for transaction creation time.
Optional billing activity types to include. Omit or pass an empty array for all activities.
Available options:
email_unlock, email_verification, phone_unlock, messaging_generation, researcher_agent, qualification_agent, contact_enrichment, company_enrichment, signal Maximum transactions to return. Defaults to 10 and is capped at 50.
Cursor returned by a previous list_credit_transactions call.
Optional FirstTouch user id. When supplied, only transactions attributed to this user are returned.
Optional transaction source filter: Mcp, WebApp, Extension, PublicApi, or Unknown.

