Prowl
87/100
prowl
Benchmarked Oct 04, 2026

YNAB API Endpoints

Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details i

dataaiapi platform_profile
Benchmark Your API

Score Breakdown

Latency10/10
Parseability10/10
Documentation9/10
Token Efficiency9/10
Consistency8/10
Error Clarity8/10
First-Try Success8/10
Auth Simplicity6/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "platform",
  "base_url": "https://api.ynab.com/v1",
  "auth_method": "oauth2",
  "auth_config": {
    "type": "oauth2",
    "flows": {
      "authorization_code": {
        "authorization_url": "https://app.ynab.com/oauth/authorize",
        "token_url": "https://app.ynab.com/oauth/token"
      }
    },
    "scopes": [
      "read-only",
      "default"
    ],
    "notes": "Personal access tokens are also supported for personal use. OAuth is required for multi-user integrations."
  },
  "endpoints": [
    {
      "path": "/plans",
      "method": "GET",
      "description": "List all plans (budgets) the authenticated user has access to."
    },
    {
      "path": "/plans/{plan_id}",
      "method": "GET",
      "description": "Retrieve a specific plan."
    },
    {
      "path": "/plans/{plan_id}/settings",
      "method": "GET",
      "description": "Retrieve plan settings."
    },
    {
      "path": "/plans/{plan_id}/accounts",
      "method": "GET",
      "description": "List accounts in a plan."
    },
    {
      "path": "/plans/{plan_id}/accounts/{account_id}",
      "method": "GET",
      "description": "Retrieve a specific account."
    },
    {
      "path": "/plans/{plan_id}/categories",
      "method": "GET",
      "description": "List categories in a plan."
    },
    {
      "path": "/plans/{plan_id}/categories/{category_id}",
      "method": "GET",
      "description": "Retrieve a specific category."
    },
    {
      "path": "/plans/{plan_id}/months",
      "method": "GET",
      "description": "List budget months."
    },
    {
      "path": "/plans/{plan_id}/months/{month}",
      "method": "GET",
      "description": "Retrieve a specific budget month (format YYYY-MM-DD)."
    },
    {
      "path": "/plans/{plan_id}/transactions",
      "method": "GET",
      "description": "List transactions in a plan."
    },
    {
      "path": "/plans/{plan_id}/transactions",
      "method": "POST",
      "description": "Create one or more transactions."
    },
    {
      "path": "/plans/{plan_id}/transactions/{transaction_id}",
      "method": "GET",
      "description": "Retrieve a specific transaction."
    },
    {
      "path": "/plans/{plan_id}/transactions/{transaction_id}",
      "method": "PUT",
      "description": "Update a transaction."
    },
    {
      "path": "/plans/{plan_id}/transactions/{transaction_id}",
      "method": "DELETE",
      "description": "Delete a transaction."
    },
    {
      "path": "/plans/{plan_id}/scheduled_transactions",
      "method": "GET",
      "description": "List scheduled transactions."
    },
    {
      "path": "/plans/{plan_id}/payees",
      "method": "GET",
      "description": "List payees."
    },
    {
      "path": "/plans/{plan_id}/payee_locations",
      "method": "GET",
      "description": "List payee locations."
    },
    {
      "path": "/plans/{plan_id}/money_movements",
      "method": "GET",
      "description": "List money movements."
    },
    {
      "path": "/user",
      "method": "GET",
      "description": "Get information about the authenticated user."
    }
  ],
  "pricing_model": {
    "type": "freemium",
    "details": {
      "trial": "34-day free trial",
      "subscription": "Monthly or annual subscription required after trial",
      "api_access": "Included with subscription at no extra cost",
      "sharing": "Up to 6 people can share a subscription"
    }
  },
  "rate_limits": {
    "documented": true,
    "details": "YNAB enforces rate limits; specific limits are documented in the API documentation (typically 200 requests per hour per user). Over-limit returns HTTP 429."
  },
  "capabilities": [
    "Budget management (plans, months, categories)",
    "Account and transaction management",
    "Scheduled transactions",
    "Payee management",
    "Money movements between categories",
    "User info retrieval",
    "OAuth 2.0 authentication for third-party integrations",
    "Personal access tokens for personal use",
    "RESTful API with JSON responses",
    "HTTPS transport",
    "Meaningful HTTP status codes and error details"
  ],
  "raw_analysis": "YNAB (You Need A Budget) is a widely-adopted zero-based budgeting application with a mature, publicly documented REST API. The platform is aimed at individual consumers and households, with a growing presence in employee financial wellness programs. The API is versioned (v1), uses JSON over HTTPS, and supports OAuth 2.0 as well as personal access tokens, making it suitable for both third-party integrations and personal automation.\n\nThe API surfaces core budgeting entities: plans, accounts, categories, budget months, transactions, scheduled transactions, payees, and money movements. It supports read operations broadly and write operations for transactions, enabling use cases like automated transaction import, custom reporting dashboards, and integration with other personal finance tools.\n\nYNAB enforces documented rate limits and returns sta
Execute

1/3 tests passed

TestEndpointStatusLatency
website_uptimeGET /200190ms
robots_txtGET /robots.txt40160ms
llms_txtGET /llms.txt40158ms
Interpret
{
  "overall": 78,
  "dimensions": {
    "token_efficiency": 9.0,
    "first_try_success": 8.0,
    "response_parseability": 10.0,
    "error_clarity": 8.0,
    "doc_quality": 9.0,
    "auth_simplicity": 6.0,
    "latency": 10.0,
    "consistency": 8.5
  },
  "pricing_normalized": {
    "model": "freemium_subscription",
    "trial_days": 34,
    "api_included": true,
    "sharing_up_to": 6,
    "notes": "API access included with paid subscription at no extra cost; no separate API tier"
  },
  "issues": [
    "robots.txt and llms_txt endpoints return 401 Unauthorized, indicating no LLM-friendly discovery files — agents cannot self-discover capabilities via standard AI-agent conventions",
    "Auth requires OAuth 2.0 or personal access token, with no magic-link or agent-native identity flow (e.g., Sign in with Notlogin), adding onboarding friction",
    "Requires a paid subscription after 34-day trial for continued API access — no perpetual free API tier",
    "No llms.txt suggests limited optimization for agent-first discovery and navigation"
  ],
  "recommendations": [
    "Add an llms.txt file to make the API surface discoverable to AI agents without authentication",
    "Support agent-friendly auth (e.g., magic link or verified-identity provider like Notlogin) to reduce onboarding friction",
    "Expose an OpenAPI/Swagger spec in machine-readable format at a public URL to improve first-try success for agent integrations",
    "Document rate limits, status code semantics, and error catalog explicitly in public docs to improve error clarity score",
    "Consider a limited free tier for API access to reduce barrier for agent-recommended lightweight use cases"
  ]
}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
Unknown
SDKs
None listed
MCP Support
No

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<a href="https://prowl.world/service/ynab-api-endpoints">
  <img src="https://prowl.world/badge/ynab-api-endpoints.svg" height="56" alt="Agent-readiness on Prowl">
</a>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard