curl --request GET \
--url https://api.yoshi.ai/v1/transactions \
--header 'Authorization: Bearer <token>'import os
from yoshi_sdk import Yoshi
client = Yoshi(
api_key=os.environ.get("YOSHI_API_KEY"), # This is the default and can be omitted
)
page = client.transactions.list()
page = page.data[0]
print(page.id)import Yoshi from '@yoshi-ai/sdk';
const client = new Yoshi({
apiKey: process.env['YOSHI_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const transactionListResponse of client.transactions.list()) {
console.log(transactionListResponse.id);
}package main
import (
"context"
"fmt"
"github.com/yoshi-ai-dev/yoshi-go"
"github.com/yoshi-ai-dev/yoshi-go/option"
)
func main() {
client := yoshi.NewClient(
option.WithAPIKey("My API Key"),
)
page, err := client.Transactions.List(context.TODO(), yoshi.TransactionListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
yoshi transactions list \
--api-key 'My API Key'{
"data": [
{
"id": "<string>",
"updated_at": "<string>",
"account_id": "<string>",
"account_name": "<string>",
"amount": 123,
"amount_absolute": 123,
"cash_flow_direction": "<string>",
"is_internal_transfer": true,
"pending": true,
"date_posted": "<string>",
"date_authorized": "<string>",
"category_label": "<string>",
"category_tier1": "<string>",
"category_tier2": "<string>",
"counterparty_name": "<string>",
"counterparty_logo_url": "<string>",
"original_description": "<string>"
}
],
"pagination": {
"count": 123,
"has_more": true,
"next_cursor": "<string>",
"total_count": 123,
"limit": 123
},
"meta": {
"request_id": "req_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2026-04-10T12:00:00.000Z"
}
}List transactions
Sync transactions for the authenticated user with cursor-based pagination and optional date backfill filters.
curl --request GET \
--url https://api.yoshi.ai/v1/transactions \
--header 'Authorization: Bearer <token>'import os
from yoshi_sdk import Yoshi
client = Yoshi(
api_key=os.environ.get("YOSHI_API_KEY"), # This is the default and can be omitted
)
page = client.transactions.list()
page = page.data[0]
print(page.id)import Yoshi from '@yoshi-ai/sdk';
const client = new Yoshi({
apiKey: process.env['YOSHI_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const transactionListResponse of client.transactions.list()) {
console.log(transactionListResponse.id);
}package main
import (
"context"
"fmt"
"github.com/yoshi-ai-dev/yoshi-go"
"github.com/yoshi-ai-dev/yoshi-go/option"
)
func main() {
client := yoshi.NewClient(
option.WithAPIKey("My API Key"),
)
page, err := client.Transactions.List(context.TODO(), yoshi.TransactionListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
yoshi transactions list \
--api-key 'My API Key'{
"data": [
{
"id": "<string>",
"updated_at": "<string>",
"account_id": "<string>",
"account_name": "<string>",
"amount": 123,
"amount_absolute": 123,
"cash_flow_direction": "<string>",
"is_internal_transfer": true,
"pending": true,
"date_posted": "<string>",
"date_authorized": "<string>",
"category_label": "<string>",
"category_tier1": "<string>",
"category_tier2": "<string>",
"counterparty_name": "<string>",
"counterparty_logo_url": "<string>",
"original_description": "<string>"
}
],
"pagination": {
"count": 123,
"has_more": true,
"next_cursor": "<string>",
"total_count": 123,
"limit": 123
},
"meta": {
"request_id": "req_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2026-04-10T12:00:00.000Z"
}
}Authorizations
A Yoshi API key from Settings → API Keys, or a Yoshi OAuth access token issued by Sign in with Yoshi.
Query Parameters
Opaque cursor from a previous response
Items per page (1-100, default 50)
1 <= x <= 100Filter by account ID
Inclusive posted-date lower bound
^\d{4}-\d{2}-\d{2}$Inclusive posted-date upper bound
^\d{4}-\d{2}-\d{2}$Response
Transactions retrieved.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Number of items in the current page (equals data.length).
Opaque cursor for the next page; pass back as cursor. null when there are no more pages.
Total items across all pages. Present only when the source can compute it.
Page size requested for this page. Present only when the endpoint echoes its limit.
Was this page helpful?