Head to head · SMS · October 2026 research run

Photon vs Prelude

Prelude scores 67.6 (B) on agent readiness against Photon's 53.2 (D), and leads in 5 of 7 scored categories. Photon leads on transparency & trust. Both do sms.

Best SMS, WhatsApp and messaging APIs for AI agents · All 190 messaging comparisons

Which one, for what

Photon D

Best for Agents that talk to people over iMessage, with WhatsApp Business, Telegram and SIP voice on the same agent loop in TypeScript.

Ahead on

  • Transparency & trust, 57 against 42

Watch for

The status page logged a 2-hour full iMessage outage on 2 September 2026, from a power failure at Photon's data centre

Prelude B

Best for Agents or apps that verify a phone number or email with a code and want fraud blocking, and for transactional messages in Europe.

Ahead on

  • Schema & documentation, 93 against 75
  • Agent ergonomics, 85 against 63
  • Security & auth, 63 against 29
  • Payments & pricing, 30 against 20
  • Maintenance & community, 83 against 78

Watch for

The terms, privacy policy and legal notice are Notion pages drawn by script, unreadable by our reader

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Security & auth Prelude +34

Photon 29

Project ID and secret over HTTP Basic for the Spectrum API. The secret grants full management access to the project, doesn't expire on its own and is rotated with photon projects regenerate-secret. The SDK mints per-line iMessage tokens it renews at 80 per cent of their lifetime, and the Dashboard API takes OAuth 2.1 with PKCE and consented scopes. No secret in a URL is documented (17 of 30). No read-only project credential. The CLI asks before removing a user (3 of 20). Inbound messages come from anyone who texts a line, and no prompt-injection guidance was found in the Stable docs (0 of 15). OpenTelemetry tracing is opt-in and per-line analytics are in the dashboard. API logs and traces arrive with Photon 2.0, not Stable (4 of 15). No security.txt on photon.codes. The Beta API clients' repository has a SECURITY.md with private vulnerability reporting and no acknowledgement time, while spectrum-ts has none, and the privacy policy mentions regular penetration testing. No bug bounty or certification was found, and osv.dev lists nothing for spectrum-ts, @photon-ai or photonhq-api on 4 November. The policy covers only the Beta clients, so the line keeps its partial 5 of 20 rather than the settled 7. 17 + 3 + 0 + 4 + 5 = 29.

Prelude 63

API keys as bearer tokens with no scopes found; the MCP server uses OAuth with a per-user consent screen (20 of 30). The MCP server is read-only and off until enabled per app, and the dashboard has spending limits and fraud settings (15 of 20). Verify returns statuses, not third-party text, while Notify replies and inbound media are untrusted, with no guidance found (5 of 15). The dashboard lists verifications and the MCP server answers questions about them; no API request log was found (8 of 15). The trust centre lists SOC 2 Type 1 and Type 2 reports and ISO 27001:2022, and prelude.so has a valid security.txt with a security address; no bug bounty or disclosure policy page was found (15 of 20). 20 + 15 + 5 + 8 + 15 = 63.

Agent ergonomics Prelude +22

Photon 63

Read for the TypeScript SDK an agent server runs. One async message stream for every provider, one send call per space and environment fallbacks keep the code small. Management responses can't be sized beyond list limits (17 of 25). The user and template lists take limit with offset or cursors and filters, while the other lists take none (12 of 20). API errors return a status code with { succeed, message }, SpectrumCloudError carries status and code, and unsupported operations throw UnsupportedError. No error-code catalogue for Stable was found (13 of 20). The recovery guide has callers set stable clientGuid values that the transport deduplicates, the advanced iMessage kit takes a clientMessageId, and webhooks are at-least-once with dedupe guidance. Spectrum API writes take no idempotency key (13 of 20). imessage.config() with no arguments discovers lines and renews tokens, but Stable has one official SDK language, TypeScript (8 of 15). 17 + 12 + 13 + 13 + 8 = 63.

Prelude 85

List calls take limit from 1 to 200 with cursor or offset; the MCP server's tool list isn't on the docs page, so its size is unchecked (18 of 25). Cursor and offset pagination with filters (18 of 20). Named error codes with messages and, for template errors, the field that failed (19 of 20). Create-or-retry semantics on Verify make a repeated call safe inside the window, and X-Should-Retry says when to retry; the MCP server is read-only (15 of 20). A verification needs a target and its type, and there are seven official backend SDKs (15). 18 + 18 + 19 + 15 + 15 = 85.

Schema & documentation Prelude +18

Photon 75

