curl --request POST \
--url https://api.synci.io/api/v1/destinations/simplefin/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"all_accounts": true,
"financial_accounts": [
123
],
"enabled": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', all_accounts: true, financial_accounts: [123], enabled: true})
};
fetch('https://api.synci.io/api/v1/destinations/simplefin/connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.synci.io/api/v1/destinations/simplefin/connections"
payload = {
"name": "<string>",
"all_accounts": True,
"financial_accounts": [123],
"enabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.synci.io/api/v1/destinations/simplefin/connections",
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([
'name' => '<string>',
'all_accounts' => true,
'financial_accounts' => [
123
],
'enabled' => true
]),
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.synci.io/api/v1/destinations/simplefin/connections"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"all_accounts\": true,\n \"financial_accounts\": [\n 123\n ],\n \"enabled\": true\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))
}{
"message": "SimpleFIN connection created.",
"data": {
"id": "<string>",
"health": {
"status": "<string>",
"integrator_message": "<string>",
"failure_count": "<string>",
"transient_message": "<string>",
"transient_failure_count": "<string>",
"last_attempt_at": "<string>"
},
"name": "<string>",
"app": "<string>",
"enabled": "<string>",
"status": "<string>",
"setup_token": "<string>",
"setup_token_expires_at": "<string>",
"claimed_at": "<string>",
"revoked_at": "<string>",
"last_pulled_at": "<string>",
"all_accounts": true,
"financial_accounts": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>",
"accounts": [
{
"id": "<string>",
"financial_account_id": "<string>",
"name": "<string>",
"still_shared": "<string>",
"first_pulled_at": "<string>",
"last_pulled_at": "<string>"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Create new SimpleFIN connection
Creates a SimpleFIN destination and returns a one-time setup token. Paste
the token into the consumer app’s “Link bank account with SimpleFIN”
flow; it exchanges the token for pull credentials and then syncs the
exposed accounts on demand. app selects which app this connection is
presented as (Actual Budget by default); it does not change behavior.
curl --request POST \
--url https://api.synci.io/api/v1/destinations/simplefin/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"all_accounts": true,
"financial_accounts": [
123
],
"enabled": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', all_accounts: true, financial_accounts: [123], enabled: true})
};
fetch('https://api.synci.io/api/v1/destinations/simplefin/connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.synci.io/api/v1/destinations/simplefin/connections"
payload = {
"name": "<string>",
"all_accounts": True,
"financial_accounts": [123],
"enabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.synci.io/api/v1/destinations/simplefin/connections",
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([
'name' => '<string>',
'all_accounts' => true,
'financial_accounts' => [
123
],
'enabled' => true
]),
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.synci.io/api/v1/destinations/simplefin/connections"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"all_accounts\": true,\n \"financial_accounts\": [\n 123\n ],\n \"enabled\": true\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))
}{
"message": "SimpleFIN connection created.",
"data": {
"id": "<string>",
"health": {
"status": "<string>",
"integrator_message": "<string>",
"failure_count": "<string>",
"transient_message": "<string>",
"transient_failure_count": "<string>",
"last_attempt_at": "<string>"
},
"name": "<string>",
"app": "<string>",
"enabled": "<string>",
"status": "<string>",
"setup_token": "<string>",
"setup_token_expires_at": "<string>",
"claimed_at": "<string>",
"revoked_at": "<string>",
"last_pulled_at": "<string>",
"all_accounts": true,
"financial_accounts": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>",
"accounts": [
{
"id": "<string>",
"financial_account_id": "<string>",
"name": "<string>",
"still_shared": "<string>",
"first_pulled_at": "<string>",
"last_pulled_at": "<string>"
}
]
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Display name for the connection.
255Which SimpleFIN app this connection is for (drives the card, icon, and setup guide; no effect on protocol behavior).
actual_budget, other Expose every financial account the user owns, including ones connected in the future. When true, financial_accounts is ignored.
IDs of the financial accounts to expose.
Whether the connection is enabled. Disabled connections reject pulls.