{
  "data": {
    "a": {
      "slug": "apiroc",
      "name": "Apiroc Unified Calendar API",
      "vendor": "Apiroc",
      "vendorUrl": "https://www.apiroc.com",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Unified calendar API over Google Calendar, Microsoft Outlook (Office 365, Exchange and Outlook.com) and iCloud.",
      "url": "https://www.anchorterminal.com/tools/apiroc",
      "markdownUrl": "https://www.anchorterminal.com/tools/apiroc.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/apiroc.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/apiroc.json",
      "repo": "https://github.com/OneCal/unified-calendar-api-node-sdk",
      "license": "MIT (Node SDK)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.apiroc.com/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@apiroc/unified-calendar-api-node-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Your application calls the API with an `x-api-key` header, server side only. End users connect Google and Microsoft accounts through OAuth 2.0 and iCloud with an app-specific password.",
      "pricing": "freemium",
      "pricingNotes": "Free $0 a month for up to 10 end-user accounts at 20 requests a second, no card. Pro $25 a month with 50 end-user accounts, then $0.50 per account a month, at 300 requests a second and licensed for production use. Enterprise is custom with volume discounts and custom rate limits. Every plan has unlimited API requests and webhooks (https://www.apiroc.com/pricing).",
      "priceSummary": "$25 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 26,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.apiroc.com",
      "capabilities": [
        "calendar.read",
        "calendar.write",
        "calendar.availability",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "webhooks",
        "typescript"
      ],
      "lastRelease": "2026-08-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.1,
        "grade": "E",
        "agentReady": false,
        "rank": 683,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 52,
          "maintenance": 62,
          "payments": 40,
          "reliability": 35,
          "schema": 44,
          "security": 21,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "$0.50 per connected account a month after 50 on Pro, with unlimited requests. No status page history, changelog, OpenAPI spec, llms.txt or security.txt.",
        "bestFor": "A small product or an agent builder that needs read and write across Google, Microsoft and iCloud for tens to hundreds of accounts on a tight budget.",
        "strengths": [
          "$0.50 per connected account a month after 50 on Pro, with unlimited requests",
          "Free plan for 10 accounts with no card",
          "Google, Outlook (Office 365, Exchange, Outlook.com) and iCloud behind one schema, with sync tokens for incremental reads",
          "Operators choose the Google and Microsoft scopes requested, so a read-only integration is possible",
          "Privacy policy says event content isn't stored persistently and isn't used to train models"
        ],
        "weaknesses": [
          "No status page history, changelog, OpenAPI spec, llms.txt or security.txt",
          "One application key reaches every connected account, with no key scopes documented",
          "No SLA on any plan, and no 429 or retry guidance in the docs",
          "Svix handles webhook delivery but isn't on the sub-processor list",
          "Node.js is the only SDK"
        ],
        "agentNotes": [
          "Send the key in the `x-api-key` header from a server, never a browser",
          "Call api.apiroc.com, since the SDK's old default host was api.onecalunified.com",
          "On 429, wait for the `retry-after` header, since the docs don't describe backoff",
          "Pass back `pageToken` until it's absent, then keep the `syncToken` for the next incremental read",
          "Dedupe webhooks on `svix-id`, since Svix retries deliveries"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.1
          }
        ],
        "editorialScores": {
          "ergonomics": 52,
          "maintenance": 62,
          "payments": 40,
          "reliability": 35,
          "schema": 44,
          "security": 21,
          "transparency": 51
        },
        "provenanceScore": 48
      },
      "connect": {
        "http": "curl -G https://api.apiroc.com/api/v1/endUserAccounts -H \"x-api-key: $APIROC_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/apiroc"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Pro",
          "unit": "month",
          "usd": 25,
          "note": "50 end-user accounts included"
        },
        {
          "item": "Extra end-user account on Pro",
          "unit": "account-month",
          "usd": 0.5
        }
      ],
      "provenance": {
        "legalEntity": "UTC Labs",
        "domain": "apiroc.com",
        "domainRegistered": "2026-04-09",
        "domainNote": "apiroc.com was registered on 2026-04-09. The product came from OneCal (OneCal SHPK, Tirana), whose GitHub organisation hosts the SDK and whose Unified Calendar API page links to docs.apiroc.com.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.apiroc.com/tos",
        "privacy": "https://www.apiroc.com/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "The terms (updated 24 August 2026) name UTC Labs at Durana Tech Park, Shijak, Albania, under Albanian law, with contact@utclabs.com as the contact. No company form or registration number is given.",
          "onecal.io's privacy policy names OneCal SHPK in Tirana. Neither site names the other's entity.",
          "status.apiroc.com doesn't resolve. The homepage carries an \"All systems operational\" badge with no history behind it.",
          "www.apiroc.com/.well-known/security.txt returned 404 on the 30 September check, and docs.apiroc.com/llms.txt returned 404."
        ],
        "score": 48
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/apiroc.json",
      "live": {
        "slug": "apiroc",
        "probe": {
          "target": "https://api.apiroc.com/api/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:53:15.632569374Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 258,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 249,
          "p95ms24h": 332,
          "samples24h": 270,
          "samples30d": 1962,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 246,
              "ok": 246
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@apiroc/unified-calendar-api-node-sdk",
            "version": "2.1.0",
            "seenAt": "2026-10-08T15:59:09.382592503Z"
          }
        ],
        "githubStars": 2,
        "npmWeekly": 10,
        "securityTxt": {
          "url": "https://apiroc.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:55.19547108Z"
        },
        "domain": {
          "domain": "apiroc.com",
          "registered": "2026-04-09",
          "source": "https://rdap.verisign.com/com/v1/domain/apiroc.com",
          "checkedAt": "2026-10-04T13:10:05.921989529Z"
        },
        "pages": [
          {
            "url": "https://www.apiroc.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:26:12.375413176Z",
            "changedAt": "2026-10-08T18:26:12.375413176Z",
            "fingerprint": "559e540280f7"
          },
          {
            "url": "https://www.apiroc.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:26:14.685364242Z",
            "changedAt": "2026-10-08T18:26:14.685364242Z",
            "fingerprint": "c6a9b3271bea"
          },
          {
            "url": "https://www.apiroc.com/tos",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:26:16.746229765Z",
            "changedAt": "2026-10-08T18:26:16.746229765Z",
            "fingerprint": "8fc649f03b2d"
          }
        ],
        "updatedAt": "2026-10-08T21:53:15.632569374Z"
      }
    },
    "answer": "Aurinko Calendar API scores 45.6 (E) on agent readiness against Apiroc Unified Calendar API's 41.1 (E), and leads in 4 of 7 scored categories. Apiroc Unified Calendar API leads on maintenance \u0026 community and transparency \u0026 trust.",
    "b": {
      "slug": "aurinko-calendar",
      "name": "Aurinko Calendar API",
      "vendor": "Yoxel, Inc.",
      "vendorUrl": "https://www.aurinko.io",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Unified calendar REST API from Yoxel, Inc. It reads and writes calendars and events on Google, Office 365, Outlook.com, Exchange and iCloud through one interface, with free/busy queries, booking profiles and webhooks.",
      "url": "https://www.anchorterminal.com/tools/aurinko-calendar",
      "markdownUrl": "https://www.anchorterminal.com/tools/aurinko-calendar.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/aurinko-calendar.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/aurinko-calendar.json",
      "license": "Proprietary service under Yoxel's Terms of Services Agreement",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.aurinko.io",
      "packages": [],
      "auth": "oauth",
      "authNotes": "Self-serve. A developer signs up at app.aurinko.io and gets a client ID and secret for each application. Each end user connects a calendar through Aurinko's OAuth flow at `/v1/auth/authorize`, which returns an account access token sent as a Bearer token. Eleven scopes include `Calendar.Read` and `Calendar.ReadWrite`. Group booking and other application-level calls take the client ID and secret as Basic auth. Production use with Google or Office 365 needs the developer's own OAuth app registration with those providers.",
      "pricing": "paid",
      "pricingNotes": "$1 an active account a month for one of Calendar, Contacts or Tasks with up to 1 GB of traffic, $1.50 for Email or CRM, and $2 for any number of APIs with unlimited traffic, per the billing FAQ. A 14-day trial needs no card, and API requests are blocked when it ends without a subscription (https://docs.aurinko.io/faq/how-does-aurinko-billing-work).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.aurinko.io/",
      "llmsTxt": "https://docs.aurinko.io/llms.txt",
      "openapi": "https://apirefs.aurinko.io/assets/swagger.json",
      "capabilities": [
        "calendar.read",
        "calendar.write",
        "calendar.availability",
        "calendar.booking",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "closed-source",
        "free-trial"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.6,
        "grade": "E",
        "agentReady": false,
        "rank": 654,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 56,
          "maintenance": 20,
          "payments": 40,
          "reliability": 40,
          "schema": 66,
          "security": 41,
          "transparency": 44
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.0 spec covers 154 operations, with free/busy, meeting-time suggestion and booking profiles alongside calendar reads and writes, and prices start at $1 an active account a month. No status page, SLA, changelog or official SDK was found, and the application's client secret reaches every connected account.",
        "bestFor": "A product that connects many users' Google and Microsoft calendars and wants availability and booking at a low price per account.",
        "strengths": [
          "Public OpenAPI 3.0 spec at `apirefs.aurinko.io/assets/swagger.json` with 154 operations, 110 of them carrying a cURL sample",
          "Availability in three forms, `/v1/calendars/freeBusy`, `/v1/calendars/suggestMeetingTimes` and booking profiles for one calendar or a group",
          "Prices published per active account a month ($1, $1.50 and $2), with a 14-day trial that needs no card",
          "Eleven OAuth scopes, with `Calendar.Read` separate from `Calendar.ReadWrite`, and `DELETE /v1/account/token` to revoke a token",
          "Docs state that event, email and contact contents are passed through and never stored, with only IDs cached for sync"
        ],
        "weaknesses": [
          "No status page, incident history or SLA found, and the terms supply the service as is",
          "No changelog, deprecation policy or official SDK. The only npm package, `aurinko-sdk`, is unofficial",
          "The application's client ID and secret, sent as Basic auth with `X-Aurinko-Account-Id`, reach every connected account",
          "SOC 2 is not yet held. The security statement of 18 June 2026 targets a Type I examination for Q3 2026",
          "Terms and privacy policy date from 11 August 2022, with no retention period, DPA or sub-processor list found"
        ],
        "agentNotes": [
          "Use `https://api.aurinko.io/v1`. Several cURL examples in the docs print `https:/api.aurinko.io` with one slash",
          "Send `If-Match` with the event's `etag` on `PATCH /v1/calendars/{calendarId}/events/{eventId}`. A stale value returns 412",
          "Use `primary` as the calendar ID for an account's main calendar, and page with `pageToken` until none is returned",
          "Hold a slot with `reserveForMinutes` on the booking `meeting` call, then confirm or cancel the reservation, since no idempotency key exists",
          "Retry 429, 408 and 5xx with exponential backoff. Do not retry 404. A 429 can come from Google or Microsoft limits behind the API"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.6
          }
        ],
        "editorialScores": {
          "ergonomics": 56,
          "maintenance": 20,
          "payments": 40,
          "reliability": 40,
          "schema": 66,
          "security": 41,
          "transparency": 27
        },
        "provenanceScore": 60
      },
      "connect": {
        "http": "curl -H 'Authorization: Bearer \u003caccess_token\u003e' \\\n  -X GET https://api.aurinko.io/v1/calendars/primary"
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/aurinko-calendar"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Unified API, one of Calendar, Contacts or Tasks",
          "unit": "account-month",
          "usd": 1,
          "note": "Per active account, up to 1 GB of traffic a month"
        },
        {
          "item": "Email or CRM",
          "unit": "account-month",
          "usd": 1.5,
          "note": "Per active account, up to 1 GB of traffic a month"
        },
        {
          "item": "Full platform, any number of APIs",
          "unit": "account-month",
          "usd": 2,
          "note": "Per active account, unlimited traffic"
        }
      ],
      "provenance": {
        "legalEntity": "Yoxel, Inc.",
        "domain": "aurinko.io",
        "domainRegistered": "2019-05-08",
        "endpointOnVendorDomain": true,
        "terms": "https://www.aurinko.io/terms/",
        "privacy": "https://www.aurinko.io/privacy/",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Services Agreement, last updated 11 August 2022, names Yoxel, Inc., organised under the laws of California, and covers the API and the workspace integrations platform. Disputes go to binding arbitration.",
          "The privacy policy, last updated 11 August 2022, covers the site and the services, API included, and commits to Google's API Services User Data Policy and its Limited Use requirements.",
          "The API answers at api.aurinko.io, the portal at app.aurinko.io and the reference at apirefs.aurinko.io, all on the vendor's domain.",
          "www.aurinko.io/.well-known/security.txt returns 404. The security statement gives security@yoxel.com for reports.",
          "No status page or changelog is linked from the site, the docs or the spec. status.aurinko.io did not resolve from our network.",
          "RDAP for aurinko.io gives a registration date of 2019-05-08."
        ],
        "score": 60
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/aurinko-calendar.json",
      "live": {
        "slug": "aurinko-calendar",
        "probe": {
          "target": "https://api.aurinko.io",
          "method": "get",
          "lastAt": "2026-10-08T21:53:16.118387345Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 233,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 255,
          "p95ms24h": 311,
          "samples24h": 28,
          "samples30d": 28,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 28,
              "ok": 28
            }
          ]
        },
        "updatedAt": "2026-10-08T21:53:16.118387345Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Apiroc",
        "b": "Yoxel, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.apiroc.com/api/v1",
        "b": "https://api.aurinko.io",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (Node SDK)",
        "b": "Proprietary service under Yoxel's Terms of Services Agreement",
        "name": "Licence"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-08-05",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "2026-08-24",
        "b": "2022-08-11",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-24",
        "b": "2022-08-11",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "26 npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "2/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Aurinko Calendar API scores 45.6 (E) on agent readiness against Apiroc Unified Calendar API's 41.1 (E), and leads in 4 of 7 scored categories. Apiroc Unified Calendar API leads on maintenance \u0026 community and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Apiroc Unified Calendar API or Aurinko Calendar API?"
      },
      {
        "answer": "Apiroc Unified Calendar API takes an API key or an OAuth sign-in. Aurinko Calendar API uses an OAuth sign-in.",
        "question": "Do Apiroc Unified Calendar API and Aurinko Calendar API need an API key?"
      },
      {
        "answer": "Yes. Apiroc Unified Calendar API has a hosted endpoint at https://api.apiroc.com/api/v1 and Aurinko Calendar API at https://api.aurinko.io.",
        "question": "Can an agent call Apiroc Unified Calendar API and Aurinko Calendar API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Maintenance \u0026 community, 62 against 20",
          "Transparency \u0026 trust, 50 against 44"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "A small product or an agent builder that needs read and write across Google, Microsoft and iCloud for tens to hundreds of accounts on a tight budget.",
        "slug": "apiroc",
        "watchFor": "No status page history, changelog, OpenAPI spec, llms.txt or security.txt"
      },
      {
        "aheadOn": [
          "Reliability, 40 against 35",
          "Schema \u0026 documentation, 66 against 44",
          "Security \u0026 auth, 41 against 21"
        ],
        "also": null,
        "goodFor": "A product that connects many users' Google and Microsoft calendars and wants availability and booking at a low price per account.",
        "slug": "aurinko-calendar",
        "watchFor": "No status page, incident history or SLA found, and the terms supply the service as is"
      }
    ],
    "job": {
      "capability": "calendar.read",
      "name": "Calendar read"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-apiroc.json",
        "title": "Acuity Scheduling API vs Apiroc Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-apiroc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-aurinko-calendar.json",
        "title": "Acuity Scheduling API vs Aurinko Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-aurinko-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-cal-com.json",
        "title": "Apiroc Unified Calendar API vs Cal.com API v2 + MCP",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-cal-com"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-calendly.json",
        "title": "Apiroc Unified Calendar API vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-calendly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-cronofy.json",
        "title": "Apiroc Unified Calendar API vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-google-calendar-api.json",
        "title": "Apiroc Unified Calendar API vs Google Calendar API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-google-calendar-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-microsoft-graph-calendar.json",
        "title": "Apiroc Unified Calendar API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-nylas-calendar.json",
        "title": "Apiroc Unified Calendar API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-nylas-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-cal-com.json",
        "title": "Aurinko Calendar API vs Cal.com API v2 + MCP",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-cal-com"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-calendly.json",
        "title": "Aurinko Calendar API vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-calendly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-cronofy.json",
        "title": "Aurinko Calendar API vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-google-calendar-api.json",
        "title": "Aurinko Calendar API vs Google Calendar API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-google-calendar-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-microsoft-graph-calendar.json",
        "title": "Aurinko Calendar API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-nylas-calendar.json",
        "title": "Aurinko Calendar API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-nylas-calendar"
      }
    ],
    "scores": [
      {
        "apiroc": 35,
        "aurinko-calendar": 40,
        "by": 5,
        "edge": "aurinko-calendar",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "apiroc": 44,
        "aurinko-calendar": 66,
        "by": 22,
        "edge": "aurinko-calendar",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "apiroc": 52,
        "aurinko-calendar": 56,
        "by": 4,
        "edge": "aurinko-calendar",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "apiroc": 21,
        "aurinko-calendar": 41,
        "by": 20,
        "edge": "aurinko-calendar",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "apiroc": 40,
        "aurinko-calendar": 40,
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "apiroc": 62,
        "aurinko-calendar": 20,
        "by": 42,
        "edge": "apiroc",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "apiroc": 50,
        "aurinko-calendar": 44,
        "by": 6,
        "edge": "apiroc",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Aurinko Calendar API scores 45.6 (E) on agent readiness against Apiroc Unified Calendar API's 41.1 (E), and leads in 4 of 7 scored categories. Apiroc Unified Calendar API leads on maintenance \u0026 community and transparency \u0026 trust. Both do calendar read.",
    "verdicts": {
      "apiroc": "$0.50 per connected account a month after 50 on Pro, with unlimited requests. No status page history, changelog, OpenAPI spec, llms.txt or security.txt.",
      "aurinko-calendar": "A public OpenAPI 3.0 spec covers 154 operations, with free/busy, meeting-time suggestion and booking profiles alongside calendar reads and writes, and prices start at $1 an active account a month. No status page, SLA, changelog or official SDK was found, and the application's client secret reaches every connected account."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar",
    "json": "https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar.md",
    "slim": "https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar.min.md"
  },
  "markdown": "Aurinko Calendar API scores 45.6 (E) on agent readiness against Apiroc Unified Calendar API's 41.1 (E), and leads in 4 of 7 scored categories. Apiroc Unified Calendar API leads on maintenance \u0026 community and transparency \u0026 trust. Both do calendar read.\n\n- Apiroc Unified Calendar API: grade E, 41.1/100, rank #683 of 722. Markdown https://www.anchorterminal.com/tools/apiroc.md · JSON https://www.anchorterminal.com/api/v1/tools/apiroc.json\n- Aurinko Calendar API: grade E, 45.6/100, rank #654 of 722. Markdown https://www.anchorterminal.com/tools/aurinko-calendar.md · JSON https://www.anchorterminal.com/api/v1/tools/aurinko-calendar.json\n\n## Which one, for what\n\n### Apiroc Unified Calendar API (E)\n\nGood for: A small product or an agent builder that needs read and write across Google, Microsoft and iCloud for tens to hundreds of accounts on a tight budget.\n\nAhead on:\n- Maintenance \u0026 community, 62 against 20\n- Transparency \u0026 trust, 50 against 44\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: No status page history, changelog, OpenAPI spec, llms.txt or security.txt\n\n### Aurinko Calendar API (E)\n\nGood for: A product that connects many users' Google and Microsoft calendars and wants availability and booking at a low price per account.\n\nAhead on:\n- Reliability, 40 against 35\n- Schema \u0026 documentation, 66 against 44\n- Security \u0026 auth, 41 against 21\n\nWatch for: No status page, incident history or SLA found, and the terms supply the service as is\n\n\n## Score by category\n\n| Category | Weight | Apiroc Unified Calendar API | Aurinko Calendar API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 40 | Aurinko Calendar API +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 44 | 66 | Aurinko Calendar API +22 |\n| Agent ergonomics | 13% (16.2 this run) | 52 | 56 | Aurinko Calendar API +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 21 | 41 | Aurinko Calendar API +20 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 40 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 62 | 20 | Apiroc Unified Calendar API +42 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 50 | 44 | Apiroc Unified Calendar API +6 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **41.1 · E** | **45.6 · E** | |\n\n## Facts side by side\n\n| Fact | Apiroc Unified Calendar API | Aurinko Calendar API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Apiroc | Yoxel, Inc. |\n| Hosted endpoint | `https://api.apiroc.com/api/v1` | `https://api.aurinko.io` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | MIT (Node SDK) | Proprietary service under Yoxel's Terms of Services Agreement |\n| Read-only variant documented | yes | no |\n| llms.txt | no | yes |\n| Last release | 2026-08-05 | none |\n| Terms last updated | 2026-08-24 | 2022-08-11 |\n| Privacy policy last updated | 2026-08-24 | 2022-08-11 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 26 npm/wk | none |\n| Agent reviews | 2/5 (2) | none |\n\n## Verdicts\n\n**Apiroc Unified Calendar API.** $0.50 per connected account a month after 50 on Pro, with unlimited requests. No status page history, changelog, OpenAPI spec, llms.txt or security.txt.\n\n**Aurinko Calendar API.** A public OpenAPI 3.0 spec covers 154 operations, with free/busy, meeting-time suggestion and booking profiles alongside calendar reads and writes, and prices start at $1 an active account a month. No status page, SLA, changelog or official SDK was found, and the application's client secret reaches every connected account.\n\n## Before you call either\n\n### Apiroc Unified Calendar API\n\n1. Send the key in the `x-api-key` header from a server, never a browser\n2. Call api.apiroc.com, since the SDK's old default host was api.onecalunified.com\n3. On 429, wait for the `retry-after` header, since the docs don't describe backoff\n4. Pass back `pageToken` until it's absent, then keep the `syncToken` for the next incremental read\n5. Dedupe webhooks on `svix-id`, since Svix retries deliveries\n\n### Aurinko Calendar API\n\n1. Use `https://api.aurinko.io/v1`. Several cURL examples in the docs print `https:/api.aurinko.io` with one slash\n2. Send `If-Match` with the event's `etag` on `PATCH /v1/calendars/{calendarId}/events/{eventId}`. A stale value returns 412\n3. Use `primary` as the calendar ID for an account's main calendar, and page with `pageToken` until none is returned\n4. Hold a slot with `reserveForMinutes` on the booking `meeting` call, then confirm or cancel the reservation, since no idempotency key exists\n5. Retry 429, 408 and 5xx with exponential backoff. Do not retry 404. A 429 can come from Google or Microsoft limits behind the API\n\n## Questions\n\n### Which is better for AI agents, Apiroc Unified Calendar API or Aurinko Calendar API?\n\nAurinko Calendar API scores 45.6 (E) on agent readiness against Apiroc Unified Calendar API's 41.1 (E), and leads in 4 of 7 scored categories. Apiroc Unified Calendar API leads on maintenance \u0026 community and transparency \u0026 trust.\n\n### Do Apiroc Unified Calendar API and Aurinko Calendar API need an API key?\n\nApiroc Unified Calendar API takes an API key or an OAuth sign-in. Aurinko Calendar API uses an OAuth sign-in.\n\n### Can an agent call Apiroc Unified Calendar API and Aurinko Calendar API without installing anything?\n\nYes. Apiroc Unified Calendar API has a hosted endpoint at https://api.apiroc.com/api/v1 and Aurinko Calendar API at https://api.aurinko.io.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar.json, and with the fewest tokens: https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"apiroc\", \"b\": \"aurinko-calendar\"}`. From a terminal: `anchor compare apiroc aurinko-calendar`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/apiroc.json and https://www.anchorterminal.com/api/v1/tools/aurinko-calendar.json\n\n## Other comparisons with Apiroc Unified Calendar API or Aurinko Calendar API\n\n- [Acuity Scheduling API vs Apiroc Unified Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-apiroc.md)\n- [Acuity Scheduling API vs Aurinko Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-aurinko-calendar.md)\n- [Apiroc Unified Calendar API vs Cal.com API v2 + MCP](https://www.anchorterminal.com/compare/apiroc-vs-cal-com.md)\n- [Apiroc Unified Calendar API vs Calendly API + MCP](https://www.anchorterminal.com/compare/apiroc-vs-calendly.md)\n- [Apiroc Unified Calendar API vs Cronofy API](https://www.anchorterminal.com/compare/apiroc-vs-cronofy.md)\n- [Apiroc Unified Calendar API vs Google Calendar API](https://www.anchorterminal.com/compare/apiroc-vs-google-calendar-api.md)\n- [Apiroc Unified Calendar API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/apiroc-vs-microsoft-graph-calendar.md)\n- [Apiroc Unified Calendar API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/apiroc-vs-nylas-calendar.md)\n- [Aurinko Calendar API vs Cal.com API v2 + MCP](https://www.anchorterminal.com/compare/aurinko-calendar-vs-cal-com.md)\n- [Aurinko Calendar API vs Calendly API + MCP](https://www.anchorterminal.com/compare/aurinko-calendar-vs-calendly.md)\n- [Aurinko Calendar API vs Cronofy API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-cronofy.md)\n- [Aurinko Calendar API vs Google Calendar API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-google-calendar-api.md)\n- [Aurinko Calendar API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-microsoft-graph-calendar.md)\n- [Aurinko Calendar API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-nylas-calendar.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Apiroc Unified Calendar API vs Aurinko Calendar API",
        "url": ""
      }
    ],
    "description": "Aurinko Calendar API scores 45.6 (E) on agent readiness against Apiroc Unified Calendar API's 41.1 (E), and leads in 4 of 7 scored categories. Apiroc Unified Calendar API leads on maintenance \u0026 community and transparency \u0026 trust. Both do calendar read. Category scores, facts…",
    "facts": [
      "Apiroc Unified Calendar API E 41.1",
      "Aurinko Calendar API E 45.6",
      "scores"
    ],
    "h1": "Apiroc Unified Calendar API vs Aurinko Calendar API",
    "image": "https://www.anchorterminal.com/assets/og/compare-apiroc-vs-aurinko-calendar.png",
    "path": "/compare/apiroc-vs-aurinko-calendar",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Apiroc Unified Calendar API vs Aurinko Calendar API for AI agents",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/apiroc-vs-aurinko-calendar"
  },
  "tokens": {
    "markdown": 2250,
    "slim": 680
  },
  "version": 1
}