Read for the Stable surface. Public OpenAPI 3.1 documents for the Spectrum API (54 operations) and the Dashboard API, and TypeScript declarations for the SDK. Sending runs over gRPC inside the SDK with no public contract, and the Spectrum OpenAPI declares no security scheme (18 of 25). llms.txt, llms-full.txt, a Markdown twin of every page and a documentation MCP server (10). The docs say when to use the API (management) and when the SDK (runtime messaging), and the deliverability guide lists what to do and avoid (16 of 20). Config is validated with zod, spaces and services carry enums, and the OpenAPI request bodies are typed (12 of 15). TypeScript examples on every page, signature verifiers in four languages, a response code table for the API and documented SDK error classes (13 of 15). spectrum-ts follows semver and reached 12.14.0 on 22 October 2026 (tags in the clone), but no Stable changelog was readable. The weekly updates index (entries from 10 September to 15 October 2026 on 4 November) carries announcements, not an SDK or API changelog, and GitHub release pages are closed to our reader (6 of 15). 18 + 10 + 16 + 12 + 13 + 6 = 75.

Prelude 93

OpenAPI for the 27 SDK endpoints is public at the URL in the SDK repository's .stats.yml, and every reference page embeds its endpoint's OpenAPI (25). llms.txt and Markdown pages (10). Reference pages say what each call does and how retries behave; guides cover fraud, sender IDs and compliance (16 of 20). Typed parameters with enums and ranges, such as code size 4 to 8 and limit 1 to 200 (13 of 15). Examples in seven SDK languages and an error table of about 100 named codes, each saying what to fix (15). Versioned paths (v1 and v2), a monthly changelog with the newest month September 2026, and SDK changelogs (14 of 15). 25 + 10 + 16 + 13 + 15 + 14 = 93.

Transparency & trust Photon +15

Photon 57

spectrum-ts, its providers, imessage-kit and the CLI are MIT, while Spectrum Cloud and the managed lines are closed. The undated terms still carry template placeholders, such as '[California]' for governing law and a bracketed acceptable use policy that links to a deliverability guide (18 of 30). The privacy policy (25 September 2026) covers account data and deletion within 30 days of closing an account, but says nothing about message content or end users' data. The terms let Photon use de-identified Usage Data to train its models. No DPA or retention period for messages was found (8 of 30). No deprecation policy. Migration notes for removed SDK options carry no dates (4 of 20). SDK telemetry is opt-in and documented with its OTLP endpoint. Hosting is described as Photon's own data centre alongside cloud providers, with no sub-processor list or regions (8 of 20). 18 + 8 + 4 + 8 = 38.

Prelude 42

Closed service whose general terms are a Notion page drawn by script, which we couldn't read; the SDKs are Apache-2.0 (8 of 30). The privacy policy is also unreadable for the same reason, and the trust centre names no retention periods or data locations (3 of 30). v1 and v2 are documented side by side and the changelog dates changes by month, with no deprecation policy found (6 of 20). No sub-processor list or data locations found (0 of 20). 8 + 3 + 6 + 0 = 17.

Payments & pricing Prelude +10

Photon 20

No x402, MPP or L402 (0). Plan prices are public. Free at $0 for up to 10 users, Pro at $25 a month for up to 100, Business at $250 per dedicated line a month and Enterprise on request, with no per-message fee for iMessage (10 of 20). A $0 Free plan exists, but whether it needs a card wasn't established, and the terms limit use 'on a free or trial basis' to internal evaluation (10 of 20). A person signs up in the dashboard, and the CLI's device login needs approval in a browser (0). 0 + 10 + 10 + 0 = 20.

Prelude 30

No x402, MPP or L402 (0). Per-verification price (€0.032) and per-message Notify prices published without login (20). No free tier or no-card trial was found on the pricing page; test numbers simulate verifications without charge, which counts as half (10 of 20). A person signs up in the dashboard (0). 0 + 20 + 10 + 0 = 30.

Maintenance & community Prelude +5

Photon 78

spectrum-ts v12.14.0 tagged on 22 October 2026 (30). Nine tagged releases since 6 August, v12.8.0 (20 August), v12.9.0, v12.9.1, v12.10.0, v12.10.1, v12.11.0, v12.12.0 (16 October), v12.13.0 (21 October) and v12.14.0 (22 October), and the Beta API clients tagged 0.2.0 to 0.6.0 between 1 and 22 October (20). The SDK is open source, but GitHub issue pages are closed to our reader. Support is by email and Discord, and Photon says its team works around the clock. The weekly updates are announcements, not answers (8 of 25, per 16 October). The official TypeScript SDK and CLI are current, and the Beta clients cover four languages. No messaging MCP server, so no registry entry (12 of 15). CI runs lint, type checks, an artefact check and the test suite on Node and Bun on every push to main and pull request, with pinned actions and Renovate. Results unread (8 of 10). 30 + 20 + 8 + 12 + 8 = 78.

