{
  "data": {
    "a": {
      "slug": "apitemplate-io",
      "name": "APITemplate.io",
      "vendor": "Alphacloud Technologies Pte Ltd",
      "vendorUrl": "https://apitemplate.io",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "APITemplate.io generates PDF documents and JPEG or PNG images from reusable templates filled with JSON data, and converts HTML, Markdown or a web page to PDF. Agents call its REST API with an API key.",
      "url": "https://www.anchorterminal.com/tools/apitemplate-io",
      "markdownUrl": "https://www.anchorterminal.com/tools/apitemplate-io.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/apitemplate-io.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/apitemplate-io.json",
      "dns": "apitemplate-io.grade.anchorterminal.com",
      "license": "Proprietary service under APITemplate.io's Terms of Use. The SDK repositories have no licence file, and the Python client's `setup.py` names Apache 2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://rest.apitemplate.io/v2",
      "packages": [],
      "auth": "api-key",
      "authNotes": "Calls send an API key in the `X-API-KEY` header, or as `Authorization: Token \u003ckey\u003e`. A browser signup at app.apitemplate.io creates the key, self-serve, and it can be regenerated under API Integration. Each team has its own key, separate from the personal one. No scopes or read-only keys were found. Direct URL image links carry a per-template `auth` code in the query string, with a quota and an expiry.",
      "pricing": "freemium",
      "pricingNotes": "The free plan gives 50 images or PDFs a month and 3 templates with no card, so an agent's owner can start without a contract. PDF-only plans run from $24 a month for 3,000 PDFs to $179 for 25,000, and image and PDF plans from $35 for 1,500 files to $179 for 20,000, billed monthly. Annual billing is up to 20 per cent less. Overage billing exists only on Enterprise plans by request, with no rate published (checked 2026-10-09).",
      "priceSummary": "$24 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Monthly subscriptions paid through Stripe. No x402, MPP or L402 in the API description, the docs or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://apitemplate.io/docs/",
      "openapi": "https://apitemplateio.s3.ap-southeast-1.amazonaws.com/redoc_apiv2/apitemplateiov2_api.yaml",
      "capabilities": [
        "design.templates",
        "design.render",
        "pdf.generate",
        "pdf.convert",
        "pdf.merge"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "openapi",
        "no-card",
        "async-jobs",
        "webhooks",
        "images",
        "pdf",
        "regional-endpoints",
        "status-page",
        "sla"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 30.1,
        "grade": "F",
        "agentReady": false,
        "rank": 1420,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 18,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 24,
          "maintenance": 11,
          "payments": 30,
          "reliability": 45,
          "schema": 5,
          "security": 48,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-05"
        },
        "negative": -2,
        "negativeNotes": [
          "2026-10-09. Two vendor documentation pages disagree on regional endpoints. The first-request guide (https://apitemplate.io/docs/getting-started/first-api-request) lists `rest.apitemplate.io` as the US default with `rest-eu` and `rest-sg` hosts. The API reference and REST guide (https://apitemplate.io/docs/integrations/rest-api) list it as the Singapore default with `rest-de` and `rest-us`. The vendor says data is processed and stored in the region of the endpoint, so the conflict affects data residency. We did not test which hostnames resolve. 2 points."
        ],
        "verdict": "APITemplate.io publishes rate limits, regional endpoints, a 99.9 per cent uptime SLA and a free plan of 50 files a month with no card. Each account or team has one unscoped API key, no changelog or deprecation notices were found, the SDK repositories date from September 2023, and two documentation pages name different regional hostnames.",
        "bestFor": "Owners who need invoices, certificates, reports and social images filled from templates, with HTML, URL and Markdown to PDF on the same key and a choice of storage region.",
        "strengths": [
          "Rate limits are published as 100 requests per 10 seconds per IP address and 100 concurrent synchronous PDF requests per account",
          "Regional endpoints in Singapore, Frankfurt, N. Virginia and Sydney process and store requests and output in the region, per the REST guide",
          "The SLA page commits to 99.9 per cent monthly availability for the REST API and dashboard, with service credits of 10 to 50 per cent",
          "Free plan of 50 images or PDFs a month with no card, and `export_type=file` returns output without vendor storage"
        ],
        "weaknesses": [
          "One API key per account or team with no scopes or read-only mode",
          "No changelog, release notes or dated deprecation notices were found, and the terms allow the service to change with or without notice",
          "The five SDK repositories each hold a generated client committed on 17 September 2023, with no tags, no licence file and placeholder install commands",
          "The first-request guide names `rest-eu` and `rest-sg` hostnames and a US default, while the REST guide names `rest-de` and `rest-us` and a Singapore default",
          "The terms of use forbid any robot or other automatic device accessing the Site or Service, and bar load or vulnerability testing without agreement"
        ],
        "agentNotes": [
          "Send the key in the `X-API-KEY` header and pick the regional host first, because requests and output are processed and stored in that region",
          "Set `expiration` in minutes or `export_type=file` for sensitive output. By default the download URL does not expire",
          "On HTTP 429 pause and retry on your own schedule. The docs give no `Retry-After` header or backoff interval",
          "Use Direct URL `auth` codes only in page markup, with a quota and an expiry set, never the API key"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 30.1
          }
        ],
        "editorialScores": {
          "ergonomics": 24,
          "maintenance": 11,
          "payments": 30,
          "reliability": 45,
          "schema": 5,
          "security": 48,
          "transparency": 58
        },
        "provenanceScore": 61,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-05",
            "maintenance": "2026-11-05",
            "payments": "2026-11-05",
            "reliability": "2026-11-05",
            "schema": "2026-11-05",
            "security": "2026-11-05",
            "transparency": "2026-11-05"
          },
          "last": "2026-11-05",
          "lastMoved": "2026-11-05",
          "oldest": "2026-11-05",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST \"https://rest.apitemplate.io/v2/create-image?template_id=TEMPLATE_ID\" -H \"X-API-KEY: YOUR_API_KEY\" -H \"Content-Type: application/json\" -d '{\"overrides\": [{\"name\": \"title\", \"text\": \"Hello World\"}]}'"
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/apitemplate-io"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "PDF Basic",
          "unit": "month",
          "usd": 24,
          "note": "3,000 PDFs a month, 20 templates. $19 a month billed annually"
        },
        {
          "item": "PDF Standard",
          "unit": "month",
          "usd": 89,
          "note": "12,000 PDFs a month, 180 templates. $69 a month billed annually"
        },
        {
          "item": "PDF Enterprise",
          "unit": "month",
          "usd": 179,
          "note": "25,000 PDFs a month, unlimited templates, own storage. $139 a month billed annually"
        },
        {
          "item": "Starter (image and PDF)",
          "unit": "month",
          "usd": 35,
          "note": "1,500 images or PDFs a month, 15 templates. $29 a month billed annually"
        },
        {
          "item": "Standard (image and PDF)",
          "unit": "month",
          "usd": 89,
          "note": "9,000 images or PDFs a month, 150 templates. $69 a month billed annually"
        },
        {
          "item": "Enterprise (image and PDF)",
          "unit": "month",
          "usd": 179,
          "note": "20,000 images or PDFs a month, unlimited templates, own storage. $139 a month billed annually"
        }
      ],
      "provenance": {
        "legalEntity": "Alphacloud Technologies Pte Ltd",
        "domain": "apitemplate.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://apitemplate.io/terms-of-use/",
        "privacy": "https://apitemplate.io/privacy-policy/",
        "statusPage": "https://status.apitemplate.io/",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-05",
        "notes": [
          "The terms of use name Alphacloud Technologies Pte Ltd, a Singapore company. The DPA gives Unique Entity Number 201902224G and an address at 50 Lakeside Drive, Singapore 648315.",
          "The terms of use are dated 8 April 2022. They are the customer contract for the service and its APIs. Clause 8.1(b) bars any deep-link, page-scrape, robot, spider or other automatic device used to access, acquire, copy or monitor any portion of the Site or Service (read 5 November 2026).",
          "The privacy policy is dated 21 January 2024 and covers the websites, the app and the APIs. It holds the sub-processor list and the storage regions.",
          "A Data Processing Agreement with standard contractual clauses is at apitemplate.io/data-processing-agreement/, and an SLA dated 13 February 2020 at apitemplate.io/service-level-agreement/.",
          "The API answers at rest.apitemplate.io and regional hosts under apitemplate.io, per the guides. We sent no request to an API host.",
          "apitemplate.io/.well-known/security.txt returned 404 on 9 October 2026.",
          "The status page is hosted by UptimeRobot. Its figures load by script from a path its robots.txt disallows.",
          "The OpenAPI file sits on apitemplateio.s3.ap-southeast-1.amazonaws.com, whose robots.txt answers 403 AccessDenied (5 November 2026).",
          "No changelog or release notes page was found on the site, in the docs or in the SDK repositories."
        ],
        "score": 61
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/apitemplate-io.json",
      "live": {
        "slug": "apitemplate-io",
        "probe": {
          "target": "https://rest.apitemplate.io/v2",
          "method": "get",
          "lastAt": "2026-11-07T19:21:52.512340376Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 546,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 544,
          "p95ms24h": 633,
          "samples24h": 238,
          "samples30d": 7215,
          "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": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 248
            },
            {
              "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": 197,
              "ok": 197
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.apitemplate.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:47:06.454973681Z"
        },
        "securityTxt": {
          "url": "https://apitemplate.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:23.231253153Z"
        },
        "domain": {
          "domain": "apitemplate.io",
          "checkedAt": "2026-11-01T14:21:47.267151528Z"
        },
        "pages": [
          {
            "url": "https://apitemplate.io/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T13:59:25.281628541Z",
            "changedAt": "2026-10-21T00:19:55.227442573Z",
            "fingerprint": "29d83cd2f8ca"
          },
          {
            "url": "https://apitemplate.io/terms-of-use/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T13:59:27.430632711Z",
            "changedAt": "2026-10-21T00:19:57.371218655Z",
            "fingerprint": "573b5c536079"
          }
        ],
        "updatedAt": "2026-11-07T19:21:52.512340376Z"
      }
    },
    "answer": "DynaPictures scores 43.2 (E) on agent readiness against APITemplate.io's 30.1 (F), and leads in 3 of 7 scored categories. APITemplate.io leads on security \u0026 auth and maintenance \u0026 community.",
    "b": {
      "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": 1257,
        "ranked": true,
        "rankOf": 1510,
        "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-07T19:22:04.384664691Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 356,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 221,
          "p95ms24h": 339,
          "samples24h": 210,
          "samples30d": 210,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "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-07T19:22:04.384664691Z"
      }
    },
    "edges": [
      {
        "by": 77,
        "category": "schema",
        "leads": "dynapictures",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. The REST guide links an OpenAPI 3.0.0 description for Postman or code generators, but every reading of the file is struck and none can be taken today (0). No llms.txt (404) and no Markdown docs for agents (0). The operation and parameter descriptions, types, enums, request samples and error schema were read from the file (0, 0 and 0). A `/v2` path in the guides, with no changelog (5). 0+0+0+0+0+5 = 5.",
          "b": "OpenAPI 3.1 at dynapictures.com/openapi.json with 20 paths (25). llms.txt, auth.md and an agent skill in Markdown (10). llms.txt says when to use the product and when it's a poor fit, and the skill gives call order for each job (17 of 20). Enums for formats and options, with layer overrides keyed by layer name (12 of 15). Request examples throughout and a status table in the skill, but the API reference's Errors section is unedited Slate template text about kittens (9 of 15). No URL version, additive changes, removals announced six months ahead with Deprecation and Sunset headers, and no changelog (9 of 15). 25 + 10 + 17 + 12 + 9 + 9 = 82."
        },
        "scores": {
          "a": 5,
          "b": 82
        }
      },
      {
        "by": 22,
        "category": "security",
        "leads": "apitemplate-io",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. Per the 9 October check. One API key per account, regenerable in the console, with a separate key per team (20). The Direct URL `auth` code travels in a query string by design. It is tied to one template with a quota and an expiry and is not the API key, so we took no 10-point deduction. That is a judgement call. No scopes or read-only key; the Direct URL code is the only narrow credential (5). Calls return status and URLs, not third-party content (10). Request logs kept two weeks, visible in the console and switchable off (8). The site states a completed SOC 2 Type II audit with no auditor, period or report shown, plus a security policy page and 2FA. No security.txt (404), disclosure policy or bug bounty found, the value for a bare SOC 2 claim with no report or disclosure route (5). 20+5+10+8+5 = 48.",
          "b": "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."
        },
        "scores": {
          "a": 48,
          "b": 26
        }
      },
      {
        "by": 21,
        "category": "ergonomics",
        "leads": "dynapictures",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. Per the 9 October check except where struck. `export_type=file` returns bytes rather than a stored file and `expiration` sets how long a download URL lasts, per the secure PDF FAQ (15 of 25, an earlier partial kept). Pagination and filters, the error object and the `meta` reference were read from the struck file (0, 0 and 0). Calls are synchronous by default, and the five SDK repositories are generated clients from September 2023 with placeholder install commands, confirmed from clones on 5 November (9 of 15, an earlier partial kept). 15+0+0+0+9 = 24.",
          "b": "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."
        },
        "scores": {
          "a": 24,
          "b": 45
        }
      },
      {
        "by": 7,
        "category": "maintenance",
        "leads": "apitemplate-io",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. Per the 9 October check. No changelog or release notes exist, and the file's Last-Modified header was metadata, not a dated release (0). No dated changelog entries in the last 90 days (0). Support by email with a stated reply within 24 hours and response times in the SLA, with no public changelog (6). Five SDK repositories, each a generated client committed on 17 September 2023; the Python and JavaScript clones on 5 November show no later commit (3). No tags, CI results or licence files in those repositories (2). 0+0+6+3+2 = 11.",
          "b": "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."
        },
        "scores": {
          "a": 11,
          "b": 4
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Alphacloud Technologies Pte Ltd",
        "b": "DynaPictures GmbH",
        "name": "Vendor"
      },
      {
        "a": "https://rest.apitemplate.io/v2",
        "b": "https://api.dynapictures.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under APITemplate.io's Terms of Use. The SDK repositories have no licence file, and the Python client's `setup.py` names Apache 2.0",
        "b": "Closed service under the DynaPictures terms of use (revision 2/2026)",
        "name": "Licence"
      },
      {
        "a": "0",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2.8/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "DynaPictures scores 43.2 (E) on agent readiness against APITemplate.io's 30.1 (F), and leads in 3 of 7 scored categories. APITemplate.io leads on security \u0026 auth and maintenance \u0026 community.",
        "question": "Which is better for AI agents, APITemplate.io or DynaPictures?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do APITemplate.io and DynaPictures need an API key?"
      },
      {
        "answer": "Yes. APITemplate.io has a hosted endpoint at https://rest.apitemplate.io/v2 and DynaPictures at https://api.dynapictures.com.",
        "question": "Can an agent call APITemplate.io and DynaPictures without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 48 against 26",
          "Maintenance \u0026 community, 11 against 4"
        ],
        "also": null,
        "goodFor": "Owners who need invoices, certificates, reports and social images filled from templates, with HTML, URL and Markdown to PDF on the same key and a choice of storage region.",
        "slug": "apitemplate-io",
        "watchFor": "One API key per account or team with no scopes or read-only mode"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 82 against 5",
          "Agent ergonomics, 45 against 24"
        ],
        "also": null,
        "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"
      }
    ],
    "history": {
      "apitemplate-io": [
        {
          "causes": [
            "evidence",
            "correction"
          ],
          "date": "2026-11-05",
          "delta": -16.6,
          "from": 46.7,
          "fromGrade": "D",
          "to": 30.1,
          "toGrade": "F"
        },
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": 0,
          "from": 46.7,
          "fromGrade": "D",
          "to": 46.7,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 46.6,
          "fromGrade": "D",
          "to": 46.7,
          "toGrade": "D"
        }
      ],
      "dynapictures": null
    },
    "job": {
      "capability": "design.templates",
      "name": "Design templates"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-apitemplate-io.json",
        "title": "Adobe Photoshop API vs APITemplate.io",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-apitemplate-io"
      },
      {
        "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-bannerbear.json",
        "title": "APITemplate.io vs Bannerbear API + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-bannerbear"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-canva.json",
        "title": "APITemplate.io vs Canva REST APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-canva"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-contentdrips.json",
        "title": "APITemplate.io vs Contentdrips API and MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-contentdrips"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-creatomate.json",
        "title": "APITemplate.io vs Creatomate",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-creatomate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-layerre.json",
        "title": "APITemplate.io vs Layerre",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-layerre"
      },
      {
        "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/apitemplate-io-vs-pictify.json",
        "title": "APITemplate.io vs Pictify",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-pixelixe.json",
        "title": "APITemplate.io vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-placid.json",
        "title": "APITemplate.io vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro.json",
        "title": "APITemplate.io vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-robolly.json",
        "title": "APITemplate.io vs Robolly",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-shotstack.json",
        "title": "APITemplate.io vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-templated.json",
        "title": "APITemplate.io vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-templated"
      },
      {
        "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/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/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/creatomate-vs-dynapictures.json",
        "title": "Creatomate vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-dynapictures"
      },
      {
        "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-photoroom.json",
        "title": "DynaPictures vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom"
      },
      {
        "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/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-dynapictures.json",
        "title": "Abyssale vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-osmo-cli.json",
        "title": "APITemplate.io vs Osmo CLI",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-osmo-cli"
      },
      {
        "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"
      }
    ],
    "panel": null,
    "scores": [
      {
        "apitemplate-io": 45,
        "by": 3,
        "dynapictures": 42,
        "edge": "apitemplate-io",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "apitemplate-io": 5,
        "by": 77,
        "dynapictures": 82,
        "edge": "dynapictures",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "apitemplate-io": 24,
        "by": 21,
        "dynapictures": 45,
        "edge": "dynapictures",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "apitemplate-io": 48,
        "by": 22,
        "dynapictures": 26,
        "edge": "apitemplate-io",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "apitemplate-io": 30,
        "by": 0,
        "dynapictures": 30,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "apitemplate-io": 11,
        "by": 7,
        "dynapictures": 4,
        "edge": "apitemplate-io",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "apitemplate-io": 60,
        "by": 3,
        "dynapictures": 63,
        "edge": "dynapictures",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "DynaPictures scores 43.2 (E) on agent readiness against APITemplate.io's 30.1 (F), and leads in 3 of 7 scored categories. APITemplate.io leads on security \u0026 auth and maintenance \u0026 community. Both do design templates.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "apitemplate-io": "APITemplate.io publishes rate limits, regional endpoints, a 99.9 per cent uptime SLA and a free plan of 50 files a month with no card. Each account or team has one unscoped API key, no changelog or deprecation notices were found, the SDK repositories date from September 2023, and two documentation pages name different regional hostnames.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures",
    "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.min.md"
  },
  "markdown": "DynaPictures scores 43.2 (E) on agent readiness against APITemplate.io's 30.1 (F), and leads in 3 of 7 scored categories. APITemplate.io leads on security \u0026 auth and maintenance \u0026 community. Both do design templates.\n\n- APITemplate.io: grade F, 30.1/100, rank #1420 of 1510. Markdown https://www.anchorterminal.com/tools/apitemplate-io.md · JSON https://www.anchorterminal.com/api/v1/tools/apitemplate-io.json\n- DynaPictures: grade E, 43.2/100, rank #1257 of 1510. Markdown https://www.anchorterminal.com/tools/dynapictures.md · JSON https://www.anchorterminal.com/api/v1/tools/dynapictures.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### APITemplate.io (F)\n\nGood for: Owners who need invoices, certificates, reports and social images filled from templates, with HTML, URL and Markdown to PDF on the same key and a choice of storage region.\n\nAhead on:\n- Security \u0026 auth, 48 against 26\n- Maintenance \u0026 community, 11 against 4\n\nWatch for: One API key per account or team with no scopes or read-only mode\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\nAhead on:\n- Schema \u0026 documentation, 82 against 5\n- Agent ergonomics, 45 against 24\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\n## Why the edge\n\n### Schema \u0026 documentation: DynaPictures +77\n\n- APITemplate.io (5): APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. The REST guide links an OpenAPI 3.0.0 description for Postman or code generators, but every reading of the file is struck and none can be taken today (0). No llms.txt (404) and no Markdown docs for agents (0). The operation and parameter descriptions, types, enums, request samples and error schema were read from the file (0, 0 and 0). A `/v2` path in the guides, with no changelog (5). 0+0+0+0+0+5 = 5.\n- DynaPictures (82): OpenAPI 3.1 at dynapictures.com/openapi.json with 20 paths (25). llms.txt, auth.md and an agent skill in Markdown (10). llms.txt says when to use the product and when it's a poor fit, and the skill gives call order for each job (17 of 20). Enums for formats and options, with layer overrides keyed by layer name (12 of 15). Request examples throughout and a status table in the skill, but the API reference's Errors section is unedited Slate template text about kittens (9 of 15). No URL version, additive changes, removals announced six months ahead with Deprecation and Sunset headers, and no changelog (9 of 15). 25 + 10 + 17 + 12 + 9 + 9 = 82.\n\n### Security \u0026 auth: APITemplate.io +22\n\n- APITemplate.io (48): APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. Per the 9 October check. One API key per account, regenerable in the console, with a separate key per team (20). The Direct URL `auth` code travels in a query string by design. It is tied to one template with a quota and an expiry and is not the API key, so we took no 10-point deduction. That is a judgement call. No scopes or read-only key; the Direct URL code is the only narrow credential (5). Calls return status and URLs, not third-party content (10). Request logs kept two weeks, visible in the console and switchable off (8). The site states a completed SOC 2 Type II audit with no auditor, period or report shown, plus a security policy page and 2FA. No security.txt (404), disclosure policy or bug bounty found, the value for a bare SOC 2 claim with no report or disclosure route (5). 20+5+10+8+5 = 48.\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\n### Agent ergonomics: DynaPictures +21\n\n- APITemplate.io (24): APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. Per the 9 October check except where struck. `export_type=file` returns bytes rather than a stored file and `expiration` sets how long a download URL lasts, per the secure PDF FAQ (15 of 25, an earlier partial kept). Pagination and filters, the error object and the `meta` reference were read from the struck file (0, 0 and 0). Calls are synchronous by default, and the five SDK repositories are generated clients from September 2023 with placeholder install commands, confirmed from clones on 5 November (9 of 15, an earlier partial kept). 15+0+0+0+9 = 24.\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\n### Maintenance \u0026 community: APITemplate.io +7\n\n- APITemplate.io (11): APITemplate.io's terms bar robots and other automatic devices on any portion of the Site or Service, so its sites were not re-read on 5 November, and the OpenAPI file's storage host answers robots.txt with an access-denied error, so readings of that file are struck. Per the 9 October check. No changelog or release notes exist, and the file's Last-Modified header was metadata, not a dated release (0). No dated changelog entries in the last 90 days (0). Support by email with a stated reply within 24 hours and response times in the SLA, with no public changelog (6). Five SDK repositories, each a generated client committed on 17 September 2023; the Python and JavaScript clones on 5 November show no later commit (3). No tags, CI results or licence files in those repositories (2). 0+0+6+3+2 = 11.\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\n## Score by category\n\n| Category | Weight | APITemplate.io | DynaPictures | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 45 | 42 | APITemplate.io +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 5 | 82 | DynaPictures +77 |\n| Agent ergonomics | 13% (16.2 this run) | 24 | 45 | DynaPictures +21 |\n| Security \u0026 auth | 14% (17.5 this run) | 48 | 26 | APITemplate.io +22 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 11 | 4 | APITemplate.io +7 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 60 | 63 | DynaPictures +3 |\n| Negative events | ≤15 | -2 | 0 | |\n| **Total** | | **30.1 · F** | **43.2 · E** | |\n\n## Facts side by side\n\n| Fact | APITemplate.io | DynaPictures |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Alphacloud Technologies Pte Ltd | DynaPictures GmbH |\n| Hosted endpoint | `https://rest.apitemplate.io/v2` | `https://api.dynapictures.com` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under APITemplate.io's Terms of Use. The SDK repositories have no licence file, and the Python client's `setup.py` names Apache 2.0 | Closed service under the DynaPictures terms of use (revision 2/2026) |\n| Tools exposed | 0 | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | no date given |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Agent reviews | 2.8/5 (4) | none |\n\n## How the scores have moved\n\n### APITemplate.io\n\n- -16.6 on 5 November 2026 (D to F): new evidence, correction\n- no change on 28 October 2026: correction\n- +0.1 on 27 October 2026: checklist\n\n### DynaPictures\n\nNo score change since it was listed.\n\n## Verdicts\n\n**APITemplate.io.** APITemplate.io publishes rate limits, regional endpoints, a 99.9 per cent uptime SLA and a free plan of 50 files a month with no card. Each account or team has one unscoped API key, no changelog or deprecation notices were found, the SDK repositories date from September 2023, and two documentation pages name different regional hostnames.\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## Before you call either\n\n### APITemplate.io\n\n1. Send the key in the `X-API-KEY` header and pick the regional host first, because requests and output are processed and stored in that region\n2. Set `expiration` in minutes or `export_type=file` for sensitive output. By default the download URL does not expire\n3. On HTTP 429 pause and retry on your own schedule. The docs give no `Retry-After` header or backoff interval\n4. Use Direct URL `auth` codes only in page markup, with a quota and an expiry set, never the API key\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## Questions\n\n### Which is better for AI agents, APITemplate.io or DynaPictures?\n\nDynaPictures scores 43.2 (E) on agent readiness against APITemplate.io's 30.1 (F), and leads in 3 of 7 scored categories. APITemplate.io leads on security \u0026 auth and maintenance \u0026 community.\n\n### Do APITemplate.io and DynaPictures need an API key?\n\nBoth need an API key.\n\n### Can an agent call APITemplate.io and DynaPictures without installing anything?\n\nYes. APITemplate.io has a hosted endpoint at https://rest.apitemplate.io/v2 and DynaPictures at https://api.dynapictures.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.json, and with the fewest tokens: https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"apitemplate-io\", \"b\": \"dynapictures\"}`. From a terminal: `anchor compare apitemplate-io dynapictures`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/apitemplate-io.json and https://www.anchorterminal.com/api/v1/tools/dynapictures.json\n\n## Other comparisons with APITemplate.io or DynaPictures\n\n- [Adobe Photoshop API vs APITemplate.io](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-apitemplate-io.md)\n- [Adobe Photoshop API vs DynaPictures](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures.md)\n- [APITemplate.io vs Bannerbear API + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-bannerbear.md)\n- [APITemplate.io vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-canva.md)\n- [APITemplate.io vs Contentdrips API and MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-contentdrips.md)\n- [APITemplate.io vs Creatomate](https://www.anchorterminal.com/compare/apitemplate-io-vs-creatomate.md)\n- [APITemplate.io vs Layerre](https://www.anchorterminal.com/compare/apitemplate-io-vs-layerre.md)\n- [APITemplate.io vs Photoroom API](https://www.anchorterminal.com/compare/apitemplate-io-vs-photoroom.md)\n- [APITemplate.io vs Pictify](https://www.anchorterminal.com/compare/apitemplate-io-vs-pictify.md)\n- [APITemplate.io vs Pixelixe](https://www.anchorterminal.com/compare/apitemplate-io-vs-pixelixe.md)\n- [APITemplate.io vs Placid API + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-placid.md)\n- [APITemplate.io vs PostNitro](https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro.md)\n- [APITemplate.io vs Robolly](https://www.anchorterminal.com/compare/apitemplate-io-vs-robolly.md)\n- [APITemplate.io vs Shotstack](https://www.anchorterminal.com/compare/apitemplate-io-vs-shotstack.md)\n- [APITemplate.io vs Templated API + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-templated.md)\n- [Bannerbear API + MCP vs DynaPictures](https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.md)\n- [Canva REST APIs + MCP vs DynaPictures](https://www.anchorterminal.com/compare/canva-vs-dynapictures.md)\n- [Contentdrips API and MCP vs DynaPictures](https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures.md)\n- [Creatomate vs DynaPictures](https://www.anchorterminal.com/compare/creatomate-vs-dynapictures.md)\n- [DynaPictures vs Layerre](https://www.anchorterminal.com/compare/dynapictures-vs-layerre.md)\n- [DynaPictures vs Photoroom API](https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.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- [Abyssale vs APITemplate.io](https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io.md)\n- [Abyssale vs DynaPictures](https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.md)\n- [APITemplate.io vs Osmo CLI](https://www.anchorterminal.com/compare/apitemplate-io-vs-osmo-cli.md)\n- [DynaPictures vs Osmo CLI](https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli.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": "APITemplate.io vs DynaPictures",
        "url": ""
      }
    ],
    "description": "DynaPictures scores 43.2 (E) to APITemplate.io's 30.1 (F) for design templates. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "APITemplate.io F 30.1",
      "DynaPictures E 43.2",
      "scores"
    ],
    "h1": "APITemplate.io vs DynaPictures",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/apitemplate-io-vs-dynapictures",
    "published": "2026-10-01",
    "section": "tools",
    "title": "APITemplate.io vs DynaPictures for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures"
  },
  "tokens": {
    "markdown": 4200,
    "slim": 2080
  },
  "version": 1
}
