{
  "data": {
    "a": {
      "slug": "abyssale",
      "name": "Abyssale",
      "vendor": "Abyssale SAS",
      "vendorUrl": "https://www.abyssale.com",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Abyssale is a creative automation platform from Paris that renders designs into images, MP4 video, GIFs, HTML5 banner ads and print PDFs, through a REST API, dynamic image URLs, webhooks, official SDKs and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/abyssale",
      "markdownUrl": "https://www.anchorterminal.com/tools/abyssale.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/abyssale.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/abyssale.json",
      "dns": "abyssale.grade.anchorterminal.com",
      "license": "Closed service under the Abyssale terms of service (version 3, 21 July 2026)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.abyssale.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@abyssale/sdk"
        },
        {
          "registry": "pypi",
          "name": "abyssale"
        }
      ],
      "auth": "mixed",
      "authNotes": "REST uses a workspace API key in the `x-api-key` header, created in Workspace settings; test it with `POST /auth`. The MCP server at mcp.abyssale.com uses OAuth through Auth0 with per-tool scopes (`read:design`, `write:design`, `delete:design`, `import:design`, `generate:banner` and others), checked together with the user's workspace role. The two credentials are separate.",
      "pricing": "paid",
      "pricingNotes": "API and MCP come with Pro at $45 a seat a month ($36 yearly) and above; Start at $15 a seat has neither. Suite $75 a seat adds HTML5 and CMYK print PDF. 14-day free trial with no card. Generation credits are charged per format, 1 per image, 1 per second of video, GIF or HTML5, print PDFs by pixel area. Failed generations cost nothing.",
      "priceSummary": "$45 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Seat subscriptions with credit balances. No x402, MPP or L402 in the OpenAPI, the developer docs or llms.txt (checked 2026-11-06). An empty balance returns 429 with an id, not a payment requirement.",
        "endpoints": []
      },
      "toolCount": 20,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://developers.abyssale.com/",
      "llmsTxt": "https://developers.abyssale.com/llms.txt",
      "openapi": "https://developers.abyssale.com/api.yaml",
      "registryName": "com.abyssale/mcp",
      "capabilities": [
        "design.render",
        "design.templates",
        "design.brand",
        "image.edit",
        "pdf.generate",
        "video.generate"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "mcp-registry",
        "oauth",
        "api-key",
        "webhooks",
        "sdk",
        "trial",
        "no-card",
        "eu"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.6,
        "grade": "B",
        "agentReady": false,
        "rank": 411,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 85,
          "maintenance": 85,
          "payments": 35,
          "reliability": 41,
          "schema": 98,
          "security": 55,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Abyssale publishes a full OpenAPI file, dated versions, tiered rate limits with Retry-After, one error envelope and per-tool OAuth scopes on its MCP server. API access starts at $45 a seat a month after a 14-day trial, and no status page or published SLA was found.",
        "bestFor": "Multi-format ad creative, video, HTML5 banners and print PDFs from one design, for marketing teams and agencies with an agent in the loop.",
        "strengths": [
          "OpenAPI file, a detailed llms.txt and a dated changelog that lists breaking changes first",
          "Published rate-limit tiers with X-RateLimit headers, Retry-After and distinct 429 ids",
          "MCP scopes per tool group, so a client can read designs without spending credits or deleting",
          "Credit cost per output published to the format, and failed generations aren't charged",
          "Official Node.js and Python SDKs with retry and polling helpers, released October 2026"
        ],
        "weaknesses": [
          "API and MCP need the Pro plan at $45 a seat a month",
          "No status page found, and the SLA is negotiated for Enterprise only",
          "AI training on anonymised customer content is on by default",
          "Design import, the JSON authoring route, is alpha and outside the deprecation policy",
          "No security.txt, disclosure policy or certification found"
        ],
        "agentNotes": [
          "Branch on the error `id`, never the message; `request_rate_limited` means wait Retry-After seconds",
          "Multiply credits by formats before a batch, since 200 products in 6 formats cost 1,200 credits",
          "Ask the MCP user to approve only `read:design` unless the task must generate or change designs",
          "Use asynchronous generation for several formats and deduplicate webhooks on `X-Abyssale-Delivery-Id`",
          "Check `GET /credits` first; it costs nothing and shows both balances"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.6
          }
        ],
        "editorialScores": {
          "ergonomics": 85,
          "maintenance": 85,
          "payments": 35,
          "reliability": 41,
          "schema": 98,
          "security": 55,
          "transparency": 69
        },
        "provenanceScore": 72,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @abyssale/sdk",
        "http": "curl -X POST https://api.abyssale.com/auth -H \"x-api-key: $ABYSSALE_API_KEY\"",
        "claudeCode": "claude mcp add --transport http --client-id tpc_iJ7LWqVdzR7c7jf21gMqDQ --callback-port 3418 -s user abyssale_prod https://mcp.abyssale.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/design.render",
        "tool": "https://letme.dev/abyssale"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Pro seat (API and MCP)",
          "unit": "seat-month",
          "usd": 45,
          "note": "$36 billed yearly; the Start plan at $15 has no API"
        },
        {
          "item": "Suite seat",
          "unit": "seat-month",
          "usd": 75,
          "note": "$60 billed yearly; adds HTML5 ads and CMYK print PDF"
        }
      ],
      "provenance": {
        "legalEntity": "Abyssale SAS",
        "domain": "abyssale.com",
        "domainRegistered": "2018-07-10",
        "endpointOnVendorDomain": true,
        "terms": "https://www.abyssale.com/terms-of-service",
        "privacy": "https://www.abyssale.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://developers.abyssale.com/rest-api/changelog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms (version 3, 21 July 2026) and the legal notice name ABYSSALE, an SAS at 49 rue de Ponthieu, 75008 Paris, Paris RCS 878 526 573. The terms give share capital as €1,980.00 and the legal notice as €1,902.80.",
          "The terms forbid extracting, scraping or reusing the platform's databases, including the public template database. Public docs and policy pages were read as data.",
          "www.abyssale.com/robots.txt and developers.abyssale.com/robots.txt allow all paths.",
          "/.well-known/security.txt returns 404. No status page was linked from the site or the docs, and status.abyssale.com did not answer.",
          "RDAP gives abyssale.com a registration date of 10 July 2018."
        ],
        "score": 72
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/abyssale.json",
      "live": {
        "slug": "abyssale",
        "probe": {
          "target": "https://api.abyssale.com",
          "method": "get",
          "lastAt": "2026-11-07T18:20:08.122898698Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 152,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 66,
          "p95ms24h": 171,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "com.abyssale/mcp",
            "version": "1.0.1",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@abyssale/sdk",
            "version": "1.9.0",
            "seenAt": "2026-11-06T23:02:19.286863658Z"
          },
          {
            "registry": "pypi",
            "name": "abyssale",
            "version": "1.7.0",
            "released": "2026-10-21",
            "seenAt": "2026-11-06T23:02:19.747808303Z"
          }
        ],
        "npmWeekly": 29,
        "pypiWeekly": 49,
        "securityTxt": {
          "url": "https://abyssale.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:33.168565397Z"
        },
        "llmsTxt": {
          "url": "https://developers.abyssale.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:04.477678741Z"
        },
        "pages": [
          {
            "url": "https://developers.abyssale.com/rest-api/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:03:36.173334461Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1c916e422299"
          },
          {
            "url": "https://www.abyssale.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:24:07.939253804Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1756c40b8e19"
          },
          {
            "url": "https://www.abyssale.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:24:10.078462035Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "982f9b4f8587"
          }
        ],
        "updatedAt": "2026-11-07T18:20:08.122898698Z"
      }
    },
    "answer": "Abyssale scores 65.6 (B) on agent readiness against Photoroom API's 53.5 (D), and leads in 5 of 7 scored categories. Photoroom API leads on payments \u0026 pricing.",
    "b": {
      "slug": "photoroom",
      "name": "Photoroom API",
      "vendor": "Photoroom",
      "vendorUrl": "https://www.photoroom.com",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Photoroom's API edits product photos over HTTP. One call removes a background, adds a shadow or generated background, relights, expands, resizes or fills a template, and returns the image. A hosted MCP server wraps the same API.",
      "url": "https://www.anchorterminal.com/tools/photoroom",
      "markdownUrl": "https://www.anchorterminal.com/tools/photoroom.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/photoroom.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/photoroom.json",
      "dns": "photoroom.grade.anchorterminal.com",
      "repo": "https://github.com/PhotoRoom/api-code-samples",
      "license": "Proprietary service under the Photoroom Terms and Conditions. The sample code repository is MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://image-api.photoroom.com/v2",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Self-serve API key, sent in the `x-api-key` header. A person creates a Photoroom account and activates the API in the dashboard at app.photoroom.com/api-dashboard. A team can create several keys and revoke each one. No scopes were found. Prefixing the key with `sandbox_` makes free, watermarked calls. The hosted MCP server uses an OAuth authorisation code grant with PKCE and dynamic client registration, and creates its own API key for the connection (https://docs.photoroom.com/getting-started/introduction.md, https://www.photoroom.com/api/claude).",
      "pricing": "freemium",
      "pricingNotes": "$0.02 an image on the Remove Background API (Basic plan) and $0.10 a call on the Image Editing API (Plus plan), bought as a monthly subscription of images that do not roll over. Sandbox mode is free for 1,000 watermarked calls a month, and a new account gets 10 free production background removals, with no card. Failed calls are not billed. Enterprise pricing from 200,000 images a year is by sales (https://www.photoroom.com/api/pricing, https://docs.photoroom.com/getting-started/pricing.md).",
      "priceSummary": "$20 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the OpenAPI description or the pricing pages (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 1,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.photoroom.com",
      "llmsTxt": "https://docs.photoroom.com/llms.txt",
      "openapi": "https://image-api.photoroom.com/openapi",
      "capabilities": [
        "image.edit",
        "design.templates",
        "image.generate",
        "image.upscale"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "sandbox",
        "background-removal",
        "soc2"
      ],
      "lastRelease": "2026-04-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.5,
        "grade": "D",
        "agentReady": false,
        "rank": 940,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 8,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 13,
          "payments": 40,
          "reliability": 42,
          "schema": 86,
          "security": 49,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": 0,
        "verdict": "A call costs $0.02 for background removal or $0.10 for any combination of edits, and a sandbox key gives 1,000 free watermarked calls a month without a card. No status page or official SDK was found, and Photoroom's privacy policy and security page disagree on whether API images train its models.",
        "bestFor": "Product-photo work at volume, such as cutouts, white backgrounds, shadows, generated scenes and clothing shots, one image a call.",
        "strengths": [
          "Prices are per image and public, $0.02 for the Remove Background API and $0.10 for an Image Editing call with any number of edits combined",
          "A `sandbox_` key prefix gives 1,000 free watermarked Image Editing calls a month (100 a day) with no card, per the docs and pricing page",
          "Calls that end in an error do not consume an image, per the pricing page of the docs",
          "A public OpenAPI 3.1 file, an `llms.txt` index and a Markdown twin of every docs page, plus a ready-made prompt for coding agents",
          "The security page says images sent to the API are discarded when the response returns and names five sub-processors and US hosting"
        ],
        "weaknesses": [
          "No status page was found on the site or in the docs, so there is no public incident history to read",
          "The privacy policy says model improvement does not apply to API images. The security page says self-serve API plans train by default with an opt-out",
          "No official SDK. The vendor publishes MIT sample code for web, Node.js, Python and iOS and tells callers to use a plain HTTP client",
          "The changelog's last dated entry is 21 April 2026, over six months before this check, while the docs list Virtual Try-On, which has no entry",
          "The terms forbid scraping any part of the Services and any automated system that sends more requests than a person could from a browser"
        ],
        "agentNotes": [
          "Send the key in the `x-api-key` header. Prefix it with `sandbox_` while testing, because calls with the plain key consume paid images",
          "Save the response body as a file. A 200 returns image bytes, PNG by default, and any other status returns JSON with `error.message` or `detail`",
          "Send model selectors such as `pr-ai-shadows-model-version: 2026-04-15` as HTTP headers, not form fields. They are not in the OpenAPI file",
          "Stay under 60 images a minute. On 429 back off with an exponential delay, and set a client timeout of at least 60 seconds for AI edits",
          "Use `POST /v2/edit` with `imageFile` for local files and `GET /v2/edit` with `imageUrl` for hosted ones. Each call takes one image"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.5
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 13,
          "payments": 40,
          "reliability": 42,
          "schema": 86,
          "security": 49,
          "transparency": 57
        },
        "provenanceScore": 81,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl --request POST \\\n  --url https://image-api.photoroom.com/v2/edit \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --form imageFile=@/absolute/path/to/image.jpg \\\n  --form removeBackground=true \\\n  --form background.color=FFFFFF \\\n  --form padding=0.15 \\\n  --form shadow.mode=ai.soft \\\n  --output result.png",
        "claudeCode": "claude mcp add --transport http Photoroom https://mcp.photoroom.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/image.edit",
        "tool": "https://letme.dev/photoroom"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Remove Background API",
          "unit": "image",
          "usd": 0.02,
          "note": "Basic plan, `/v1/segment`"
        },
        {
          "item": "Image Editing API",
          "unit": "image",
          "usd": 0.1,
          "note": "Plus plan, `/v2/edit`, any number of edits in the call"
        },
        {
          "item": "Basic plan, 1,000 images",
          "unit": "month",
          "usd": 20,
          "note": "example from the pricing page FAQ"
        }
      ],
      "provenance": {
        "legalEntity": "Photoroom SAS",
        "domain": "photoroom.com",
        "domainRegistered": "1998-11-21",
        "endpointOnVendorDomain": true,
        "terms": "https://www.photoroom.com/legal/terms-and-conditions",
        "privacy": "https://www.photoroom.com/legal/privacy",
        "statusPage": "",
        "changelog": "https://docs.photoroom.com/getting-started/changelog",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The Terms and Conditions, effective 29 July 2026, cover the platform, the application programming interface and related services of Photoroom SAS. No separate API terms were found.",
          "The legal notice gives PHOTOROOM, SAS, RCS Paris 853 059 384, 229 rue Saint-Honoré, 75001 Paris. The site footer reads Photoroom, Inc.",
          "The privacy policy, updated March 2026, names Photoroom as controller for photoroom.com, app.photoroom.com and the apps, and has one sentence on API images.",
          "The API answers at image-api.photoroom.com and sdk.photoroom.com and the MCP server at mcp.photoroom.com.",
          "https://www.photoroom.com/.well-known/security.txt returns 404.",
          "RDAP for photoroom.com gives a registration date of 1998-11-21, which predates the company.",
          "No status page was found. status.photoroom.com did not answer one request."
        ],
        "score": 81
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/photoroom.json",
      "live": {
        "slug": "photoroom",
        "probe": {
          "target": "https://image-api.photoroom.com/v2",
          "method": "get",
          "lastAt": "2026-11-07T18:20:46.822760207Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 140,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 137,
          "p95ms24h": 259,
          "samples24h": 239,
          "samples30d": 7205,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "githubStars": 24,
        "securityTxt": {
          "url": "https://photoroom.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:35.89437457Z"
        },
        "llmsTxt": {
          "url": "https://docs.photoroom.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:37.194036648Z"
        },
        "domain": {
          "domain": "photoroom.com",
          "registered": "1998-11-21",
          "source": "https://rdap.verisign.com/com/v1/domain/photoroom.com",
          "checkedAt": "2026-11-01T14:12:33.896950657Z"
        },
        "pages": [
          {
            "url": "https://docs.photoroom.com/getting-started/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:07:28.307252855Z",
            "changedAt": "2026-11-06T13:29:48.972922049Z",
            "fingerprint": "a17c1caf21bf"
          },
          {
            "url": "https://docs.photoroom.com/getting-started/pricing.md",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:07:31.146352808Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eb0f8c798163"
          },
          {
            "url": "https://www.photoroom.com/api/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:32:54.648856889Z",
            "changedAt": "2026-11-06T13:53:27.363817008Z",
            "fingerprint": "af3f154124c6"
          },
          {
            "url": "https://www.photoroom.com/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:32:57.117656306Z",
            "changedAt": "2026-11-06T13:53:29.91034674Z",
            "fingerprint": "be888e2e5930"
          },
          {
            "url": "https://www.photoroom.com/legal/terms-and-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:32:58.93275316Z",
            "changedAt": "2026-11-06T13:53:31.913116161Z",
            "fingerprint": "bea5b5dfb8cb"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.photoroom.com/mcp",
          "checkedAt": "2026-11-07T01:46:49.301089544Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:46:49.301089544Z"
        },
        "github": {
          "repo": "photoroom/api-code-samples",
          "checkedAt": "2026-11-02T09:16:04.901854889Z",
          "stars": 26,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-04-23T14:21:35Z",
          "openIssues": 3,
          "openPRs": 0,
          "issuesOpened90d": 2,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 2,
            "unanswered": 2
          }
        },
        "updatedAt": "2026-11-07T18:20:46.822760207Z"
      }
    },
    "edges": [
      {
        "by": 72,
        "category": "maintenance",
        "leads": "abyssale",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "API version v2026-10-29, eight days before this check (30). Fifteen dated API versions between 21 August and 29 October, MCP server releases 1.0.0 (1 September) to 1.2.0 (7 October), and SDK releases in October (20). Closed service with a changelog and RSS feed, help@abyssale.com and in-app chat, which we didn't test (12 of 15). com.abyssale/mcp is in the official MCP registry under a domain-verified namespace, and the Node.js (1.9.0) and Python (1.7.0) SDKs were both released on 21 October 2026 (15). Both SDKs are current; their repositories weren't read (8 of 10). 30 + 20 + 12 + 15 + 8 = 85.",
          "b": "The last dated changelog entry is 21 April 2026 by the 9 October reading, 197 days before 4 November. The changelog sits on a paused host and was not re-read (0, cause time). No dated changelog entry in the 90 days from 6 August by that reading, and no other dated Photoroom source was found (0). A public changelog and a Discourse community where each of the 17 topics dated 30 September to 3 October 2026 had a reply, per the 9 October check. We did not open the topics to see who replied (11). No official SDK, and the official MCP registry search for photoroom returned no entry on 4 November (0). The sample code repository's last commit is a README change on 23 April 2026 and it has no CI, per a clone on 4 November (2)."
        },
        "scores": {
          "a": 85,
          "b": 13
        }
      },
      {
        "by": 21,
        "category": "ergonomics",
        "leads": "abyssale",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "20 MCP tools (15 for 11 to 30), plus 5 because OAuth scopes per tool group let a client be approved for reads only (20 of 25). Design listings search by words in any order, filter by project, orientation, size, format and dates, sort and order, and say honestly when a page is past the end; listing tools refuse unsupported options rather than ignore them, per MCP 1.2.0 (19 of 20). One envelope with an `id` to branch on, and error docs that say which errors a retry never fixes (19 of 20). The permissions page marks each tool read-only, mutating or destructive, but MCP annotations couldn't be confirmed on the closed server, and generation has no idempotency key (12 of 20). Official Node.js and Python SDKs with retry behaviour and polling helpers (15). 20 + 19 + 19 + 12 + 15 = 85.",
          "b": "Per the 9 October check, not re-read on 4 November. The response body is the image itself, so an agent saves a file and reads nothing into context. `outputSize`, `maxWidth`, `maxHeight`, `export.format` and the `size` presets set what comes back, and the MCP server has one tool, per Photoroom (18). Nothing to paginate. Output size, format and DPI controls (15). JSON errors with a message and a documented meaning for 400, 401, 403, 402, 429 and 500, but the two APIs use different shapes and `Unauthorized` covers both a missing key and an empty balance (13). No idempotency key. Calls keep no state, failed calls are not billed and `background.seed` repeats a generated background, but a retried success is billed again. The MCP tool's annotations were not read (10). Only the image is required and defaults are sensible. No official SDK, only sample code for four platforms (8)."
        },
        "scores": {
          "a": 85,
          "b": 64
        }
      },
      {
        "by": 12,
        "category": "schema",
        "leads": "abyssale",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "A 424 KB OpenAPI file at developers.abyssale.com/api.yaml with 34 operations, from which the reference pages are generated (25). A detailed llms.txt that states the base URL, auth, rate limits, error envelope and webhook signing up front (10). Pages say what each endpoint is for and when to use another, such as synchronous versus asynchronous generation and designs versus workspace templates, and the MCP permissions page says what each tool can break (19 of 20). Typed parameters with enums, ranges and required fields across layers and formats (14 of 15). One error envelope everywhere, an error catalogue with machine-readable ids and what to do for each, and worked examples (15). Date-based versions named in every response and a dated changelog in Keep a Changelog form with a Breaking section first; the MCP server has its own semver changelog (15). 25 + 10 + 19 + 14 + 15 + 15 = 98.",
          "b": "Per the 9 October check, not re-read on 4 November. A public OpenAPI 3.1.0 description at image-api.photoroom.com/openapi, read as embedded on the docs reference page, with four operations (25). `llms.txt`, a Markdown twin of every page and a page with a prompt written for coding agents (10). 86 of the 87 parameters of `GET /v2/edit` carry a description, the operation description lists every edit, and the agent page says when to call each of the two APIs (17). 31 of 87 parameters have enums, but booleans are strings, no field of `/v2/edit` is marked required, and the embedded description declares neither the `x-api-key` header nor the `pr-*` model headers (10). Curl examples on every page and 400, 402 and 500 bodies in the description. 401, 403 and 429 are documented in prose only, and the two APIs use different error shapes (11). Paths are `/v1` and `/v2`, models are pinned by dated headers and the changelog is dated back to June 2023, but the description's version is fixed at 1.0.0 and the last changelog entry is 21 April 2026 (13)."
        },
        "scores": {
          "a": 98,
          "b": 86
        }
      },
      {
        "by": 6,
        "category": "security",
        "leads": "abyssale",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "The MCP server uses OAuth through Auth0 with scopes per tool group (`read:design`, `write:design`, `delete:design`, `import:design`, `generate:banner`, `read:credits` and others), enforced alongside the user's workspace role, and approval is per client connection. The REST API uses a workspace `x-api-key` with no scopes documented (28 of 30). A client can be approved for reads only, and deleting needs its own scope, but nothing on the server asks for confirmation; the docs leave that to the client per the MCP spec (17 of 20). Tools return the workspace's own designs and fonts; image layers can point at outside URLs (10 of 15). No audit log or per-call record was found (0). No security.txt, disclosure policy, bug bounty or certification found (0). 28 + 17 + 10 + 0 + 0 = 55.",
          "b": "Per the 9 October check, not re-read on 4 November. A team can hold several API keys and revoke each in the dashboard, with no scopes found. The key travels in the `x-api-key` header only. The hosted MCP server's published OAuth metadata gives an authorisation code grant with PKCE, dynamic client registration and a revocation endpoint, per the 9 October reading, and the connector page says it creates its own key for the connection (20). No read-only key. The API stores nothing to change, a sandbox key cannot spend, and a prepaid monthly allowance bounds spend (8). Returns images, not untrusted text (10). The dashboard shows usage history, `GET /v2/account` returns the balance, and the security page says API access logs are kept for one year on Photoroom's side (6). The security page states a SOC 2 Type 2 attestation scoped to the API with a report of April 2026, held in a trust centre drawn by script that was not read. `security.txt` returns 404 and no disclosure policy or bug bounty was found, so a SOC 2 claim with no readable report or disclosure route (5)."
        },
        "scores": {
          "a": 55,
          "b": 49
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "photoroom",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Seat prices are public and the credit cost of every output is published to the format, with worked examples, but a credit's price outside the plan wasn't found (15 of 20). 14-day free trial with no card (20). A person signs up in the browser; the MCP OAuth flow needs a human login (0). 0 + 15 + 20 + 0 = 35.",
          "b": "Per the 9 October check, not re-read on 4 November. No x402, MPP or L402 in the docs, the OpenAPI description or the pricing pages (0). Per-image prices are public, $0.02 for background removal and $0.10 for an Image Editing call (20). Sandbox mode gives 1,000 free watermarked calls a month and a new account 10 free production calls on the Remove Background API, with no card, per the pricing page (20). A person has to create an account and activate the API in the dashboard. The MCP server also needs a Photoroom sign-in (0)."
        },
        "scores": {
          "a": 35,
          "b": 40
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Abyssale SAS",
        "b": "Photoroom",
        "name": "Vendor"
      },
      {
        "a": "https://api.abyssale.com",
        "b": "https://image-api.photoroom.com/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "not published",
        "b": "$0.10 per image",
        "name": "Price for image editing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Closed service under the Abyssale terms of service (version 3, 21 July 2026)",
        "b": "Proprietary service under the Photoroom Terms and Conditions. The sample code repository is MIT",
        "name": "Licence"
      },
      {
        "a": "20",
        "b": "1",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "com.abyssale/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-29",
        "b": "2026-04-21",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-07-29",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-03-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "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": "yes",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Abyssale scores 65.6 (B) on agent readiness against Photoroom API's 53.5 (D), and leads in 5 of 7 scored categories. Photoroom API leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Abyssale or Photoroom API?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Abyssale and Photoroom API need an API key?"
      },
      {
        "answer": "Yes. Abyssale has a hosted endpoint at https://api.abyssale.com and Photoroom API at https://image-api.photoroom.com/v2.",
        "question": "Can an agent call Abyssale and Photoroom API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 98 against 86",
          "Agent ergonomics, 85 against 64",
          "Security \u0026 auth, 55 against 49",
          "Maintenance \u0026 community, 85 against 13"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Multi-format ad creative, video, HTML5 banners and print PDFs from one design, for marketing teams and agencies with an agent in the loop.",
        "slug": "abyssale",
        "watchFor": "API and MCP need the Pro plan at $45 a seat a month"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 40 against 35"
        ],
        "also": null,
        "goodFor": "Product-photo work at volume, such as cutouts, white backgrounds, shadows, generated scenes and clothing shots, one image a call.",
        "slug": "photoroom",
        "watchFor": "No status page was found on the site or in the docs, so there is no public incident history to read"
      }
    ],
    "history": {
      "abyssale": null,
      "photoroom": [
        {
          "causes": [
            "correction",
            "time"
          ],
          "date": "2026-11-04",
          "delta": -2.6,
          "from": 56.1,
          "fromGrade": "C",
          "to": 53.5,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 56,
          "fromGrade": "C",
          "to": 56.1,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "image.edit",
      "name": "Image editing"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-photoroom.json",
        "title": "APITemplate.io vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-photoroom.json",
        "title": "Bannerbear API + MCP vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canva-vs-photoroom.json",
        "title": "Canva REST APIs + MCP vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/canva-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentdrips-vs-photoroom.json",
        "title": "Contentdrips API and MCP vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-photoroom.json",
        "title": "Creatomate vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.json",
        "title": "DynaPictures vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/layerre-vs-photoroom.json",
        "title": "Layerre vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/layerre-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-pictify.json",
        "title": "Photoroom API vs Pictify",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-placid.json",
        "title": "Photoroom API vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-postnitro.json",
        "title": "Photoroom API vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-robolly.json",
        "title": "Photoroom API vs Robolly",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-shotstack.json",
        "title": "Photoroom API vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-templated.json",
        "title": "Photoroom API vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-adobe-photoshop-api.json",
        "title": "Abyssale vs Adobe Photoshop API",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-adobe-photoshop-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io.json",
        "title": "Abyssale vs APITemplate.io",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-bannerbear.json",
        "title": "Abyssale vs Bannerbear API + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-bannerbear"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-canva.json",
        "title": "Abyssale vs Canva REST APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-canva"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-contentdrips.json",
        "title": "Abyssale vs Contentdrips API and MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-contentdrips"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-creatomate.json",
        "title": "Abyssale vs Creatomate",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-creatomate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.json",
        "title": "Abyssale vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-layerre.json",
        "title": "Abyssale vs Layerre",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-layerre"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-osmo-cli.json",
        "title": "Abyssale vs Osmo CLI",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-osmo-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-pictify.json",
        "title": "Abyssale vs Pictify",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-pixelixe.json",
        "title": "Abyssale vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-placid.json",
        "title": "Abyssale vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-postnitro.json",
        "title": "Abyssale vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-robolly.json",
        "title": "Abyssale vs Robolly",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-shotstack.json",
        "title": "Abyssale vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-templated.json",
        "title": "Abyssale vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-photoroom.json",
        "title": "Adobe Photoshop API vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/osmo-cli-vs-photoroom.json",
        "title": "Osmo CLI vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/osmo-cli-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-pixelixe.json",
        "title": "Photoroom API vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-pixelixe"
      }
    ],
    "panel": null,
    "scores": [
      {
        "abyssale": 41,
        "by": 1,
        "edge": "photoroom",
        "key": "reliability",
        "name": "Reliability",
        "photoroom": 42,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "abyssale": 98,
        "by": 12,
        "edge": "abyssale",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "photoroom": 86,
        "weight": 13
      },
      {
        "abyssale": 85,
        "by": 21,
        "edge": "abyssale",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "photoroom": 64,
        "weight": 13
      },
      {
        "abyssale": 55,
        "by": 6,
        "edge": "abyssale",
        "key": "security",
        "name": "Security \u0026 auth",
        "photoroom": 49,
        "weight": 14
      },
      {
        "abyssale": 35,
        "by": 5,
        "edge": "photoroom",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "photoroom": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "abyssale": 85,
        "by": 72,
        "edge": "abyssale",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "photoroom": 13,
        "weight": 7
      },
      {
        "abyssale": 71,
        "by": 2,
        "edge": "abyssale",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "photoroom": 69,
        "weight": 7
      }
    ],
    "summary": "Abyssale scores 65.6 (B) on agent readiness against Photoroom API's 53.5 (D), and leads in 5 of 7 scored categories. Photoroom API leads on payments \u0026 pricing. Both do image editing.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "abyssale": "Abyssale publishes a full OpenAPI file, dated versions, tiered rate limits with Retry-After, one error envelope and per-tool OAuth scopes on its MCP server. API access starts at $45 a seat a month after a 14-day trial, and no status page or published SLA was found.",
      "photoroom": "A call costs $0.02 for background removal or $0.10 for any combination of edits, and a sandbox key gives 1,000 free watermarked calls a month without a card. No status page or official SDK was found, and Photoroom's privacy policy and security page disagree on whether API images train its models."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom",
    "json": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom.min.md"
  },
  "markdown": "Abyssale scores 65.6 (B) on agent readiness against Photoroom API's 53.5 (D), and leads in 5 of 7 scored categories. Photoroom API leads on payments \u0026 pricing. Both do image editing.\n\n- Abyssale: grade B, 65.6/100, rank #411 of 1486. Markdown https://www.anchorterminal.com/tools/abyssale.md · JSON https://www.anchorterminal.com/api/v1/tools/abyssale.json\n- Photoroom API: grade D, 53.5/100, rank #940 of 1486. Markdown https://www.anchorterminal.com/tools/photoroom.md · JSON https://www.anchorterminal.com/api/v1/tools/photoroom.json\n- Best programmatic image and design asset APIs for AI agents: https://www.anchorterminal.com/best/design-assets/index.md\n- All 153 assets comparisons: https://www.anchorterminal.com/compare/design-assets/index.md\n\n## Which one, for what\n\n### Abyssale (B)\n\nGood for: Multi-format ad creative, video, HTML5 banners and print PDFs from one design, for marketing teams and agencies with an agent in the loop.\n\nAhead on:\n- Schema \u0026 documentation, 98 against 86\n- Agent ergonomics, 85 against 64\n- Security \u0026 auth, 55 against 49\n- Maintenance \u0026 community, 85 against 13\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: API and MCP need the Pro plan at $45 a seat a month\n\n### Photoroom API (D)\n\nGood for: Product-photo work at volume, such as cutouts, white backgrounds, shadows, generated scenes and clothing shots, one image a call.\n\nAhead on:\n- Payments \u0026 pricing, 40 against 35\n\nWatch for: No status page was found on the site or in the docs, so there is no public incident history to read\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Abyssale +72\n\n- Abyssale (85): API version v2026-10-29, eight days before this check (30). Fifteen dated API versions between 21 August and 29 October, MCP server releases 1.0.0 (1 September) to 1.2.0 (7 October), and SDK releases in October (20). Closed service with a changelog and RSS feed, help@abyssale.com and in-app chat, which we didn't test (12 of 15). com.abyssale/mcp is in the official MCP registry under a domain-verified namespace, and the Node.js (1.9.0) and Python (1.7.0) SDKs were both released on 21 October 2026 (15). Both SDKs are current; their repositories weren't read (8 of 10). 30 + 20 + 12 + 15 + 8 = 85.\n- Photoroom API (13): The last dated changelog entry is 21 April 2026 by the 9 October reading, 197 days before 4 November. The changelog sits on a paused host and was not re-read (0, cause time). No dated changelog entry in the 90 days from 6 August by that reading, and no other dated Photoroom source was found (0). A public changelog and a Discourse community where each of the 17 topics dated 30 September to 3 October 2026 had a reply, per the 9 October check. We did not open the topics to see who replied (11). No official SDK, and the official MCP registry search for photoroom returned no entry on 4 November (0). The sample code repository's last commit is a README change on 23 April 2026 and it has no CI, per a clone on 4 November (2).\n\n### Agent ergonomics: Abyssale +21\n\n- Abyssale (85): 20 MCP tools (15 for 11 to 30), plus 5 because OAuth scopes per tool group let a client be approved for reads only (20 of 25). Design listings search by words in any order, filter by project, orientation, size, format and dates, sort and order, and say honestly when a page is past the end; listing tools refuse unsupported options rather than ignore them, per MCP 1.2.0 (19 of 20). One envelope with an `id` to branch on, and error docs that say which errors a retry never fixes (19 of 20). The permissions page marks each tool read-only, mutating or destructive, but MCP annotations couldn't be confirmed on the closed server, and generation has no idempotency key (12 of 20). Official Node.js and Python SDKs with retry behaviour and polling helpers (15). 20 + 19 + 19 + 12 + 15 = 85.\n- Photoroom API (64): Per the 9 October check, not re-read on 4 November. The response body is the image itself, so an agent saves a file and reads nothing into context. `outputSize`, `maxWidth`, `maxHeight`, `export.format` and the `size` presets set what comes back, and the MCP server has one tool, per Photoroom (18). Nothing to paginate. Output size, format and DPI controls (15). JSON errors with a message and a documented meaning for 400, 401, 403, 402, 429 and 500, but the two APIs use different shapes and `Unauthorized` covers both a missing key and an empty balance (13). No idempotency key. Calls keep no state, failed calls are not billed and `background.seed` repeats a generated background, but a retried success is billed again. The MCP tool's annotations were not read (10). Only the image is required and defaults are sensible. No official SDK, only sample code for four platforms (8).\n\n### Schema \u0026 documentation: Abyssale +12\n\n- Abyssale (98): A 424 KB OpenAPI file at developers.abyssale.com/api.yaml with 34 operations, from which the reference pages are generated (25). A detailed llms.txt that states the base URL, auth, rate limits, error envelope and webhook signing up front (10). Pages say what each endpoint is for and when to use another, such as synchronous versus asynchronous generation and designs versus workspace templates, and the MCP permissions page says what each tool can break (19 of 20). Typed parameters with enums, ranges and required fields across layers and formats (14 of 15). One error envelope everywhere, an error catalogue with machine-readable ids and what to do for each, and worked examples (15). Date-based versions named in every response and a dated changelog in Keep a Changelog form with a Breaking section first; the MCP server has its own semver changelog (15). 25 + 10 + 19 + 14 + 15 + 15 = 98.\n- Photoroom API (86): Per the 9 October check, not re-read on 4 November. A public OpenAPI 3.1.0 description at image-api.photoroom.com/openapi, read as embedded on the docs reference page, with four operations (25). `llms.txt`, a Markdown twin of every page and a page with a prompt written for coding agents (10). 86 of the 87 parameters of `GET /v2/edit` carry a description, the operation description lists every edit, and the agent page says when to call each of the two APIs (17). 31 of 87 parameters have enums, but booleans are strings, no field of `/v2/edit` is marked required, and the embedded description declares neither the `x-api-key` header nor the `pr-*` model headers (10). Curl examples on every page and 400, 402 and 500 bodies in the description. 401, 403 and 429 are documented in prose only, and the two APIs use different error shapes (11). Paths are `/v1` and `/v2`, models are pinned by dated headers and the changelog is dated back to June 2023, but the description's version is fixed at 1.0.0 and the last changelog entry is 21 April 2026 (13).\n\n### Security \u0026 auth: Abyssale +6\n\n- Abyssale (55): The MCP server uses OAuth through Auth0 with scopes per tool group (`read:design`, `write:design`, `delete:design`, `import:design`, `generate:banner`, `read:credits` and others), enforced alongside the user's workspace role, and approval is per client connection. The REST API uses a workspace `x-api-key` with no scopes documented (28 of 30). A client can be approved for reads only, and deleting needs its own scope, but nothing on the server asks for confirmation; the docs leave that to the client per the MCP spec (17 of 20). Tools return the workspace's own designs and fonts; image layers can point at outside URLs (10 of 15). No audit log or per-call record was found (0). No security.txt, disclosure policy, bug bounty or certification found (0). 28 + 17 + 10 + 0 + 0 = 55.\n- Photoroom API (49): Per the 9 October check, not re-read on 4 November. A team can hold several API keys and revoke each in the dashboard, with no scopes found. The key travels in the `x-api-key` header only. The hosted MCP server's published OAuth metadata gives an authorisation code grant with PKCE, dynamic client registration and a revocation endpoint, per the 9 October reading, and the connector page says it creates its own key for the connection (20). No read-only key. The API stores nothing to change, a sandbox key cannot spend, and a prepaid monthly allowance bounds spend (8). Returns images, not untrusted text (10). The dashboard shows usage history, `GET /v2/account` returns the balance, and the security page says API access logs are kept for one year on Photoroom's side (6). The security page states a SOC 2 Type 2 attestation scoped to the API with a report of April 2026, held in a trust centre drawn by script that was not read. `security.txt` returns 404 and no disclosure policy or bug bounty was found, so a SOC 2 claim with no readable report or disclosure route (5).\n\n### Payments \u0026 pricing: Photoroom API +5\n\n- Abyssale (35): No x402, MPP or L402 (0). Seat prices are public and the credit cost of every output is published to the format, with worked examples, but a credit's price outside the plan wasn't found (15 of 20). 14-day free trial with no card (20). A person signs up in the browser; the MCP OAuth flow needs a human login (0). 0 + 15 + 20 + 0 = 35.\n- Photoroom API (40): Per the 9 October check, not re-read on 4 November. No x402, MPP or L402 in the docs, the OpenAPI description or the pricing pages (0). Per-image prices are public, $0.02 for background removal and $0.10 for an Image Editing call (20). Sandbox mode gives 1,000 free watermarked calls a month and a new account 10 free production calls on the Remove Background API, with no card, per the pricing page (20). A person has to create an account and activate the API in the dashboard. The MCP server also needs a Photoroom sign-in (0).\n\n## Score by category\n\n| Category | Weight | Abyssale | Photoroom API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 41 | 42 | Photoroom API +1 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 98 | 86 | Abyssale +12 |\n| Agent ergonomics | 13% (16.2 this run) | 85 | 64 | Abyssale +21 |\n| Security \u0026 auth | 14% (17.5 this run) | 55 | 49 | Abyssale +6 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Photoroom API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 13 | Abyssale +72 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 71 | 69 | Abyssale +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **65.6 · B** | **53.5 · D** | |\n\n## Facts side by side\n\n| Fact | Abyssale | Photoroom API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Abyssale SAS | Photoroom |\n| Hosted endpoint | `https://api.abyssale.com` | `https://image-api.photoroom.com/v2` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Freemium |\n| Price for image editing | not published | $0.10 per image |\n| x402 | no | no |\n| Licence | Closed service under the Abyssale terms of service (version 3, 21 July 2026) | Proprietary service under the Photoroom Terms and Conditions. The sample code repository is MIT |\n| Tools exposed | 20 | 1 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `com.abyssale/mcp` | not listed |\n| Last release | 2026-10-29 | 2026-04-21 |\n| Terms last updated | no date given | 2026-07-29 |\n| Privacy policy last updated | no date given | 2026-03-01 |\n| Customer content may train models | yes | yes, with an opt-out |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\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 | yes |\n\n## How the scores have moved\n\n### Abyssale\n\nNo score change since it was listed.\n\n### Photoroom API\n\n- -2.6 on 4 November 2026 (C to D): correction, time\n- +0.1 on 27 October 2026: checklist\n\n## Verdicts\n\n**Abyssale.** Abyssale publishes a full OpenAPI file, dated versions, tiered rate limits with Retry-After, one error envelope and per-tool OAuth scopes on its MCP server. API access starts at $45 a seat a month after a 14-day trial, and no status page or published SLA was found.\n\n**Photoroom API.** A call costs $0.02 for background removal or $0.10 for any combination of edits, and a sandbox key gives 1,000 free watermarked calls a month without a card. No status page or official SDK was found, and Photoroom's privacy policy and security page disagree on whether API images train its models.\n\n## Before you call either\n\n### Abyssale\n\n1. Branch on the error `id`, never the message; `request_rate_limited` means wait Retry-After seconds\n2. Multiply credits by formats before a batch, since 200 products in 6 formats cost 1,200 credits\n3. Ask the MCP user to approve only `read:design` unless the task must generate or change designs\n4. Use asynchronous generation for several formats and deduplicate webhooks on `X-Abyssale-Delivery-Id`\n5. Check `GET /credits` first; it costs nothing and shows both balances\n\n### Photoroom API\n\n1. Send the key in the `x-api-key` header. Prefix it with `sandbox_` while testing, because calls with the plain key consume paid images\n2. Save the response body as a file. A 200 returns image bytes, PNG by default, and any other status returns JSON with `error.message` or `detail`\n3. Send model selectors such as `pr-ai-shadows-model-version: 2026-04-15` as HTTP headers, not form fields. They are not in the OpenAPI file\n4. Stay under 60 images a minute. On 429 back off with an exponential delay, and set a client timeout of at least 60 seconds for AI edits\n5. Use `POST /v2/edit` with `imageFile` for local files and `GET /v2/edit` with `imageUrl` for hosted ones. Each call takes one image\n\n## Questions\n\n### Which is better for AI agents, Abyssale or Photoroom API?\n\nAbyssale scores 65.6 (B) on agent readiness against Photoroom API's 53.5 (D), and leads in 5 of 7 scored categories. Photoroom API leads on payments \u0026 pricing.\n\n### Do Abyssale and Photoroom API need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Abyssale and Photoroom API without installing anything?\n\nYes. Abyssale has a hosted endpoint at https://api.abyssale.com and Photoroom API at https://image-api.photoroom.com/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/abyssale-vs-photoroom.json, and with the fewest tokens: https://www.anchorterminal.com/compare/abyssale-vs-photoroom.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"abyssale\", \"b\": \"photoroom\"}`. From a terminal: `anchor compare abyssale photoroom`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/abyssale.json and https://www.anchorterminal.com/api/v1/tools/photoroom.json\n\n## Other comparisons with Abyssale or Photoroom API\n\n- [APITemplate.io vs Photoroom API](https://www.anchorterminal.com/compare/apitemplate-io-vs-photoroom.md)\n- [Bannerbear API + MCP vs Photoroom API](https://www.anchorterminal.com/compare/bannerbear-vs-photoroom.md)\n- [Canva REST APIs + MCP vs Photoroom API](https://www.anchorterminal.com/compare/canva-vs-photoroom.md)\n- [Contentdrips API and MCP vs Photoroom API](https://www.anchorterminal.com/compare/contentdrips-vs-photoroom.md)\n- [Creatomate vs Photoroom API](https://www.anchorterminal.com/compare/creatomate-vs-photoroom.md)\n- [DynaPictures vs Photoroom API](https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.md)\n- [Layerre vs Photoroom API](https://www.anchorterminal.com/compare/layerre-vs-photoroom.md)\n- [Photoroom API vs Pictify](https://www.anchorterminal.com/compare/photoroom-vs-pictify.md)\n- [Photoroom API vs Placid API + MCP](https://www.anchorterminal.com/compare/photoroom-vs-placid.md)\n- [Photoroom API vs PostNitro](https://www.anchorterminal.com/compare/photoroom-vs-postnitro.md)\n- [Photoroom API vs Robolly](https://www.anchorterminal.com/compare/photoroom-vs-robolly.md)\n- [Photoroom API vs Shotstack](https://www.anchorterminal.com/compare/photoroom-vs-shotstack.md)\n- [Photoroom API vs Templated API + MCP](https://www.anchorterminal.com/compare/photoroom-vs-templated.md)\n- [Abyssale vs Adobe Photoshop API](https://www.anchorterminal.com/compare/abyssale-vs-adobe-photoshop-api.md)\n- [Abyssale vs APITemplate.io](https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io.md)\n- [Abyssale vs Bannerbear API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-bannerbear.md)\n- [Abyssale vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/abyssale-vs-canva.md)\n- [Abyssale vs Contentdrips API and MCP](https://www.anchorterminal.com/compare/abyssale-vs-contentdrips.md)\n- [Abyssale vs Creatomate](https://www.anchorterminal.com/compare/abyssale-vs-creatomate.md)\n- [Abyssale vs DynaPictures](https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.md)\n- [Abyssale vs Layerre](https://www.anchorterminal.com/compare/abyssale-vs-layerre.md)\n- [Abyssale vs Osmo CLI](https://www.anchorterminal.com/compare/abyssale-vs-osmo-cli.md)\n- [Abyssale vs Pictify](https://www.anchorterminal.com/compare/abyssale-vs-pictify.md)\n- [Abyssale vs Pixelixe](https://www.anchorterminal.com/compare/abyssale-vs-pixelixe.md)\n- [Abyssale vs Placid API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-placid.md)\n- [Abyssale vs PostNitro](https://www.anchorterminal.com/compare/abyssale-vs-postnitro.md)\n- [Abyssale vs Robolly](https://www.anchorterminal.com/compare/abyssale-vs-robolly.md)\n- [Abyssale vs Shotstack](https://www.anchorterminal.com/compare/abyssale-vs-shotstack.md)\n- [Abyssale vs Templated API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-templated.md)\n- [Adobe Photoshop API vs Photoroom API](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-photoroom.md)\n- [Osmo CLI vs Photoroom API](https://www.anchorterminal.com/compare/osmo-cli-vs-photoroom.md)\n- [Photoroom API vs Pixelixe](https://www.anchorterminal.com/compare/photoroom-vs-pixelixe.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Abyssale vs Photoroom API",
        "url": ""
      }
    ],
    "description": "Abyssale scores 65.6 (B) to Photoroom's 53.5 (D) for image editing. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Abyssale B 65.6",
      "Photoroom API D 53.5",
      "scores"
    ],
    "h1": "Abyssale vs Photoroom API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/abyssale-vs-photoroom",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Abyssale vs Photoroom for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom"
  },
  "tokens": {
    "markdown": 4700,
    "slim": 2680
  },
  "version": 1
}
