Prelude

Prelude is a phone and email verification API - "the trust layer between your signups and your business." Its Verify API creates and checks one-time passcodes (OTP) across SMS, WhatsApp, RCS, Viber, and voice in 230+ countries, with smart multi-provider routing and built-in anti-fraud. Alongside Verify, Prelude offers Notify (transactional messaging), Lookup / Intel (phone number intelligence - line type, carrier, ported and temporary flags, CNAM), and Watch (anti-fraud risk prediction and feedback). The public REST API v2 lives at https://api.prelude.dev/v2 with Bearer API-key auth and official SDKs for Python, Node.js, Java, and Go. Prelude positions itself as a developer-first alternative to Twilio Verify.

Prelude publishes 4 APIs on the APIs.io network, including Verification API, Lookup API, Watch Anti-Fraud API, and 1 more. Tagged areas include Number Verification, Phone Verification, OTP, Authentication, and Anti-Fraud.

Prelude’s developer surface includes authentication, documentation, engineering blog, and 6 more developer resources.

38.6/100 thin ▬ flat Agent 48/100 agent ready Full breakdown ↓
scored 2026-07-20 · rubric v0.4
4 APIs 0 Features
Number VerificationPhone VerificationOTPAuthenticationAnti-FraudTwo-Factor AuthenticationSMSPhone Number Lookup

API Rating

API Evangelist API Evangelist Rating How this is scored →
scored 2026-07-20 · rubric v0.4
Composite quality — 38.6/100 · thin
Contract Quality 15.5 / 25
Developer Ergonomics 4.3 / 20
Commercial Clarity 7.9 / 20
Operational Transparency 4.1 / 13
Governance 0.0 / 12
Discoverability 6.8 / 10
Agent readiness — 48/100 · agent ready
Machine-Readable Contract 18 / 18
Agentic Access Contract 15 / 15
MCP Server 0 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 0 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 0 / 6
Agent Skills 0 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/prelude-so: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs

Prelude Verification API

Create or retry a one-time passcode (OTP) verification for a phone number or email address and check the submitted code. Delivery spans SMS, WhatsApp, RCS, Viber, and voice with...

Prelude Lookup API

Phone number intelligence (Intel). Look up an E.164 number to get its line type (mobile, fixed_line, voip, etc.), current and original carrier / network info (name, MCC, MNC), p...

Prelude Watch Anti-Fraud API

Anti-fraud (Watch). Predict whether a signup identifier is legitimate or suspicious using device, network, and behavioral signals, then send feedback about what actually happene...

Prelude Transactional Messaging API

Transactional messaging (Notify). Send a template-based message to a recipient over the best available channel (SMS, RCS, or WhatsApp), with variables, scheduling, expiry, deliv...

Collections

Pricing Plans

Prelude So Plans Pricing

3 plans

PLANS

Rate Limits

Prelude So Rate Limits

3 limits

RATE LIMITS

FinOps

Resources

Documentation 1

Reference material describing how the API behaves

Agent Surfaces 1

MCP servers, agent skills, and machine-readable catalogs

Access & Security 1

Authentication, authorization, and security posture

Operate 1

Status, limits, changes, and where to get help

Commercial 2

Pricing, plans, and the legal terms of use

Company 3

The organization behind the API

Source (apis.yml)

apis.yml Raw ↑
opencollection: 1.0.0
info:
  name: Prelude API v2
  version: '2.0'
request:
  auth:
    type: bearer
    token: '{{apiKey}}'
items:
- info:
    name: Verification
    type: folder
  items:
  - info:
      name: Create or retry a verification.
      type: http
    http:
      method: POST
      url: https://api.prelude.dev/v2/verification
      body:
        type: json
        data: "{\n  \"target\": {\n    \"type\": \"phone_number\",\n    \"value\": \"+30123456789\"\n  }\n}"
    docs: Creates a new verification and dispatches a one-time passcode. If a non-expired verification exists for the same
      target within the window, performs a retry.
  - info:
      name: Check a code.
      type: http
    http:
      method: POST
      url: https://api.prelude.dev/v2/verification/check
      body:
        type: json
        data: "{\n  \"target\": {\n    \"type\": \"phone_number\",\n    \"value\": \"+30123456789\"\n  },\n  \"code\": \"\
          123456\"\n}"
    docs: Validates a one-time passcode submitted by an end user against an active verification for the given target.
- info:
    name: Lookup
    type: folder
  items:
  - info:
      name: Look up a phone number.
      type: http
    http:
      method: GET
      url: https://api.prelude.dev/v2/lookup/:phone_number?type=cnam
      params:
      - name: phone_number
        value: '+30123456789'
        type: path
        description: An E.164 formatted phone number to look up.
      - name: type
        value: cnam
        type: query
        description: Optional lookup feature; cnam retrieves the caller ID name.
    docs: Returns phone number intelligence - line type, current and original carrier info, ported/temporary flags, and optionally
      CNAM.
- info:
    name: Watch
    type: folder
  items:
  - info:
      name: Predict signup risk.
      type: http
    http:
      method: POST
      url: https://api.prelude.dev/v2/watch/predict
      body:
        type: json
        data: "{\n  \"target\": {\n    \"type\": \"phone_number\",\n    \"value\": \"+30123456789\"\n  },\n  \"signals\":\
          \ {\n    \"ip\": \"203.0.113.10\",\n    \"device_id\": \"device-abc\",\n    \"device_platform\": \"ios\"\n  }\n}"
    docs: Scores a signup identifier as legitimate or suspicious using anti-fraud signals.
  - info:
      name: Send feedbacks about verifications.
      type: http
    http:
      method: POST
      url: https://api.prelude.dev/v2/watch/feedback
      body:
        type: json
        data: "{\n  \"feedbacks\": [\n    {\n      \"target\": {\n        \"type\": \"phone_number\",\n        \"value\":\
          \ \"+30123456789\"\n      },\n      \"type\": \"verification.completed\"\n    }\n  ]\n}"
    docs: Reports what actually happened in your verification flow so Watch can update its counters. Up to 100 items per request.
  - info:
      name: Dispatch events (modeled).
      type: http
    http:
      method: POST
      url: https://api.prelude.dev/v2/watch/dispatch-events
      body:
        type: json
        data: "{\n  \"dispatch_id\": \"\",\n  \"events\": []\n}"
    docs: 'Sends frontend SDK interaction events to Watch. NOTE: referenced in docs but full schema unconfirmed at review
      time; request shape is modeled.'
- info:
    name: Transactional
    type: folder
  items:
  - info:
      name: Send a transactional message.
      type: http
    http:
      method: POST
      url: https://api.prelude.dev/v2/notify
      body:
        type: json
        data: "{\n  \"to\": \"+30123456789\",\n  \"template_id\": \"tmpl_xxx\",\n  \"variables\": {\n    \"name\": \"Kin\"\
          \n  }\n}"
    docs: Sends a template-based transactional message over the best available channel (SMS, RCS, or WhatsApp).
bundled: true