{
  "data": {
    "a": {
      "slug": "salsa",
      "name": "Salsa",
      "vendor": "Salsa Software Inc.",
      "vendorUrl": "https://www.salsa.dev",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Embedded payroll from Salsa Software Inc. for software platforms. A partner's backend onboards employers and workers, sends pay data, previews and confirms payroll runs and reads pay statements through a REST API, while Salsa files taxes and moves money.",
      "url": "https://www.anchorterminal.com/tools/salsa",
      "markdownUrl": "https://www.anchorterminal.com/tools/salsa.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/salsa.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/salsa.json",
      "license": "Proprietary service. The website Terms of Use are public and the partner agreement isn't. The browser library @salsa-payroll/salsa-js on npm is MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.salsa.dev/api/rest/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@salsa-payroll/salsa-js"
        }
      ],
      "auth": "api-key",
      "authNotes": "A partner receives two bearer API tokens from Salsa after a sales contact, one for the sandbox and one for production. The docs say these tokens grant many privileges. From them a backend mints user tokens (JWT) at POST /api/rest/v1/auth/token, each with one of 12 roles in three tiers (basic, admin, super-admin, with onboarding variants), a list of up to 125 employers and a lifetime of 60 minutes by default, or up to 30 days for onboarding roles. Role limits are enforced at the API. No self-serve key page or key rotation procedure was found in the docs. This is embedded-payroll partner access. Salsa has no route into an employer's existing payroll account at another provider.",
      "pricing": "paid",
      "pricingNotes": "No public prices. salsa.dev has no pricing page (www.salsa.dev/pricing returns 404) and access starts with a contact form. The sandbox is issued by Salsa on request, so an agent can't start without a person contacting sales, and no free tier or trial was found. A Usage API reports confirmed payroll runs, worker payments, workers paid and tax filings per employer so a partner can bill its own customers, with no unit price published (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the OpenAPI spec or the website (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 435,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.salsa.dev",
      "llmsTxt": "https://docs.salsa.dev/llms.txt",
      "openapi": "https://docs.salsa.dev/openapi/salsadev.yaml",
      "capabilities": [
        "payroll.run",
        "payroll.embedded",
        "payroll.employees",
        "payroll.tax-filing",
        "payroll.contractors"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "sales-led",
        "partner-access",
        "soc2"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 46.1,
        "grade": "D",
        "agentReady": false,
        "rank": 651,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 48,
          "maintenance": 50,
          "payments": 5,
          "reliability": 36,
          "schema": 73,
          "security": 56,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Salsa is reached as an embedded-payroll partner, not through an employer's existing payroll account. The REST API has a public OpenAPI 3.1 spec with 123 operations, a payroll preview, a separate confirm step and short-lived user tokens limited by role. Access starts with a sales conversation, and no public price, self-serve sandbox, status page or API changelog was found.",
        "bestFor": "A software platform that wants to sell payroll to its own business customers and can sign a partner agreement, with Salsa handling tax filing and money movement.",
        "strengths": [
          "Public OpenAPI 3.1 spec with 123 operations and 78 webhook events, last modified 7 October 2026, plus llms.txt and a Markdown copy of every docs page",
          "A payroll run is previewed, created as PENDING and paid only after a separate confirm call. A pending run can be deleted",
          "User tokens last 60 minutes by default, carry one of 12 roles in three tiers and name the employers they cover",
          "Audit entries record who changed what and when, with the actor shown as a user, an API client or the system",
          "Sandbox at api.sandbox.salsa.dev with mock-onboard endpoints that fill in employer and worker details for tests"
        ],
        "weaknesses": [
          "API tokens come from Salsa after a sales contact. No self-serve signup, public price, free tier or trial was found",
          "No status page, SLA, API changelog or deprecation policy was found on salsa.dev or docs.salsa.dev",
          "No Idempotency-Key header. The rate-limit page names 429 with no Retry-After or backoff guidance",
          "No server-side SDK. The only official package is the browser library Salsa.js, last published on 11 December 2025",
          "The signup link used across the docs, www.salsa.dev/get-a-demo, returned 404 on 8 October 2026",
          "No security.txt, disclosure policy, DPA or subprocessor list was found. SOC 2 Type 2 appears only as a badge image"
        ],
        "agentNotes": [
          "Use the sandbox token against https://api.sandbox.salsa.dev and the production token against https://api.salsa.dev. Each environment has its own token",
          "Call POST /payroll-runs/preview before creating a run, then confirm the PENDING run in a separate call. Confirming starts the employer debit",
          "Send your own externalId on every create. A repeat returns a uniqueness error, which is the only duplicate protection",
          "Make sure externalId values are unique across all employers, since each entity type has one namespace",
          "Mint a user token with the lowest role and the fewest employerIds the task needs, and keep the partner token on the server"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 46.1
          }
        ],
        "editorialScores": {
          "ergonomics": 48,
          "maintenance": 50,
          "payments": 5,
          "reliability": 36,
          "schema": 73,
          "security": 56,
          "transparency": 31
        },
        "provenanceScore": 70
      },
      "connect": {
        "http": "curl --location --request GET 'https://api.sandbox.salsa.dev/api/rest/v1/partner-pay-types' \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer ${YOUR_API_TOKEN}'"
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/salsa"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Salsa Software Inc.",
        "domain": "salsa.dev",
        "domainRegistered": "2021-08-06",
        "endpointOnVendorDomain": true,
        "terms": "https://www.salsa.dev/terms-of-use",
        "privacy": "https://www.salsa.dev/privacy-policy",
        "statusPage": "",
        "changelog": "https://www.salsa.dev/blog-category/product-updates",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The privacy policy (last modified 24 September 2025) names Salsa Software Inc., 169 Madison Ave #38368, New York, NY 10016, and says it doesn't cover data processed on behalf of platforms, which is governed by Salsa's agreements with them.",
          "The Terms of Use are dated 7 April 2022 and governed by California law. The partner agreement that covers API use isn't public.",
          "www.salsa.dev/.well-known/security.txt and docs.salsa.dev/.well-known/security.txt return 404.",
          "No status page is linked from salsa.dev or docs.salsa.dev. status.salsa.dev didn't connect. salsa.statuspage.io exists with two components marked \"(example)\" and a last update of 4 November 2022, and nothing ties it to this company.",
          "The changelog link is the product updates category of the blog, whose newest entry is 11 February 2026. docs.salsa.dev/changelog returns 404.",
          "RDAP for salsa.dev gives a registration date of 2021-08-06 and Squarespace Domains II LLC as registrar."
        ],
        "score": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/salsa.json",
      "live": {
        "slug": "salsa",
        "probe": {
          "target": "https://api.salsa.dev/api/rest/v1",
          "method": "get",
          "lastAt": "2026-10-08T19:53:01.204301984Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 467,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 455,
          "p95ms24h": 517,
          "samples24h": 50,
          "samples30d": 50,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@salsa-payroll/salsa-js",
            "version": "0.3.0",
            "seenAt": "2026-10-08T16:28:07.049435331Z"
          }
        ],
        "npmWeekly": 435,
        "securityTxt": {
          "url": "https://salsa.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:49.425969804Z"
        },
        "pages": [
          {
            "url": "https://www.salsa.dev/blog-category/product-updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:07.056601151Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6c036ec0ed44"
          },
          {
            "url": "https://www.salsa.dev/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:09.140715304Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "08a0e2898a35"
          },
          {
            "url": "https://www.salsa.dev/terms-of-use",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:11.191316869Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3bb24864bd0f"
          }
        ],
        "updatedAt": "2026-10-08T19:53:01.204301984Z"
      }
    },
    "answer": "Salsa and Zeal score within a point of each other on agent readiness, 46.1 (D) and 45.4 (E). Zeal leads on reliability, agent ergonomics and maintenance \u0026 community.",
    "b": {
      "slug": "zeal",
      "name": "Zeal",
      "vendor": "Puzzl Group Inc.",
      "vendorUrl": "https://www.zeal.com",
      "kind": "http-api",
      "category": "payroll",
      "summary": "Zeal is an embedded payroll API for US staffing platforms, labour marketplaces and workforce software. Partners create employer companies, onboard W-2 employees and 1099 contractors, create pay cheques and contractor payments, preview payroll and pull reports.",
      "url": "https://www.anchorterminal.com/tools/zeal",
      "markdownUrl": "https://www.anchorterminal.com/tools/zeal.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zeal.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zeal.json",
      "repo": "https://github.com/zeal-corp/typescript-sdk",
      "license": "Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.zeal.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@zeal-api/sdk"
        },
        {
          "registry": "pypi",
          "name": "zeal-api-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "API keys, issued only to Zeal partners. Zeal's team creates the partner account after a demo request, then the Partner Dashboard at app.zeal.com shows one Test API key, one Production API key and the `partnerID`. Every call sends `Authorization: Bearer {apiKey}`, and most also need a `companyID`. A key covers every employer company under the partner, has no scopes, and is rolled from the dashboard, which invalidates the old key at once. Production payroll is switched on by Zeal (error code 0 until then). The agent chat and MCP endpoints need a key that Zeal has Agent-enabled. This is embedded-payroll partner access. An employer has no separate API route into its own Zeal payroll account.",
      "pricing": "paid",
      "pricingNotes": "No public prices. www.zeal.com/pricing returns 404 and every call to action asks for a demo. A test environment that moves no money exists, but its key comes only after Zeal creates a partner account, so an agent cannot start without a sales contact. No free tier or self-serve trial was found (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms-full.txt, the OpenAPI specs or the marketing site (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 8,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.zeal.com",
      "llmsTxt": "https://docs.zeal.com/llms.txt",
      "openapi": "https://docs.zeal.com/openapi/zeal-api.json",
      "capabilities": [
        "payroll.run",
        "payroll.embedded",
        "payroll.employees",
        "payroll.contractors",
        "payroll.tax-filing",
        "hr.onboarding"
      ],
      "tags": [
        "hosted",
        "api-key",
        "openapi",
        "llms-txt",
        "typescript",
        "python",
        "webhooks",
        "sandbox",
        "sales-led",
        "partner-only",
        "us-only",
        "soc2",
        "mcp"
      ],
      "lastRelease": "2026-07-31",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.4,
        "grade": "E",
        "agentReady": false,
        "rank": 658,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 61,
          "payments": 0,
          "reliability": 42,
          "schema": 68,
          "security": 34,
          "transparency": 51
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found.",
        "bestFor": "A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.",
        "strengths": [
          "Public OpenAPI 3.1 specs with 177 operations, plus llms.txt, llms-full.txt and a Markdown copy of every docs page",
          "Test keys run payroll end to end with no money moved and no tax filings, in an environment separate from production",
          "Preview endpoints return the gross-to-net breakdown before processing, and `approval_required` holds a cheque until `approved` is set",
          "`x-idempotency-key` header honoured for 24 hours, and 116 numbered error codes with messages",
          "Fern-generated TypeScript and Python SDKs (0.2.1, July 2026) that retry 408, 429 and 5xx with backoff"
        ],
        "weaknesses": [
          "No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published",
          "One test key and one production key per partner account, with no scopes and no read-only key",
          "No status page found, and the changelog linked from the home page and llms.txt returns 404",
          "The API has no version in the path or a header, and the main spec has 18 operations with no summary",
          "Webhooks carry the shared secret itself in `Puzzl-Signature`, not a signature of the payload",
          "No security.txt, disclosure policy, sub-processor list or DPA found on the public site"
        ],
        "agentNotes": [
          "Use the Test API key until a person has approved live payroll. Error code 0 (403) means the account has no production access",
          "Send `companyID` on almost every call and `partnerID` on partner-level calls, in the body for POST and PATCH and the query for GET",
          "Create cheques with `approval_required: true`, run POST /preview/checks, then PATCH /employeeCheck with `approved: true`. Without the flag Zeal processes pending cheques automatically",
          "Send `x-idempotency-key` on every create so a retry within 24 hours doesn't pay twice",
          "Previews and reports are jobs. Keep the `job_id` and poll GET /preview or GET /reports, or wait for the Job Queue webhook",
          "Check dates must be bank days and submitted before 2 PM Pacific two bank days ahead, or the call fails with code 89"
        ],
        "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.4
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 61,
          "payments": 0,
          "reliability": 42,
          "schema": 68,
          "security": 34,
          "transparency": 38
        },
        "provenanceScore": 64
      },
      "connect": {
        "install": "npm i -s @zeal-api/sdk",
        "http": "curl --request GET \\\n     --url 'https://api.zeal.com/companies?partnerID=YOUR_PARTNER_ID' \\\n     --header 'Accept: application/json' \\\n     --header 'Authorization: Bearer YOUR_API_KEY'"
      },
      "letme": {
        "capability": "https://letme.dev/payroll.run",
        "tool": "https://letme.dev/zeal"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Puzzl Group Inc.",
        "domain": "zeal.com",
        "domainRegistered": "1995-07-03",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zeal.com/legal?tab=terms-of-service",
        "privacy": "https://www.zeal.com/legal?tab=privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The legal page names Puzzl Group Inc., a Delaware corporation, 80 Langton Street, San Francisco, CA 94103. Its privacy notice was last updated on 16 January 2026.",
          "The API answers at https://api.zeal.com and docs at docs.zeal.com (hosted on Mintlify). The help centre at support.zeal.com runs on Pylon.",
          "www.zeal.com/.well-known/security.txt and docs.zeal.com/.well-known/security.txt return 404.",
          "No status page is linked from the site, the docs or the help centre. status.zeal.com did not complete a TLS handshake on 8 October 2026.",
          "The changelog URL the site advertises, https://docs.zeal.com/changelog, returns 404, so the field is left empty.",
          "The legal page says banking services come from Bangor Savings Bank, Member FDIC.",
          "RDAP for zeal.com gives a registration date of 1995-07-03 and GoDaddy.com, LLC as registrar."
        ],
        "score": 64
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zeal.json",
      "live": {
        "slug": "zeal",
        "probe": {
          "target": "https://api.zeal.com",
          "method": "get",
          "lastAt": "2026-10-08T19:53:07.16387972Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 626,
          "authRequired": false,
          "uptime24h": 98,
          "uptime30d": 98,
          "p50ms24h": 604,
          "p95ms24h": 700,
          "samples24h": 50,
          "samples30d": 50,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 49
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@zeal-api/sdk",
            "version": "0.2.1",
            "seenAt": "2026-10-08T16:35:37.1323379Z"
          },
          {
            "registry": "pypi",
            "name": "zeal-api-sdk",
            "version": "0.2.1",
            "released": "2026-07-31",
            "seenAt": "2026-10-08T16:35:39.815769205Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 8,
        "pypiWeekly": 4,
        "securityTxt": {
          "url": "https://zeal.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:30.40067532Z"
        },
        "pages": [
          {
            "url": "https://www.zeal.com/legal?tab=privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:31:44.751983613Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca2c8021bf60"
          },
          {
            "url": "https://www.zeal.com/legal?tab=terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:31:46.842036275Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ca2c8021bf60"
          }
        ],
        "updatedAt": "2026-10-08T19:53:07.16387972Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Salsa Software Inc.",
        "b": "Puzzl Group Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.salsa.dev/api/rest/v1",
        "b": "https://api.zeal.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service. The website Terms of Use are public and the partner agreement isn't. The browser library @salsa-payroll/salsa-js on npm is MIT",
        "b": "Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-07-31",
        "name": "Last release"
      },
      {
        "a": "2022-04-07",
        "b": "2026-01-16",
        "name": "Terms last updated"
      },
      {
        "a": "2025-09-24",
        "b": "2026-01-16",
        "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": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "435 npm/wk",
        "b": "0 stars, 8 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Salsa and Zeal score within a point of each other on agent readiness, 46.1 (D) and 45.4 (E). Zeal leads on reliability, agent ergonomics and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Salsa or Zeal?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Salsa and Zeal need an API key?"
      },
      {
        "answer": "Yes. Salsa has a hosted endpoint at https://api.salsa.dev/api/rest/v1 and Zeal at https://api.zeal.com.",
        "question": "Can an agent call Salsa and Zeal without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 73 against 68",
          "Security \u0026 auth, 56 against 34",
          "Payments \u0026 pricing, 5 against 0"
        ],
        "also": null,
        "goodFor": "A software platform that wants to sell payroll to its own business customers and can sign a partner agreement, with Salsa handling tax filing and money movement.",
        "slug": "salsa",
        "watchFor": "API tokens come from Salsa after a sales contact. No self-serve signup, public price, free tier or trial was found"
      },
      {
        "aheadOn": [
          "Reliability, 42 against 36",
          "Agent ergonomics, 63 against 48",
          "Maintenance \u0026 community, 61 against 50"
        ],
        "also": null,
        "goodFor": "A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.",
        "slug": "zeal",
        "watchFor": "No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published"
      }
    ],
    "job": {
      "capability": "payroll.run",
      "name": "Payroll run"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/argyle-vs-salsa.json",
        "title": "Argyle vs Salsa",
        "url": "https://www.anchorterminal.com/compare/argyle-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/argyle-vs-zeal.json",
        "title": "Argyle vs Zeal",
        "url": "https://www.anchorterminal.com/compare/argyle-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finch-vs-salsa.json",
        "title": "Finch vs Salsa",
        "url": "https://www.anchorterminal.com/compare/finch-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finch-vs-zeal.json",
        "title": "Finch vs Zeal",
        "url": "https://www.anchorterminal.com/compare/finch-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paychex-vs-salsa.json",
        "title": "Paychex vs Salsa",
        "url": "https://www.anchorterminal.com/compare/paychex-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paychex-vs-zeal.json",
        "title": "Paychex vs Zeal",
        "url": "https://www.anchorterminal.com/compare/paychex-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-salsa.json",
        "title": "Check vs Salsa",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal.json",
        "title": "Check vs Zeal",
        "url": "https://www.anchorterminal.com/compare/check-payroll-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa.json",
        "title": "Employment Hero Payroll vs Salsa",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal.json",
        "title": "Employment Hero Payroll vs Zeal",
        "url": "https://www.anchorterminal.com/compare/employment-hero-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/everee-vs-salsa.json",
        "title": "Everee vs Salsa",
        "url": "https://www.anchorterminal.com/compare/everee-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/everee-vs-zeal.json",
        "title": "Everee vs Zeal",
        "url": "https://www.anchorterminal.com/compare/everee-vs-zeal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gusto-vs-salsa.json",
        "title": "Gusto vs Salsa",
        "url": "https://www.anchorterminal.com/compare/gusto-vs-salsa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gusto-vs-zeal.json",
        "title": "Gusto vs Zeal",
        "url": "https://www.anchorterminal.com/compare/gusto-vs-zeal"
      }
    ],
    "scores": [
      {
        "by": 6,
        "edge": "zeal",
        "key": "reliability",
        "name": "Reliability",
        "salsa": 36,
        "weight": 16,
        "zeal": 42
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "salsa",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "salsa": 73,
        "weight": 13,
        "zeal": 68
      },
      {
        "by": 15,
        "edge": "zeal",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "salsa": 48,
        "weight": 13,
        "zeal": 63
      },
      {
        "by": 22,
        "edge": "salsa",
        "key": "security",
        "name": "Security \u0026 auth",
        "salsa": 56,
        "weight": 14,
        "zeal": 34
      },
      {
        "by": 5,
        "edge": "salsa",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "salsa": 5,
        "weight": 10,
        "zeal": 0
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "edge": "zeal",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "salsa": 50,
        "weight": 7,
        "zeal": 61
      },
      {
        "by": 0,
        "edge": "",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "salsa": 51,
        "weight": 7,
        "zeal": 51
      }
    ],
    "summary": "Salsa and Zeal score within a point of each other on agent readiness, 46.1 (D) and 45.4 (E). Zeal leads on reliability, agent ergonomics and maintenance \u0026 community. Both do payroll run.",
    "verdicts": {
      "salsa": "Salsa is reached as an embedded-payroll partner, not through an employer's existing payroll account. The REST API has a public OpenAPI 3.1 spec with 123 operations, a payroll preview, a separate confirm step and short-lived user tokens limited by role. Access starts with a sales conversation, and no public price, self-serve sandbox, status page or API changelog was found.",
      "zeal": "Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/salsa-vs-zeal",
    "json": "https://www.anchorterminal.com/compare/salsa-vs-zeal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/salsa-vs-zeal.md",
    "slim": "https://www.anchorterminal.com/compare/salsa-vs-zeal.min.md"
  },
  "markdown": "Salsa and Zeal score within a point of each other on agent readiness, 46.1 (D) and 45.4 (E). Zeal leads on reliability, agent ergonomics and maintenance \u0026 community. Both do payroll run.\n\n- Salsa: grade D, 46.1/100, rank #651 of 722. Markdown https://www.anchorterminal.com/tools/salsa.md · JSON https://www.anchorterminal.com/api/v1/tools/salsa.json\n- Zeal: grade E, 45.4/100, rank #658 of 722. Markdown https://www.anchorterminal.com/tools/zeal.md · JSON https://www.anchorterminal.com/api/v1/tools/zeal.json\n\n## Which one, for what\n\n### Salsa (D)\n\nGood for: A software platform that wants to sell payroll to its own business customers and can sign a partner agreement, with Salsa handling tax filing and money movement.\n\nAhead on:\n- Schema \u0026 documentation, 73 against 68\n- Security \u0026 auth, 56 against 34\n- Payments \u0026 pricing, 5 against 0\n\nWatch for: API tokens come from Salsa after a sales contact. No self-serve signup, public price, free tier or trial was found\n\n### Zeal (E)\n\nGood for: A US staffing platform, marketplace or workforce product that will sign a partnership and run payroll for many employers under its own brand, including daily and on-demand pay.\n\nAhead on:\n- Reliability, 42 against 36\n- Agent ergonomics, 63 against 48\n- Maintenance \u0026 community, 61 against 50\n\nWatch for: No self-serve signup. Zeal's team creates the partner account after a demo request, and no price is published\n\n\n## Score by category\n\n| Category | Weight | Salsa | Zeal | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 36 | 42 | Zeal +6 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 73 | 68 | Salsa +5 |\n| Agent ergonomics | 13% (16.2 this run) | 48 | 63 | Zeal +15 |\n| Security \u0026 auth | 14% (17.5 this run) | 56 | 34 | Salsa +22 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 5 | 0 | Salsa +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 50 | 61 | Zeal +11 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 51 | 51 | even |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **46.1 · D** | **45.4 · E** | |\n\n## Facts side by side\n\n| Fact | Salsa | Zeal |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Salsa Software Inc. | Puzzl Group Inc. |\n| Hosted endpoint | `https://api.salsa.dev/api/rest/v1` | `https://api.zeal.com` |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service. The website Terms of Use are public and the partner agreement isn't. The browser library @salsa-payroll/salsa-js on npm is MIT | Proprietary service. The npm SDK declares MIT. The SDK repositories on GitHub carry no licence file |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-07 | 2026-07-31 |\n| Terms last updated | 2022-04-07 | 2026-01-16 |\n| Privacy policy last updated | 2025-09-24 | 2026-01-16 |\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 | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | yes |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 435 npm/wk | 0 stars, 8 npm/wk |\n\n## Verdicts\n\n**Salsa.** Salsa is reached as an embedded-payroll partner, not through an employer's existing payroll account. The REST API has a public OpenAPI 3.1 spec with 123 operations, a payroll preview, a separate confirm step and short-lived user tokens limited by role. Access starts with a sales conversation, and no public price, self-serve sandbox, status page or API changelog was found.\n\n**Zeal.** Graded on the partner REST API at api.zeal.com, which is the only access route. Three OpenAPI specs, llms.txt, a test environment that moves no money, a preview endpoint and a per-cheque approval flag are documented. Access starts with a demo request, prices are not published, each environment has one unscoped key, and no status page or working changelog was found.\n\n## Before you call either\n\n### Salsa\n\n1. Use the sandbox token against https://api.sandbox.salsa.dev and the production token against https://api.salsa.dev. Each environment has its own token\n2. Call POST /payroll-runs/preview before creating a run, then confirm the PENDING run in a separate call. Confirming starts the employer debit\n3. Send your own externalId on every create. A repeat returns a uniqueness error, which is the only duplicate protection\n4. Make sure externalId values are unique across all employers, since each entity type has one namespace\n5. Mint a user token with the lowest role and the fewest employerIds the task needs, and keep the partner token on the server\n\n### Zeal\n\n1. Use the Test API key until a person has approved live payroll. Error code 0 (403) means the account has no production access\n2. Send `companyID` on almost every call and `partnerID` on partner-level calls, in the body for POST and PATCH and the query for GET\n3. Create cheques with `approval_required: true`, run POST /preview/checks, then PATCH /employeeCheck with `approved: true`. Without the flag Zeal processes pending cheques automatically\n4. Send `x-idempotency-key` on every create so a retry within 24 hours doesn't pay twice\n5. Previews and reports are jobs. Keep the `job_id` and poll GET /preview or GET /reports, or wait for the Job Queue webhook\n6. Check dates must be bank days and submitted before 2 PM Pacific two bank days ahead, or the call fails with code 89\n\n## Questions\n\n### Which is better for AI agents, Salsa or Zeal?\n\nSalsa and Zeal score within a point of each other on agent readiness, 46.1 (D) and 45.4 (E). Zeal leads on reliability, agent ergonomics and maintenance \u0026 community.\n\n### Do Salsa and Zeal need an API key?\n\nBoth need an API key.\n\n### Can an agent call Salsa and Zeal without installing anything?\n\nYes. Salsa has a hosted endpoint at https://api.salsa.dev/api/rest/v1 and Zeal at https://api.zeal.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/salsa-vs-zeal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/salsa-vs-zeal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"salsa\", \"b\": \"zeal\"}`. From a terminal: `anchor compare salsa zeal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/salsa.json and https://www.anchorterminal.com/api/v1/tools/zeal.json\n\n## Other comparisons with Salsa or Zeal\n\n- [Argyle vs Salsa](https://www.anchorterminal.com/compare/argyle-vs-salsa.md)\n- [Argyle vs Zeal](https://www.anchorterminal.com/compare/argyle-vs-zeal.md)\n- [Finch vs Salsa](https://www.anchorterminal.com/compare/finch-vs-salsa.md)\n- [Finch vs Zeal](https://www.anchorterminal.com/compare/finch-vs-zeal.md)\n- [Paychex vs Salsa](https://www.anchorterminal.com/compare/paychex-vs-salsa.md)\n- [Paychex vs Zeal](https://www.anchorterminal.com/compare/paychex-vs-zeal.md)\n- [Check vs Salsa](https://www.anchorterminal.com/compare/check-payroll-vs-salsa.md)\n- [Check vs Zeal](https://www.anchorterminal.com/compare/check-payroll-vs-zeal.md)\n- [Employment Hero Payroll vs Salsa](https://www.anchorterminal.com/compare/employment-hero-vs-salsa.md)\n- [Employment Hero Payroll vs Zeal](https://www.anchorterminal.com/compare/employment-hero-vs-zeal.md)\n- [Everee vs Salsa](https://www.anchorterminal.com/compare/everee-vs-salsa.md)\n- [Everee vs Zeal](https://www.anchorterminal.com/compare/everee-vs-zeal.md)\n- [Gusto vs Salsa](https://www.anchorterminal.com/compare/gusto-vs-salsa.md)\n- [Gusto vs Zeal](https://www.anchorterminal.com/compare/gusto-vs-zeal.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": "Salsa vs Zeal",
        "url": ""
      }
    ],
    "description": "Salsa and Zeal score within a point of each other on agent readiness, 46.1 (D) and 45.4 (E). Zeal leads on reliability, agent ergonomics and maintenance \u0026 community. Both do payroll run. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Salsa D 46.1",
      "Zeal E 45.4",
      "scores"
    ],
    "h1": "Salsa vs Zeal",
    "image": "https://www.anchorterminal.com/assets/og/compare-salsa-vs-zeal.png",
    "path": "/compare/salsa-vs-zeal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Salsa vs Zeal for AI agents, D 46.1 vs E 45.4 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/salsa-vs-zeal"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 630
  },
  "version": 1
}