Prelude 83

@prelude.so/sdk 0.16.0 published to npm on 16 October 2026, 21 days ago, carrying API updates (30). SDK releases on 12 August, 15, 18 and 22 September, and changelog months August and September (20). Closed service with a monthly changelog; GitHub issue replies weren't sampled (10 of 15). Current official SDKs in seven languages; no Prelude server in the official MCP registry (15). The SDK repository runs CI and publish workflows (8 of 10). 30 + 20 + 10 + 15 + 8 = 83.

Score by category

CategoryWeight this runPhotonPreludeEdge
Reliability16%206765Photon +2
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.27593Prelude +18
Agent ergonomics13%16.26385Prelude +22
Security & auth14%17.52963Prelude +34
Payments & pricing10%12.52030Prelude +10
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.87883Prelude +5
Transparency & trust7%8.85742Photon +15
Negative events≤15-20
TotalD 53.2/100B 67.6/100

Facts side by side

FactPhotonPrelude
KindSDK + MCPHTTP API
VendorPhotonDING SAS (Prelude)
Hosted endpointhttps://spectrum.photon.codeshttps://api.prelude.dev
TransportsHTTPHTTP, Streamable HTTP
AuthAPI keyOAuth or key
PricingFreemiumPay per use
x402nono
LicenceProprietary hosted service under Something Great Inc.'s terms of service. The spectrum-ts SDK and its provider packages, imessage-kit, the CLI and the Photon 2.0 API clients are MITProprietary service; the terms are on a Notion page we couldn't read. The backend SDKs are Apache-2.0
Read-only variant documentednono
llms.txtyesyes
Last release2026-10-222026-10-16
Terms last updatedno date givencouldn't be read
Privacy policy last updated2026-09-25couldn't be read
Customer content may train modelsnot found in the textcouldn't be read
Terms restrict automated accessyescouldn't be read
Terms restrict benchmarkingnot found in the textcouldn't be read
Terms or service can change without noticenot found in the textcouldn't be read
Arbitration or class-action waiveryescouldn't be read
Popularity107k npm/wk98k npm/wk
Agent reviews2.8/5 (4)none

How the scores have moved

Verdicts

Photon

Photon runs iMessage agents on managed lines backed by its own macOS clusters, with a typed TypeScript SDK, signed webhooks and docs written for agents. Its status page logged a two-hour iMessage outage on 2 September 2026, the project secret carries full access, and the terms limit free and beta use to internal evaluation, with no published SLA.

Prelude

Prelude's Verify API sends and checks one-time codes over SMS, WhatsApp, RCS and email with fraud blocking, priced per verification in public, with an OpenAPI file and seven backend SDKs. Its remote MCP server only reads Verify data, its terms and privacy policy are drawn by script and couldn't be read, and no API rate limits are published.

Before you call either

Photon

  1. Use the Stable docs and spectrum-ts unless the project ID starts with pho_prj_. Stable and Beta packages, hosts and credentials don't mix
  2. Design flows so the person texts first. Photon ties line flags to cold outreach, bursts and more than two or three follow-ups
  3. Stay under 5,000 messages per server a day and 50 new conversations per line a day. Further sends are rejected until the window resets
  4. Give each outbound message a stable clientGuid so a retried job doesn't send it twice
  5. Dedupe webhooks on X-Spectrum-Webhook-Id plus the event's own id, answer within 30 seconds, and reconcile, because events are dropped after six attempts
  6. Keep the project secret out of the agent's context. It grants full management access and doesn't expire

Prelude

  1. Call POST /v2/verification again within the window to resend; only method, preferred channel, code size and custom code change on a retry
  2. On 429, wait for Retry-After and follow X-Should-Retry; spending_limit_exceeded also carries Retry-After
  3. Use the documented test numbers to exercise Verify without charges before sending real codes
  4. Check insufficient_balance and spending_limit_exceeded and hand the top-up to a person, since the balance is managed in the dashboard
  5. Treat inbound replies and media from Notify as untrusted input, never as instructions

Questions

Which is better for AI agents, Photon or Prelude?

Prelude scores 67.6 (B) on agent readiness against Photon's 53.2 (D), and leads in 5 of 7 scored categories. Photon leads on transparency & trust.

Can an agent call Photon and Prelude without installing anything?

Yes. Photon has a hosted endpoint at https://spectrum.photon.codes and Prelude at https://api.prelude.dev.

Other comparisons with Photon or Prelude

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.