{
  "data": {
    "a": {
      "slug": "dynapictures",
      "name": "DynaPictures",
      "vendor": "DynaPictures GmbH",
      "vendorUrl": "https://dynapictures.com",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "DynaPictures, from DynaPictures GmbH in Freiburg, fills templates made in its no-code editor with data to produce images, multi-page PDFs, countdown timer GIFs and AI images, through a REST API, image URLs, forms and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/dynapictures",
      "markdownUrl": "https://www.anchorterminal.com/tools/dynapictures.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dynapictures.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dynapictures.json",
      "dns": "dynapictures.grade.anchorterminal.com",
      "license": "Closed service under the DynaPictures terms of use (revision 2/2026)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.dynapictures.com",
      "packages": [],
      "auth": "api-key",
      "authNotes": "One API key per user, copied from the account page and sent as `Authorization: Bearer`, for both the REST API and the MCP server at mcp.dynapictures.com/mcp. The key carries the user's full access, with no workspace or action limits, and a new key is requested by email. No OAuth.",
      "pricing": "freemium",
      "pricingNotes": "Free plan, and a 14-day trial with 30 API credits, neither needing a card. Lite from 250 images a month and Pro from 2,000, priced through a FastSpring checkout whose amounts are drawn by script. One credit per image or PDF page. AI credit packs from $20 for 1,000 credits (about 250 images), which never expire.",
      "priceSummary": "$0.02 / credit",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Subscriptions and credit packs through FastSpring. No x402, MPP or L402 in the OpenAPI, llms.txt, auth.md or the agent skill (checked 2026-11-06). A spent quota returns 403 and missing AI credits 402, with no payment requirements.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://dynapictures.com/docs/",
      "llmsTxt": "https://dynapictures.com/llms.txt",
      "openapi": "https://dynapictures.com/openapi.json",
      "capabilities": [
        "design.templates",
        "design.render",
        "pdf.generate",
        "image.generate"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "api-key",
        "freemium",
        "free-tier",
        "no-card",
        "sla",
        "eu"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 43.2,
        "grade": "E",
        "agentReady": false,
        "rank": 1239,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 13,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 45,
          "maintenance": 4,
          "payments": 30,
          "reliability": 42,
          "schema": 82,
          "security": 26,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "An OpenAPI 3.1 file, an agent skill and a six-month removal notice with Sunset headers make DynaPictures' template rendering easy to plan around, with a free plan and no-card trial. The single API key opens the whole account, requests aren't idempotent, and no changelog, status page or dated release was found.",
        "bestFor": "Personalised images and PDFs per record, image URLs in emails and pages, and email countdown timers, for marketing teams in the EU.",
        "strengths": [
          "OpenAPI 3.1 with 20 paths, llms.txt, auth.md and an agent skill written for agents",
          "Removals announced six months ahead with Deprecation and Sunset headers",
          "Free plan and a 14-day trial with 30 API credits, no card",
          "Identical image URLs return a cached image without using another credit",
          "Terms guarantee 94 per cent annual availability; AI sub-processors named in the privacy policy"
        ],
        "weaknesses": [
          "One API key per user with full account access and no scopes; a new key needs an email to support",
          "Generation requests aren't idempotent, so a retry can spend a second credit",
          "No changelog, status page or dated release found",
          "The docs' Errors section is unedited template text",
          "Not in the official MCP registry, and plan prices are drawn by script"
        ],
        "agentNotes": [
          "Use `GET /templates` to find a template UID and its layer names before generating",
          "Check whether an image exists before retrying a timed-out `POST /designs/{UID}`; retries can be charged",
          "Treat 403 as a spent quota or expired trial and stop; wait for `Retry-After` only on 503",
          "Poll `GET /ai/generate/{jobUid}` about every 2 seconds and download the result, since the URL may expire",
          "Keep the API key out of image URLs; use signed or public links for embedding"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 43.2
          }
        ],
        "editorialScores": {
          "ergonomics": 45,
          "maintenance": 4,
          "payments": 30,
          "reliability": 42,
          "schema": 82,
          "security": 26,
          "transparency": 63
        },
        "provenanceScore": 63,
        "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": {
        "http": "curl https://api.dynapictures.com/workspaces -H \"Authorization: Bearer YOUR_API_KEY\"",
        "config": {
          "mcpServers": {
            "dynapictures": {
              "headers": {
                "Authorization": "Bearer YOUR_API_KEY"
              },
              "url": "https://mcp.dynapictures.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/dynapictures"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "AI credit pack",
          "unit": "credit",
          "usd": 0.02,
          "note": "$20 for 1,000 AI credits, about 250 AI images; packs never expire"
        }
      ],
      "provenance": {
        "legalEntity": "DynaPictures GmbH",
        "domain": "dynapictures.com",
        "domainRegistered": "2021-03-14",
        "endpointOnVendorDomain": true,
        "terms": "https://dynapictures.com/p/terms",
        "privacy": "https://dynapictures.com/p/privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms (revision 2/2026) and privacy policy name DynaPictures GmbH, Zasiusstr. 6a, 79102 Freiburg im Breisgau, Germany. The terms apply to business customers only and guarantee 94 per cent annual availability.",
          "No clause on automated access to the website was found in the terms.",
          "dynapictures.com/robots.txt disallows only the /tools/r/ paths. api.dynapictures.com/robots.txt answers 401.",
          "RDAP gives dynapictures.com a registration date of 14 March 2021.",
          "/.well-known/security.txt returns 404. No status page or changelog found."
        ],
        "score": 63
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/dynapictures.json",
      "live": {
        "slug": "dynapictures",
        "probe": {
          "target": "https://api.dynapictures.com",
          "method": "get",
          "lastAt": "2026-11-07T18:20:21.965331454Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 339,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 220,
          "p95ms24h": 337,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "securityTxt": {
          "url": "https://dynapictures.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:15.164343855Z"
        },
        "llmsTxt": {
          "url": "https://dynapictures.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:20.007030228Z"
        },
        "pages": [
          {
            "url": "https://dynapictures.com/p/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:06.124953966Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ef81a0377c7a"
          },
          {
            "url": "https://dynapictures.com/p/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:08.231434531Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6e15c5e4788d"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.dynapictures.com/mcp",
          "checkedAt": "2026-11-07T01:43:58.466398541Z",
          "status": "error",
          "note": "Post \"https://mcp.dynapictures.com/mcp\": dial tcp: lookup mcp.dynapictures.com on 192.168.1.1:53: no such host",
          "changedAt": "2026-11-07T01:43:58.466398541Z"
        },
        "updatedAt": "2026-11-07T18:20:21.965331454Z"
      }
    },
    "answer": "Photoroom API scores 53.5 (D) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories.",
    "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": 23,
        "category": "security",
        "leads": "photoroom",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "One API key per user with the user's full access, not limited to workspaces or actions; a new key is requested by email to support, with no rotation in the account (10 of 30). No read-only mode, and the MCP server can author and change designs (3 of 20). Tools return the account's own templates and renders; image layers accept outside URLs (10 of 15). A list of generated images, with no audit log documented (3 of 15). No security.txt, disclosure policy, bug bounty or certification found (0). 10 + 3 + 10 + 3 + 0 = 26.",
          "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": 26,
          "b": 49
        }
      },
      {
        "by": 19,
        "category": "ergonomics",
        "leads": "photoroom",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The MCP tool definitions weren't read (listing them needs a session), and llms.txt describes groups that include layer-by-layer design authoring, so the count is unknown. REST responses are small objects with image URLs (12 of 25). Template and generated-image listings, with no field selection documented (10 of 20). Errors are JSON with a `message` and documented statuses, without codes (12 of 20). Requests aren't idempotent, by the vendor's own note, though identical image URLs are served from cache without a credit (6 of 20). An Editor SDK for embedding the editor, and no API client SDKs (5 of 15). 12 + 10 + 12 + 6 + 5 = 45.",
          "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": 45,
          "b": 64
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "photoroom",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Image allowances per plan and AI credit packs ($20 for 1,000 credits) are public, but plan prices are filled in by the FastSpring script and weren't readable (10 of 20). Free plan and a 14-day trial with 30 API credits, no card (20). auth.md says a person has to copy the key; there is no OAuth or programmatic key (0). 0 + 10 + 20 + 0 = 30.",
          "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": 30,
          "b": 40
        }
      },
      {
        "by": 9,
        "category": "maintenance",
        "leads": "photoroom",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "No changelog, release notes or dated API change was found, and the MCP server card gives version 1.0.0 with no date (0). No dated changes since 8 August (0). Support by email and contact form, not tested (4 of 15). Not in the official MCP registry and no API SDKs (0). No public package or repository (0). 0 + 0 + 4 + 0 + 0 = 4.",
          "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": 4,
          "b": 13
        }
      },
      {
        "by": 6,
        "category": "transparency",
        "leads": "photoroom",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under terms (revision 2/2026) from DynaPictures GmbH in Freiburg, for business customers (15). The privacy policy names the controller, keeps generated images as long as needed or until deleted, gives plan image retention (3 months on Lite), and says the named AI providers don't train on API inputs under their API terms; other periods follow bookkeeping law (20 of 30). The OpenAPI file commits to six months' notice before removing an endpoint or field, with Deprecation and Sunset headers (16 of 20). AI sub-processors named with addresses (OpenAI, Google, Black Forest Labs, Replicate) and FastSpring for payments, while hosting providers aren't named (12 of 20). 15 + 20 + 16 + 12 = 63.",
          "b": "Per the 9 October check, not re-read on 4 November. Closed hosted service under the Photoroom Terms and Conditions effective 29 July 2026, which name the application programming interface. Sample code is MIT (15). The security page gives retention figures (images discarded after the call, operational logs 15 days, API access logs one year). The statements on training disagree. The privacy policy of March 2026 says model improvement does not apply to API images, the security page says self-serve API plans train by default with an opt-out, and the terms authorise training on user content with an opt-out. A DPA is for Enterprise customers only (14). Preview and alpha functions carry a two-week notice, the 2024 base URL change gave a dated deadline, and the AI Backgrounds v2 model is marked deprecated with no removal date (12). The security page names GCP, AWS, Cloudflare, Datadog and Vercel and says hosting is in the United States. The full list is in the trust centre, which was not read (16)."
        },
        "scores": {
          "a": 63,
          "b": 69
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "DynaPictures GmbH",
        "b": "Photoroom",
        "name": "Vendor"
      },
      {
        "a": "https://api.dynapictures.com",
        "b": "https://image-api.photoroom.com/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Closed service under the DynaPictures terms of use (revision 2/2026)",
        "b": "Proprietary service under the Photoroom Terms and Conditions. The sample code repository is MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "1",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "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": "not found in the text",
        "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": "Photoroom API scores 53.5 (D) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, DynaPictures or Photoroom API?"
      },
      {
        "answer": "DynaPictures needs an API key. Photoroom API takes an API key or an OAuth sign-in.",
        "question": "Do DynaPictures and Photoroom API need an API key?"
      },
      {
        "answer": "Yes. DynaPictures has a hosted endpoint at https://api.dynapictures.com and Photoroom API at https://image-api.photoroom.com/v2.",
        "question": "Can an agent call DynaPictures and Photoroom API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Personalised images and PDFs per record, image URLs in emails and pages, and email countdown timers, for marketing teams in the EU.",
        "slug": "dynapictures",
        "watchFor": "One API key per user with full account access and no scopes; a new key needs an email to support"
      },
      {
        "aheadOn": [
          "Agent ergonomics, 64 against 45",
          "Security \u0026 auth, 49 against 26",
          "Payments \u0026 pricing, 40 against 30",
          "Maintenance \u0026 community, 13 against 4",
          "Transparency \u0026 trust, 69 against 63"
        ],
        "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": {
      "dynapictures": 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": "design.templates",
      "name": "Design templates"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures.json",
        "title": "Adobe Photoshop API vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.json",
        "title": "APITemplate.io vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures"
      },
      {
        "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-dynapictures.json",
        "title": "Bannerbear API + MCP vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures"
      },
      {
        "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-dynapictures.json",
        "title": "Canva REST APIs + MCP vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/canva-vs-dynapictures"
      },
      {
        "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-dynapictures.json",
        "title": "Contentdrips API and MCP vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures"
      },
      {
        "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-dynapictures.json",
        "title": "Creatomate vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-dynapictures"
      },
      {
        "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-layerre.json",
        "title": "DynaPictures vs Layerre",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-layerre"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-pictify.json",
        "title": "DynaPictures vs Pictify",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-pixelixe.json",
        "title": "DynaPictures vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-placid.json",
        "title": "DynaPictures vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-postnitro.json",
        "title": "DynaPictures vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-robolly.json",
        "title": "DynaPictures vs Robolly",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-shotstack.json",
        "title": "DynaPictures vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-templated.json",
        "title": "DynaPictures vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-templated"
      },
      {
        "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-dynapictures.json",
        "title": "Abyssale vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli.json",
        "title": "DynaPictures vs Osmo CLI",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom.json",
        "title": "Abyssale vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom"
      },
      {
        "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": [
      {
        "by": 0,
        "dynapictures": 42,
        "edge": "",
        "key": "reliability",
        "name": "Reliability",
        "photoroom": 42,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "dynapictures": 82,
        "edge": "photoroom",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "photoroom": 86,
        "weight": 13
      },
      {
        "by": 19,
        "dynapictures": 45,
        "edge": "photoroom",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "photoroom": 64,
        "weight": 13
      },
      {
        "by": 23,
        "dynapictures": 26,
        "edge": "photoroom",
        "key": "security",
        "name": "Security \u0026 auth",
        "photoroom": 49,
        "weight": 14
      },
      {
        "by": 10,
        "dynapictures": 30,
        "edge": "photoroom",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "photoroom": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "dynapictures": 4,
        "edge": "photoroom",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "photoroom": 13,
        "weight": 7
      },
      {
        "by": 6,
        "dynapictures": 63,
        "edge": "photoroom",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "photoroom": 69,
        "weight": 7
      }
    ],
    "summary": "Photoroom API scores 53.5 (D) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. Both do design templates.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "dynapictures": "An OpenAPI 3.1 file, an agent skill and a six-month removal notice with Sunset headers make DynaPictures' template rendering easy to plan around, with a free plan and no-card trial. The single API key opens the whole account, requests aren't idempotent, and no changelog, status page or dated release 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/dynapictures-vs-photoroom",
    "json": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.min.md"
  },
  "markdown": "Photoroom API scores 53.5 (D) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. Both do design templates.\n\n- DynaPictures: grade E, 43.2/100, rank #1239 of 1486. Markdown https://www.anchorterminal.com/tools/dynapictures.md · JSON https://www.anchorterminal.com/api/v1/tools/dynapictures.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### DynaPictures (E)\n\nGood for: Personalised images and PDFs per record, image URLs in emails and pages, and email countdown timers, for marketing teams in the EU.\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: One API key per user with full account access and no scopes; a new key needs an email to support\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- Agent ergonomics, 64 against 45\n- Security \u0026 auth, 49 against 26\n- Payments \u0026 pricing, 40 against 30\n- Maintenance \u0026 community, 13 against 4\n- Transparency \u0026 trust, 69 against 63\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### Security \u0026 auth: Photoroom API +23\n\n- DynaPictures (26): One API key per user with the user's full access, not limited to workspaces or actions; a new key is requested by email to support, with no rotation in the account (10 of 30). No read-only mode, and the MCP server can author and change designs (3 of 20). Tools return the account's own templates and renders; image layers accept outside URLs (10 of 15). A list of generated images, with no audit log documented (3 of 15). No security.txt, disclosure policy, bug bounty or certification found (0). 10 + 3 + 10 + 3 + 0 = 26.\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### Agent ergonomics: Photoroom API +19\n\n- DynaPictures (45): The MCP tool definitions weren't read (listing them needs a session), and llms.txt describes groups that include layer-by-layer design authoring, so the count is unknown. REST responses are small objects with image URLs (12 of 25). Template and generated-image listings, with no field selection documented (10 of 20). Errors are JSON with a `message` and documented statuses, without codes (12 of 20). Requests aren't idempotent, by the vendor's own note, though identical image URLs are served from cache without a credit (6 of 20). An Editor SDK for embedding the editor, and no API client SDKs (5 of 15). 12 + 10 + 12 + 6 + 5 = 45.\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### Payments \u0026 pricing: Photoroom API +10\n\n- DynaPictures (30): No x402, MPP or L402 (0). Image allowances per plan and AI credit packs ($20 for 1,000 credits) are public, but plan prices are filled in by the FastSpring script and weren't readable (10 of 20). Free plan and a 14-day trial with 30 API credits, no card (20). auth.md says a person has to copy the key; there is no OAuth or programmatic key (0). 0 + 10 + 20 + 0 = 30.\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### Maintenance \u0026 community: Photoroom API +9\n\n- DynaPictures (4): No changelog, release notes or dated API change was found, and the MCP server card gives version 1.0.0 with no date (0). No dated changes since 8 August (0). Support by email and contact form, not tested (4 of 15). Not in the official MCP registry and no API SDKs (0). No public package or repository (0). 0 + 0 + 4 + 0 + 0 = 4.\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### Transparency \u0026 trust: Photoroom API +6\n\n- DynaPictures (63): Closed service under terms (revision 2/2026) from DynaPictures GmbH in Freiburg, for business customers (15). The privacy policy names the controller, keeps generated images as long as needed or until deleted, gives plan image retention (3 months on Lite), and says the named AI providers don't train on API inputs under their API terms; other periods follow bookkeeping law (20 of 30). The OpenAPI file commits to six months' notice before removing an endpoint or field, with Deprecation and Sunset headers (16 of 20). AI sub-processors named with addresses (OpenAI, Google, Black Forest Labs, Replicate) and FastSpring for payments, while hosting providers aren't named (12 of 20). 15 + 20 + 16 + 12 = 63.\n- Photoroom API (69): Per the 9 October check, not re-read on 4 November. Closed hosted service under the Photoroom Terms and Conditions effective 29 July 2026, which name the application programming interface. Sample code is MIT (15). The security page gives retention figures (images discarded after the call, operational logs 15 days, API access logs one year). The statements on training disagree. The privacy policy of March 2026 says model improvement does not apply to API images, the security page says self-serve API plans train by default with an opt-out, and the terms authorise training on user content with an opt-out. A DPA is for Enterprise customers only (14). Preview and alpha functions carry a two-week notice, the 2024 base URL change gave a dated deadline, and the AI Backgrounds v2 model is marked deprecated with no removal date (12). The security page names GCP, AWS, Cloudflare, Datadog and Vercel and says hosting is in the United States. The full list is in the trust centre, which was not read (16).\n\n## Score by category\n\n| Category | Weight | DynaPictures | Photoroom API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 42 | 42 | even |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 86 | Photoroom API +4 |\n| Agent ergonomics | 13% (16.2 this run) | 45 | 64 | Photoroom API +19 |\n| Security \u0026 auth | 14% (17.5 this run) | 26 | 49 | Photoroom API +23 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 40 | Photoroom API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 4 | 13 | Photoroom API +9 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 63 | 69 | Photoroom API +6 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **43.2 · E** | **53.5 · D** | |\n\n## Facts side by side\n\n| Fact | DynaPictures | Photoroom API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | DynaPictures GmbH | Photoroom |\n| Hosted endpoint | `https://api.dynapictures.com` | `https://image-api.photoroom.com/v2` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Closed service under the DynaPictures terms of use (revision 2/2026) | Proprietary service under the Photoroom Terms and Conditions. The sample code repository is MIT |\n| Tools exposed | none | 1 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | none | 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 | not found in the text | 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### DynaPictures\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**DynaPictures.** An OpenAPI 3.1 file, an agent skill and a six-month removal notice with Sunset headers make DynaPictures' template rendering easy to plan around, with a free plan and no-card trial. The single API key opens the whole account, requests aren't idempotent, and no changelog, status page or dated release 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### DynaPictures\n\n1. Use `GET /templates` to find a template UID and its layer names before generating\n2. Check whether an image exists before retrying a timed-out `POST /designs/{UID}`; retries can be charged\n3. Treat 403 as a spent quota or expired trial and stop; wait for `Retry-After` only on 503\n4. Poll `GET /ai/generate/{jobUid}` about every 2 seconds and download the result, since the URL may expire\n5. Keep the API key out of image URLs; use signed or public links for embedding\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, DynaPictures or Photoroom API?\n\nPhotoroom API scores 53.5 (D) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories.\n\n### Do DynaPictures and Photoroom API need an API key?\n\nDynaPictures needs an API key. Photoroom API takes an API key or an OAuth sign-in.\n\n### Can an agent call DynaPictures and Photoroom API without installing anything?\n\nYes. DynaPictures has a hosted endpoint at https://api.dynapictures.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/dynapictures-vs-photoroom.json, and with the fewest tokens: https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"dynapictures\", \"b\": \"photoroom\"}`. From a terminal: `anchor compare dynapictures photoroom`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/dynapictures.json and https://www.anchorterminal.com/api/v1/tools/photoroom.json\n\n## Other comparisons with DynaPictures or Photoroom API\n\n- [Adobe Photoshop API vs DynaPictures](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures.md)\n- [APITemplate.io vs DynaPictures](https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.md)\n- [APITemplate.io vs Photoroom API](https://www.anchorterminal.com/compare/apitemplate-io-vs-photoroom.md)\n- [Bannerbear API + MCP vs DynaPictures](https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.md)\n- [Bannerbear API + MCP vs Photoroom API](https://www.anchorterminal.com/compare/bannerbear-vs-photoroom.md)\n- [Canva REST APIs + MCP vs DynaPictures](https://www.anchorterminal.com/compare/canva-vs-dynapictures.md)\n- [Canva REST APIs + MCP vs Photoroom API](https://www.anchorterminal.com/compare/canva-vs-photoroom.md)\n- [Contentdrips API and MCP vs DynaPictures](https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures.md)\n- [Contentdrips API and MCP vs Photoroom API](https://www.anchorterminal.com/compare/contentdrips-vs-photoroom.md)\n- [Creatomate vs DynaPictures](https://www.anchorterminal.com/compare/creatomate-vs-dynapictures.md)\n- [Creatomate vs Photoroom API](https://www.anchorterminal.com/compare/creatomate-vs-photoroom.md)\n- [DynaPictures vs Layerre](https://www.anchorterminal.com/compare/dynapictures-vs-layerre.md)\n- [DynaPictures vs Pictify](https://www.anchorterminal.com/compare/dynapictures-vs-pictify.md)\n- [DynaPictures vs Pixelixe](https://www.anchorterminal.com/compare/dynapictures-vs-pixelixe.md)\n- [DynaPictures vs Placid API + MCP](https://www.anchorterminal.com/compare/dynapictures-vs-placid.md)\n- [DynaPictures vs PostNitro](https://www.anchorterminal.com/compare/dynapictures-vs-postnitro.md)\n- [DynaPictures vs Robolly](https://www.anchorterminal.com/compare/dynapictures-vs-robolly.md)\n- [DynaPictures vs Shotstack](https://www.anchorterminal.com/compare/dynapictures-vs-shotstack.md)\n- [DynaPictures vs Templated API + MCP](https://www.anchorterminal.com/compare/dynapictures-vs-templated.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 DynaPictures](https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.md)\n- [DynaPictures vs Osmo CLI](https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli.md)\n- [Abyssale vs Photoroom API](https://www.anchorterminal.com/compare/abyssale-vs-photoroom.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": "DynaPictures vs Photoroom API",
        "url": ""
      }
    ],
    "description": "Photoroom scores 53.5 (D) to DynaPictures's 43.2 (E) for design templates. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "DynaPictures E 43.2",
      "Photoroom API D 53.5",
      "scores"
    ],
    "h1": "DynaPictures vs Photoroom API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/dynapictures-vs-photoroom",
    "published": "2026-10-01",
    "section": "tools",
    "title": "DynaPictures vs Photoroom for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom"
  },
  "tokens": {
    "markdown": 4500,
    "slim": 2430
  },
  "version": 1
}
