Aninaya · Integrations · Pro

Integrations & Webhooks

Aninaya Pro connects to your own automation stack — n8n, Zapier, Make, or anything that can serve JSON over HTTPS. Two directions, both under your control: an inbound inbox the app pulls transactions from, and outbound webhooks the app signs and sends to your endpoint.

Pro feature. Webhooks and the BYO automation inbox are part of Aninaya Pro. Your endpoint URLs and secrets are stored only on your device (Android Keystore); KaijuBytes runs no servers and never sees your data or your endpoints.

How it works — pull, never push

Nothing can push data into Aninaya. The app polls a URL you configure (Settings → Integrations → Inbound webhook inbox URL) with an HTTPS GET, parses the JSON it returns into proposals, and queues them in the review inbox — every imported transaction still needs your tap to commit. You can also trigger a poll manually with Pull now.

Inbound payload contract

Your endpoint answers GET with this shape (the same sample shown in-app):

{
  "schema_version": "1",
  "items": [
    {
      "id": "gmail-bill-2026-05-03-001",
      "source": "n8n:gmail-bills",
      "type": "outflow",
      "amount": 1299.50,
      "merchant": "Meralco",
      "account_id": "bpi-savings",
      "title": "May electric bill",
      "notes": "Parsed from Gmail bill via n8n",
      "created_at": "2026-05-03T10:45:00+08:00"
    }
  ]
}
Field Required Notes
amountYesPeso value with centavos as a number, e.g. 1299.50.
typeYesinflow · outflow · transfer (income/credit normalize to inflow).
idRecommendedStable external id — the dedup key. Use the source message/transaction id.
merchantRecommendedVendor / payee name.
created_atRecommendedISO 8601 with timezone; defaults to poll time when absent.
sourceOptionalFree-form origin tag, e.g. n8n:gmail-bills.
account_idOptionalYour Aninaya account id (list them from the in-app contract dialog).
title / notesOptionalContext shown on the proposal card.

The body may also be a bare array, or an object with an items, transactions, or data array.

Outbound webhooks

Aninaya can POST events to your endpoint (test events and chat-driven triggers today). Every request body is:

{
  "event": "aninaya.test",
  "sentAt": "2026-06-11T10:45:00.000Z",
  "payload": { "message": "Webhook test from Aninaya" }
}

When you set a secret, two headers are added so your workflow can verify authenticity and reject replays:

Verification in an n8n Code node:

const crypto = require('crypto');
const ts = $request.headers['x-kaiju-webhook-timestamp'];
const sig = $request.headers['x-kaiju-webhook-signature'];
const expected = 'sha256=' + crypto
  .createHmac('sha256', $env.KAIJU_WEBHOOK_SECRET)
  .update(ts + '.' + JSON.stringify($request.body))
  .digest('hex');
if (sig !== expected) throw new Error('Bad signature');

n8n in 6 steps — Gmail bills → Aninaya

  1. Download the sample workflow and import it in n8n (Workflows → Import from File).
  2. Connect your Gmail credential on the Gmail Trigger node and adjust the search filter to match your bill emails.
  3. Set a long random secret in the workflow's Check secret node (or an n8n env var) — this is the value your phone will send.
  4. Activate the workflow and copy the production URL of its Webhook node.
  5. In Aninaya: Settings → Integrations → Inbound webhook inbox URL → paste the URL; set the same secret; enable the secret header.
  6. Tap Pull now. Parsed bills appear as proposals in the review inbox — nothing commits without your approval.
Download n8n sample workflow (JSON) ↓

Aninaya Desktop

Aninaya Desktop (requires Pro) is the Windows companion app — pair it with the Aninaya app on your phone over your own Wi-Fi to view and edit your finances on a PC. LAN-only, opt-in pairing, no telemetry, and the same bring-your-own-AI posture as the phone app.

← Back to Aninaya