{
  "data": {
    "a": {
      "slug": "factorial",
      "name": "Factorial",
      "vendor": "Everyday Software, S.L.",
      "vendorUrl": "https://factorial.com",
      "kind": "http-api",
      "category": "hr",
      "summary": "Factorial is an HR platform from Barcelona for employee records, time off, attendance, payroll data, recruiting and expenses. Agents reach it through a versioned REST API with API keys or OAuth 2.0, webhooks and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/factorial",
      "markdownUrl": "https://www.anchorterminal.com/tools/factorial.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/factorial.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/factorial.json",
      "repo": "https://github.com/factorialco/factorial-api-sdks",
      "license": "Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.factorialhr.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@factorialco/api-client"
        },
        {
          "registry": "pypi",
          "name": "factorial-api-client"
        }
      ],
      "auth": "mixed",
      "authNotes": "A company administrator creates credentials in Factorial's settings, with no registration or approval queue for a company's own use. An API key goes in `x-api-key`, grants every scope and does not expire. OAuth 2.0 apps use the authorisation code grant through Factorial ID (PKCE for public clients), choose from 33 scopes and receive 1-hour company or user tokens with a refresh token. A user token is limited by that employee's permission group. Integrations for other companies must use OAuth, with scopes agreed with Factorial. The MCP server uses OAuth with dynamic client registration and runs as the signed-in employee.",
      "pricing": "paid",
      "pricingNotes": "The pricing page says Factorial starts at $8 per user per month and asks for a tailored quote for everything else. The terms describe a free trial of at most 15 days granted at Factorial's discretion, and the sign-up page is drawn by script, so its conditions were not read. The demo API environment is provisioned by an account manager, so an agent cannot start without a customer account. Factorial One requests through the MCP server consume plan credits (https://factorial.com/pricing, checked 2026-10-08).",
      "priceSummary": "$8 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI definition, the terms or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7,
        "npmWeekly": 1367,
        "pypiWeekly": 1075,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://apidoc.factorialhr.com",
      "llmsTxt": "https://apidoc.factorialhr.com/llms.txt",
      "openapi": "https://api.factorialhr.com/oas/",
      "capabilities": [
        "hr.employees",
        "hr.time-off",
        "hr.org",
        "hr.documents",
        "recruiting.applications",
        "recruiting.jobs",
        "recruiting.candidates",
        "spend.expenses",
        "tasks.create"
      ],
      "tags": [
        "hosted",
        "paid",
        "sales-led",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "typescript",
        "python",
        "status-page",
        "sla",
        "bug-bounty",
        "soc2",
        "eu"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 239,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 58,
          "maintenance": 84,
          "payments": 10,
          "reliability": 88,
          "schema": 77,
          "security": 65,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.",
        "bestFor": "An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.",
        "strengths": [
          "OpenAPI 3.1.0 definition at `https://api.factorialhr.com/oas/` with 615 operations and 137 webhook events, plus `llms.txt` and a Markdown twin of every docs page",
          "OAuth 2.0 with 33 scopes, PKCE for public clients, 1-hour access tokens and a revoke endpoint. User tokens are bound to an employee's permission group",
          "Time off can be requested, approved and rejected through the API (`/timeoff/leaves/approve` and `/timeoff/leaves/reject`)",
          "Dated API versions ship each quarter and are supported for one year, with release notes that mark removed endpoints and fields",
          "A 99.9 per cent monthly uptime commitment with a 5 per cent service credit is published in the trust centre, and the status page shows no incident since 1 June 2026"
        ],
        "weaknesses": [
          "An API key grants every scope, cannot be narrowed and does not expire",
          "No idempotency keys. The docs say the API does not deduplicate requests, so a blind retry can create a duplicate record",
          "A request to an unsupported API version is served in the oldest supported schema with no error",
          "The only published rate limit is 200 `POST` requests a minute, and no `Retry-After` header is documented",
          "The terms prohibit benchmarking, competitive evaluation and monitoring of availability, and pricing beyond a $8 starting figure is by quote"
        ],
        "agentNotes": [
          "Send an API key in `x-api-key` and an OAuth token in `Authorization: Bearer`. The key is JWT-formatted but is rejected as a bearer token",
          "Pin the version in the path, such as `/api/2026-10-01/resources/...`, and migrate within a year. Expired versions answer in an older schema without an error",
          "Treat a 200 with an empty body as a credential from the other environment. Production is `api.factorialhr.com` and demo is `api.eu2.demo.factorial.dev`",
          "Page with `limit=100` and pass `meta.end_cursor` as `after_id`. A larger limit is capped at 100",
          "Check whether a record exists before retrying a create. Retry only 429 and 5xx with backoff, and branch on `code` for 422 because messages are localised"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 58,
          "maintenance": 84,
          "payments": 10,
          "reliability": 88,
          "schema": 77,
          "security": 65,
          "transparency": 73
        },
        "provenanceScore": 82
      },
      "connect": {
        "install": "npm install @factorialco/api-client",
        "http": "curl --request GET \\\n     --url 'https://api.factorialhr.com/api/2026-10-01/resources/api_public/credentials' \\\n     --header 'accept: application/json' \\\n     --header 'x-api-key: \u003capi_key\u003e'"
      },
      "letme": {
        "capability": "https://letme.dev/hr.employees",
        "tool": "https://letme.dev/factorial"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starting price",
          "unit": "seat-month",
          "usd": 8,
          "note": "Headline figure on the pricing page. Plans are quoted by modules and company size"
        }
      ],
      "provenance": {
        "legalEntity": "Everyday Software, S.L.",
        "domain": "factorialhr.com",
        "domainRegistered": "2016-11-10",
        "endpointOnVendorDomain": true,
        "terms": "https://factorial.com/terms-of-use",
        "privacy": "https://factorial.com/privacy",
        "statusPage": "https://status.factorialhr.com",
        "changelog": "https://apidoc.factorialhr.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms and conditions of contract of the Factorial platform (last amended 12 December 2025) name EVERYDAY SOFTWARE, S.L., Carrer de Llacuna 56, Building C, 08005 Barcelona, tax number B-66854530, and its subsidiaries. They govern the platform and mention the public API in clause 13.8. No separate API terms were found.",
          "The privacy policy (last update January 2026) names the same company as controller and describes its role as processor for data that customers' employees enter on the platform. It refers to a Data Processing Agreement that we did not read.",
          "The API answers at api.factorialhr.com, OAuth at id.factorialhr.com and the MCP server at mcp.factorialhr.com. The marketing site factorialhr.com redirects to factorial.com.",
          "RDAP gives 2016-11-10 as the registration date of factorialhr.com and 1998-04-24 for factorial.com.",
          "factorialhr.com/.well-known/security.txt and factorial.com/.well-known/security.txt both returned 404. The trust centre has a vulnerability report form and names a HackerOne programme.",
          "The SLA linked from clause 11.2 of the terms resolves to the trust centre at trust.factorial.co."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/factorial.json",
      "live": {
        "slug": "factorial",
        "probe": {
          "target": "https://api.factorialhr.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:10.156668384Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 93,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 83,
          "p95ms24h": 165,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.factorialhr.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:04.681965883Z"
        },
        "updatedAt": "2026-10-08T21:12:10.156668384Z"
      }
    },
    "answer": "Factorial scores 66.3 (B) on agent readiness against Humaans's 54.4 (C), and leads in 5 of 7 scored categories. Humaans leads on security \u0026 auth.",
    "b": {
      "slug": "humaans",
      "name": "Humaans",
      "vendor": "Humaans Software UK Ltd",
      "vendorUrl": "https://humaans.io",
      "kind": "http-api",
      "category": "hr",
      "summary": "Humaans is an HR system of record for employee profiles, job roles, compensation, time away, timesheets, documents and equipment. Agents reach it through a REST API with scoped access tokens, signed webhooks and a hosted MCP server that uses OAuth.",
      "url": "https://www.anchorterminal.com/tools/humaans",
      "markdownUrl": "https://www.anchorterminal.com/tools/humaans.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/humaans.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/humaans.json",
      "license": "Proprietary service under Humaans' Terms of Service",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://app.humaans.io/api",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is granted by a customer, with no self-serve route for outsiders. A signed-in user creates an API access token in the Humaans app and sends it as a Bearer header. The token is limited by any of eight scopes and by its creator's role (Owner, Admin, Finance, Tech, Manager or User), can be set to expire after 1 to 365 days, and can be rotated with the old secret valid for up to seven days. The hosted MCP server at https://mcp.humaans.ai/mcp uses OAuth 2.0 with dynamic client registration and PKCE, signs the user in through a browser and follows that person's permissions, with 32 scopes chosen at connection.",
      "pricing": "paid",
      "pricingNotes": "No public prices. The Growth and Enterprise plans and the Athena agent platform all say Talk to sales, and the terms describe per-seat fees set in a sales agreement. No free tier or trial was found. Growth lists Integrations and API access. Enterprise adds Webhooks and a dedicated sandbox account, and integration builders can ask for a sandbox through a request form. The MCP server is included for all customers at no extra cost per the MCP page (https://humaans.io/pricing, checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API reference, the terms 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.humaans.io/api/",
      "capabilities": [
        "hr.employees",
        "hr.time-off",
        "hr.org",
        "hr.documents",
        "hr.onboarding"
      ],
      "tags": [
        "hosted",
        "sales-led",
        "api-key",
        "oauth",
        "mcp",
        "webhooks",
        "sandbox",
        "status-page",
        "soc2",
        "iso27001",
        "eu-hosted"
      ],
      "lastRelease": "2026-09-10",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 54.4,
        "grade": "C",
        "agentReady": false,
        "rank": 529,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 60,
          "maintenance": 56,
          "payments": 0,
          "reliability": 70,
          "schema": 44,
          "security": 70,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "API tokens are limited by eight scopes and the creator's role, can expire and can be rotated with a seven-day overlap, and rate limits are published with Retry-After on 429. No OpenAPI file, API changelog, official SDK or idempotency keys were found, and prices are by quote, so an agent needs a paying customer's token.",
        "bestFor": "An agent working for a company that already runs Humaans and needs to read and update profiles, job roles and compensation, book and approve time away, and attach documents with a token narrowed by scope.",
        "strengths": [
          "API tokens carry any of eight scopes, are capped by the creator's role, can expire after 1 to 365 days and rotate with a seven-day overlap",
          "Rate limit published as a token bucket of 40 refilling at 7 a second, with `X-RateLimit-*` headers and `Retry-After` on 429",
          "Time away requests can be approved or declined by setting `requestStatus` on `PATCH /api/time-away/:id`",
          "Incremental sync is documented, with `updatedAt` filters and tombstones for records deleted in the last 30 days",
          "DPA, sub-processor list with locations and 14 days' notice of changes are public, with SOC 2 Type II and ISO 27001:2022 stated"
        ],
        "weaknesses": [
          "No OpenAPI file or Markdown docs. The reference is one HTML page of about 2 MB",
          "No public price, free tier or trial. Growth and Enterprise both say Talk to sales",
          "No idempotency keys, and deletes are permanent with no confirmation step",
          "The API is unversioned with no API changelog, and the docs say unused APIs may be removed",
          "No official SDK found. The only npm package and MCP registry entry come from a third party"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer \u003ctoken\u003e` to https://app.humaans.io/api. Call `GET /api/token-info` first to read the token's scopes and expiry",
          "Expect a role limit as well as scopes. A token made by a user with the User role reads only public company data and that person's own profile",
          "Page with `$limit` (maximum 250) and `$skip`, and pass `-g` to curl because parameters use `$` and `[]`",
          "On 429 wait the seconds in `Retry-After`. The bucket holds 40 requests and refills at 7 a second per token",
          "Check state before retrying a POST. No idempotency key exists, and `DELETE /api/people/:id` cannot be undone"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 54.4
          }
        ],
        "editorialScores": {
          "ergonomics": 60,
          "maintenance": 56,
          "payments": 0,
          "reliability": 70,
          "schema": 44,
          "security": 70,
          "transparency": 65
        },
        "provenanceScore": 81
      },
      "connect": {
        "http": "curl https://app.humaans.io/api/me \\\n  -H 'Authorization: Bearer \u003cyour_api_access_token\u003e'"
      },
      "letme": {
        "capability": "https://letme.dev/hr.employees",
        "tool": "https://letme.dev/humaans"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "Humaans Software UK Ltd",
        "domain": "humaans.io",
        "domainRegistered": "2019-03-29",
        "endpointOnVendorDomain": true,
        "terms": "https://humaans.io/terms",
        "privacy": "https://humaans.io/privacy",
        "statusPage": "https://humaansstatus.io",
        "changelog": "https://humaans.io/blog/tag/product-updates",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Service (effective 6 October 2026) define Humaans as Humaans Software UK Ltd and govern the subscription and the platform, including access through the published APIs. They are governed by the laws of England and Wales.",
          "The privacy policy (effective 6 October 2026) names Humaans Software UK LTD, company number 11496946, Office 7, 35-37 Ludgate Hill, London EC4M 7JN. It covers data Humaans controls and says customer employee data is governed by the Data Processing Addendum at https://humaans.io/data-processing.",
          "The site footer reads Humaans Inc. with offices in London, New York and San Francisco. The legal documents name only the UK company.",
          "The API answers at https://app.humaans.io/api. The MCP server is on a second domain, mcp.humaans.ai, and names app.humaans.io as its authorisation server. The status page is on humaansstatus.io.",
          "humaans.io/.well-known/security.txt returns 404. The API reference gives security@humaans.io for reporting security issues.",
          "The changelog link is the product updates section of the blog. No API changelog was found.",
          "RDAP for humaans.io gives a registration date of 2019-03-29."
        ],
        "score": 81
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/humaans.json",
      "live": {
        "slug": "humaans",
        "probe": {
          "target": "https://app.humaans.io/api",
          "method": "get",
          "lastAt": "2026-10-08T21:12:12.266311232Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 44,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 47,
          "p95ms24h": 58,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://humaansstatus.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:38:41.212585168Z"
        },
        "updatedAt": "2026-10-08T21:12:12.266311232Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Everyday Software, S.L.",
        "b": "Humaans Software UK Ltd",
        "name": "Vendor"
      },
      {
        "a": "https://api.factorialhr.com",
        "b": "https://app.humaans.io/api",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT",
        "b": "Proprietary service under Humaans' Terms of Service",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-05",
        "b": "2026-09-10",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-10-06",
        "name": "Terms last updated"
      },
      {
        "a": "2026-01-01",
        "b": "2026-10-06",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "7 stars, 1.4k npm/wk, 1.1k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Factorial scores 66.3 (B) on agent readiness against Humaans's 54.4 (C), and leads in 5 of 7 scored categories. Humaans leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Factorial or Humaans?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Factorial and Humaans need an API key?"
      },
      {
        "answer": "Yes. Factorial has a hosted endpoint at https://api.factorialhr.com and Humaans at https://app.humaans.io/api.",
        "question": "Can an agent call Factorial and Humaans without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 88 against 70",
          "Schema \u0026 documentation, 77 against 44",
          "Payments \u0026 pricing, 10 against 0",
          "Maintenance \u0026 community, 84 against 56",
          "Transparency \u0026 trust, 78 against 73"
        ],
        "also": null,
        "goodFor": "An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.",
        "slug": "factorial",
        "watchFor": "An API key grants every scope, cannot be narrowed and does not expire"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 70 against 65"
        ],
        "also": null,
        "goodFor": "An agent working for a company that already runs Humaans and needs to read and update profiles, job roles and compensation, book and approve time away, and attach documents with a token narrowed by scope.",
        "slug": "humaans",
        "watchFor": "No OpenAPI file or Markdown docs. The reference is one HTML page of about 2 MB"
      }
    ],
    "job": {
      "capability": "hr.employees",
      "name": "Hr employees"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bamboohr-vs-factorial.json",
        "title": "BambooHR vs Factorial",
        "url": "https://www.anchorterminal.com/compare/bamboohr-vs-factorial"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bamboohr-vs-humaans.json",
        "title": "BambooHR vs Humaans",
        "url": "https://www.anchorterminal.com/compare/bamboohr-vs-humaans"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deel-vs-factorial.json",
        "title": "Deel vs Factorial",
        "url": "https://www.anchorterminal.com/compare/deel-vs-factorial"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deel-vs-humaans.json",
        "title": "Deel vs Humaans",
        "url": "https://www.anchorterminal.com/compare/deel-vs-humaans"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-hibob.json",
        "title": "Factorial vs HiBob",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-hibob"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-rippling.json",
        "title": "Factorial vs Rippling",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-rippling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/factorial-vs-zoho-people.json",
        "title": "Factorial vs Zoho People",
        "url": "https://www.anchorterminal.com/compare/factorial-vs-zoho-people"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hibob-vs-humaans.json",
        "title": "HiBob vs Humaans",
        "url": "https://www.anchorterminal.com/compare/hibob-vs-humaans"
      },
      {
        "json": "https://www.anchorterminal.com/compare/humaans-vs-rippling.json",
        "title": "Humaans vs Rippling",
        "url": "https://www.anchorterminal.com/compare/humaans-vs-rippling"
      },
      {
        "json": "https://www.anchorterminal.com/compare/humaans-vs-zoho-people.json",
        "title": "Humaans vs Zoho People",
        "url": "https://www.anchorterminal.com/compare/humaans-vs-zoho-people"
      }
    ],
    "scores": [
      {
        "by": 18,
        "edge": "factorial",
        "factorial": 88,
        "humaans": 70,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 33,
        "edge": "factorial",
        "factorial": 77,
        "humaans": 44,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 2,
        "edge": "humaans",
        "factorial": 58,
        "humaans": 60,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 5,
        "edge": "humaans",
        "factorial": 65,
        "humaans": 70,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "edge": "factorial",
        "factorial": 10,
        "humaans": 0,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 28,
        "edge": "factorial",
        "factorial": 84,
        "humaans": 56,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 5,
        "edge": "factorial",
        "factorial": 78,
        "humaans": 73,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Factorial scores 66.3 (B) on agent readiness against Humaans's 54.4 (C), and leads in 5 of 7 scored categories. Humaans leads on security \u0026 auth. Both do hr employees.",
    "verdicts": {
      "factorial": "A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.",
      "humaans": "API tokens are limited by eight scopes and the creator's role, can expire and can be rotated with a seven-day overlap, and rate limits are published with Retry-After on 429. No OpenAPI file, API changelog, official SDK or idempotency keys were found, and prices are by quote, so an agent needs a paying customer's token."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/factorial-vs-humaans",
    "json": "https://www.anchorterminal.com/compare/factorial-vs-humaans.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/factorial-vs-humaans.md",
    "slim": "https://www.anchorterminal.com/compare/factorial-vs-humaans.min.md"
  },
  "markdown": "Factorial scores 66.3 (B) on agent readiness against Humaans's 54.4 (C), and leads in 5 of 7 scored categories. Humaans leads on security \u0026 auth. Both do hr employees.\n\n- Factorial: grade B, 66.3/100, rank #239 of 722. Markdown https://www.anchorterminal.com/tools/factorial.md · JSON https://www.anchorterminal.com/api/v1/tools/factorial.json\n- Humaans: grade C, 54.4/100, rank #529 of 722. Markdown https://www.anchorterminal.com/tools/humaans.md · JSON https://www.anchorterminal.com/api/v1/tools/humaans.json\n\n## Which one, for what\n\n### Factorial (B)\n\nGood for: An agent working for a company that already runs Factorial and needs employee records, leave requests with approval, attendance clock-ins, recruiting or expenses through one API.\n\nAhead on:\n- Reliability, 88 against 70\n- Schema \u0026 documentation, 77 against 44\n- Payments \u0026 pricing, 10 against 0\n- Maintenance \u0026 community, 84 against 56\n- Transparency \u0026 trust, 78 against 73\n\nWatch for: An API key grants every scope, cannot be narrowed and does not expire\n\n### Humaans (C)\n\nGood for: An agent working for a company that already runs Humaans and needs to read and update profiles, job roles and compensation, book and approve time away, and attach documents with a token narrowed by scope.\n\nAhead on:\n- Security \u0026 auth, 70 against 65\n\nWatch for: No OpenAPI file or Markdown docs. The reference is one HTML page of about 2 MB\n\n\n## Score by category\n\n| Category | Weight | Factorial | Humaans | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 88 | 70 | Factorial +18 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 44 | Factorial +33 |\n| Agent ergonomics | 13% (16.2 this run) | 58 | 60 | Humaans +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 65 | 70 | Humaans +5 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 0 | Factorial +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 84 | 56 | Factorial +28 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 73 | Factorial +5 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **54.4 · C** | |\n\n## Facts side by side\n\n| Fact | Factorial | Humaans |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Everyday Software, S.L. | Humaans Software UK Ltd |\n| Hosted endpoint | `https://api.factorialhr.com` | `https://app.humaans.io/api` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under Factorial's terms and conditions. The TypeScript and Python SDKs are MIT | Proprietary service under Humaans' Terms of Service |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-10-05 | 2026-09-10 |\n| Terms last updated | no date given | 2026-10-06 |\n| Privacy policy last updated | 2026-01-01 | 2026-10-06 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 7 stars, 1.4k npm/wk, 1.1k PyPI/wk | none |\n\n## Verdicts\n\n**Factorial.** A public OpenAPI 3.1 definition covers 615 operations, including leave approval and employee termination, and OAuth apps can be limited to 33 scopes. API keys always grant every scope and never expire. No idempotency keys exist, and a request to an expired API version is answered in an older schema with no error.\n\n**Humaans.** API tokens are limited by eight scopes and the creator's role, can expire and can be rotated with a seven-day overlap, and rate limits are published with Retry-After on 429. No OpenAPI file, API changelog, official SDK or idempotency keys were found, and prices are by quote, so an agent needs a paying customer's token.\n\n## Before you call either\n\n### Factorial\n\n1. Send an API key in `x-api-key` and an OAuth token in `Authorization: Bearer`. The key is JWT-formatted but is rejected as a bearer token\n2. Pin the version in the path, such as `/api/2026-10-01/resources/...`, and migrate within a year. Expired versions answer in an older schema without an error\n3. Treat a 200 with an empty body as a credential from the other environment. Production is `api.factorialhr.com` and demo is `api.eu2.demo.factorial.dev`\n4. Page with `limit=100` and pass `meta.end_cursor` as `after_id`. A larger limit is capped at 100\n5. Check whether a record exists before retrying a create. Retry only 429 and 5xx with backoff, and branch on `code` for 422 because messages are localised\n\n### Humaans\n\n1. Send `Authorization: Bearer \u003ctoken\u003e` to https://app.humaans.io/api. Call `GET /api/token-info` first to read the token's scopes and expiry\n2. Expect a role limit as well as scopes. A token made by a user with the User role reads only public company data and that person's own profile\n3. Page with `$limit` (maximum 250) and `$skip`, and pass `-g` to curl because parameters use `$` and `[]`\n4. On 429 wait the seconds in `Retry-After`. The bucket holds 40 requests and refills at 7 a second per token\n5. Check state before retrying a POST. No idempotency key exists, and `DELETE /api/people/:id` cannot be undone\n\n## Questions\n\n### Which is better for AI agents, Factorial or Humaans?\n\nFactorial scores 66.3 (B) on agent readiness against Humaans's 54.4 (C), and leads in 5 of 7 scored categories. Humaans leads on security \u0026 auth.\n\n### Do Factorial and Humaans need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Factorial and Humaans without installing anything?\n\nYes. Factorial has a hosted endpoint at https://api.factorialhr.com and Humaans at https://app.humaans.io/api.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/factorial-vs-humaans.json, and with the fewest tokens: https://www.anchorterminal.com/compare/factorial-vs-humaans.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"factorial\", \"b\": \"humaans\"}`. From a terminal: `anchor compare factorial humaans`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/factorial.json and https://www.anchorterminal.com/api/v1/tools/humaans.json\n\n## Other comparisons with Factorial or Humaans\n\n- [BambooHR vs Factorial](https://www.anchorterminal.com/compare/bamboohr-vs-factorial.md)\n- [BambooHR vs Humaans](https://www.anchorterminal.com/compare/bamboohr-vs-humaans.md)\n- [Deel vs Factorial](https://www.anchorterminal.com/compare/deel-vs-factorial.md)\n- [Deel vs Humaans](https://www.anchorterminal.com/compare/deel-vs-humaans.md)\n- [Factorial vs HiBob](https://www.anchorterminal.com/compare/factorial-vs-hibob.md)\n- [Factorial vs Rippling](https://www.anchorterminal.com/compare/factorial-vs-rippling.md)\n- [Factorial vs Zoho People](https://www.anchorterminal.com/compare/factorial-vs-zoho-people.md)\n- [HiBob vs Humaans](https://www.anchorterminal.com/compare/hibob-vs-humaans.md)\n- [Humaans vs Rippling](https://www.anchorterminal.com/compare/humaans-vs-rippling.md)\n- [Humaans vs Zoho People](https://www.anchorterminal.com/compare/humaans-vs-zoho-people.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": "Factorial vs Humaans",
        "url": ""
      }
    ],
    "description": "Factorial scores 66.3 (B) on agent readiness against Humaans's 54.4 (C), and leads in 5 of 7 scored categories. Humaans leads on security \u0026 auth. Both do hr employees. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Factorial B 66.3",
      "Humaans C 54.4",
      "scores"
    ],
    "h1": "Factorial vs Humaans",
    "image": "https://www.anchorterminal.com/assets/og/compare-factorial-vs-humaans.png",
    "path": "/compare/factorial-vs-humaans",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Factorial vs Humaans for AI agents, B 66.3 vs C 54.4 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/factorial-vs-humaans"
  },
  "tokens": {
    "markdown": 2050,
    "slim": 630
  },
  "version": 1
}
