Skip to main content
POST
/
rules
/
run
Run transaction rules
curl --request POST \
  --url https://api.finta.io/v2/rules/run \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "ruleIds": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ]
}
'
import requests

url = "https://api.finta.io/v2/rules/run"

payload = { "ruleIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({ruleIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']})
};

fetch('https://api.finta.io/v2/rules/run', 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.finta.io/v2/rules/run",
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([
'ruleIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$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.finta.io/v2/rules/run"

payload := strings.NewReader("{\n \"ruleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
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.finta.io/v2/rules/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ruleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.finta.io/v2/rules/run")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ruleIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "scanned": 123,
  "matched": 123,
  "updated": 123
}
{
"error": {
"code": "STORAGE_MODE_REQUIRED",
"message": "<string>"
}
}
{
"error": "Missing or invalid Authorization header"
}
{
"error": {
"code": "STORAGE_MODE_REQUIRED",
"message": "<string>"
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded (10 requests/min on Standard plan)."
}
}

Authorizations

Authorization
string
header
required

Finta API key from the dashboard (Bearer token).

Body

application/json
ruleIds
string<uuid>[]

Specific rule IDs to run. Omit to run all active rules.

Response

Result of running the rules

scanned
integer
required

Number of transactions scanned

matched
integer
required

Number of transactions matched by a rule

updated
integer
required

Number of transactions updated