Preview VersionThese are pre-release scores, not final grades. Every vendor's full markdown report is published here so the scoring can be checked line by line. A complete rerun follows in roughly 60 days. Found a factual error?

← All platforms

API Report Card · Phone · Methodology v1.1

RingCentral

Preliminary grade
A 93/100
46.67 / 50 raw
Evidence tier
Baseline verified
Date run
Sep 1, 2026
Evaluating model
Claude Opus 4.8
Verification coverage
100%
Live-test battery
Read-path steps 1–5 complete
Checks
27 of 27 scored

Where the points came from.

Five categories, each worth a fixed share of the 100 points. A category earns the fraction of its checks it passes, times its maximum.

Letter grades are absolute, never curved.

The same numeric bands apply to every platform. Nothing here is scored relative to the rest of the board.

A+97-100
A93-96
A−90-92
B+87-89
B83-86
B−80-82
C+77-79
C73-76
C−70-72
D+67-69
D63-66
D−60-62
Fbelow 60

What this means for you.

One paragraph per category, in plain language.

1 · Functional Coverage

15 / 15 points

A perfect score. You can pull essentially all of your communications data, calls, texts, voicemail and the directory, and act on it programmatically by sending texts and placing or controlling calls. Real-time events arrive by webhook, and there is dedicated incremental sync for call logs and messages. The write actions are well documented but were not exercised live here, because the key supplied was read-only.

2 · Design & Reliability

7.9 / 10 points

Predictable and production-grade: clean REST, structured errors carrying a stable machine code, clear rate-limit and request-id headers, real pagination, and proper incremental sync. Two gaps matter if you automate messaging. There are no idempotency keys, so guard your own retries or a text can send twice. And there is no optimistic concurrency: the API does return a conflict on competing writes, but nothing stops a lost update.

3 · Access Control

5 / 5 points

A perfect score, and about as safe as it gets to hand to an app or an AI agent. You can issue a read-only, narrowly scoped key, which is exactly what this run used, run a separate key per integration, test against a real sandbox with its own isolated data, and revoke access instantly.

4 · Docs & AI-Ready

3.8 / 5 points

Strong and build-ready, with a published OpenAPI spec and maintained SDKs in every common language. Two weak spots: there is no llms.txt for AI retrieval, so an AI tool consumes the spec instead, and the central changelog's newest entry is from April 2022. Confirm current behaviour against the live reference rather than the changelog.

5 · Access & Cost

15 / 15 points

Full marks. A free developer account, self-issued keys, a sandbox included, and API access bundled with a normal subscription. No premium tier to unlock and no sales call.

Every check, and why it scored that way.

The same 27 checks are applied to every platform. What changes is which are N-A and what the core objects mean for that kind of software. Each mark below is quoted from the run's own report.

Category 1 · Functional Coverage

15 / 15
C1.1

Object coverage

weighted coverage ≈ 100% (all classified objects present with role-appropriate operations; no critical object absent). [live: account, extension, call-log reads; docs: message-store, recordings, subscriptions, presence]

Yes
C1.2

Core operational actions

(documentation-graded) — weighted coverage ≈ 100%; consequential write workflows exist: send SMS [guide/messaging/sms], RingOut/Call Control [guide/voice], create subscription [guide/notifications], EditExtensions [guide/basics/permissions]. No critical write workflow absent. Flagged: writes not live-tested (read-only credential).

Yes
C1.3

Delete or lifecycle actions

(documentation-graded) — weighted coverage ≈ 90%; message delete/status, subscription delete/renew, Call Control transitions, RingOut cancel, presence update all documented. [guide/notifications; guide/voice; guide/basics/permissions]

Yes
C1.4

Change notification

Subscription API + webhooks cover the critical/important state changes (incoming call/SMS/voicemail/fax, message-store, presence, telephony session), and documented incremental sync (Call Log Sync / Message Store Sync, syncToken) plus dateFrom filtering (live-verified) detect changes by polling. [guide/notifications; guide/voice/call-log/sync; live 03-calllog-filtered]

Yes

Category 2 · Design & Reliability

7.9 / 10
C2.1

Modern API conventions

resource-oriented REST/JSON over HTTPS with standard verbs. [live JSON responses at /restapi/v1.0/…; api-reference]

Yes
C2.2

Consistent typing

OpenAPI-specified schemas; live reads were type-consistent (integer paging fields, string ids, ISO timestamps). [rc-platform.yml; live 02a/03]

Yes
C2.3

Structured errors

structured body with stable machine code, message, and errors[]/parameterName; docs say "rely on the errorCode". Live 404 = CMN-102. [guide/basics/errors; live 04-error-404]

Yes
C2.4

Duplicate prevention

(documentation-graded) — no idempotency keys and no natural idempotency for consequential writes (SMS/fax/RingOut); the only related signal, CMN-304 "Duplicate concurrent request", rejects a duplicate that is still in flight, not a sequential retry after completion. [guide/basics/errors; rc-platform-openapi.yml] (Reconciled 2026-09-01: 3-run majority + evidence; run 1 initially had partial.)

No
C2.5

Graceful handling under load

documented 429 + Retry-After + named X-Rate-Limit-Group/Limit/Remaining/Window. Live headers observed (Limit 50, Window 60, Group "light"). [guide/basics/rate-limits; live 05-account.headers]

Yes
C2.6

Pagination for large collections

page/perPage, a paging object with totalElements/totalPages, and navigation.nextPage. Live-traversed pages 1→2 of 34 records. [live 02a/02b]

Yes
C2.7

Bulk or incremental export

dedicated Call Log Sync and Message Store Sync APIs (FSync/ISync + syncToken) return only changes since last sync, plus dateFrom/dateTo incremental filtering (live-verified). [guide/voice/call-log/sync; guide/messaging/message-store/message-sync; api-reference/Call-Log/syncAccountCallLog; live 03]

Yes
C2.8

Webhook security and delivery reliability

(documentation-graded) — a Validation-Token handshake verifies the subscription endpoint and a developer-set verification token can accompany deliveries, and failed deliveries are retried then the subscription is suspended/blacklisted; but verification is a shared token (not HMAC) and no consumer replay/de-duplication guidance is provided. [guide/notifications/webhooks/creating-webhooks; …/troubleshooting]

Partial
C2.9

Concurrency and conflict control

the OpenAPI spec declares 409 Conflict responses on ~27 write operations (Call Control / telephony and natural-key "already exists"), i.e., documented conflict semantics; but there is no optimistic concurrency (no ETag/If-Match or version fields) on core resources. [rc-platform-openapi.yml; guide/basics/errors] (Reconciled 2026-09-01: both blind graders found the spec 409s that run 1 missed by reading only the errors page; upgraded no→partial.)

Partial
C2.10

Versioning and backward compatibility

explicit path version (/restapi/v1.0) and breaking-change labeling (⚠️) plus deprecation notices and migration guides, but no formal backward-compatibility policy with defined deprecation windows. [guide/basics/changelog; guide/ai; user-call-handling/migration-guide]

Partial
C2.11

Request traceability

every response carries a documented RCRequestId for support. Live-observed on both a success and the 404. [live 05-account.headers; 04-error-404.headers]

Yes
C2.12

Service availability and status transparency

public status page with per-component status by region, "Core Services Uptime History," and incident status updates. [status.ringcentral.com, rendered 2026-09-01]

Yes

Category 3 · Access Control

5 / 5
C3.1

Read-only credentials

read-only scopes are selectable; the supplied key carried exactly ReadMessages ReadAccounts ReadCallLog. [guide/basics/permissions; live 00-token scope]

Yes
C3.2

Scoped credentials

fine-grained action scopes (e.g., ReadCallLog, SMS, CallControl, RingOut, Faxes, EditExtensions), and a JWT credential can be restricted to a specific app. [guide/basics/permissions; getting-started/create-credential]

Yes
C3.3

Multiple keys

multiple apps and multiple JWT credentials can be created in the Developer Console. [guide/getting-started/create-credential]

Yes
C3.4

Rotation and revocation

credentials are created/deleted self-serve in the Console "Credentials" area, credentials can be revoked by owner/admin, and access tokens can be revoked via POST /restapi/oauth/revoke (RFC-7009). [support.ringcentral.com Accessing-API-credentials; guide/authentication]

Yes
C3.5

Test and production isolation

a separate sandbox environment (platform.devtest.ringcentral.com) with its own accounts, credentials, and isolated data, distinct from production; "Developer Sandbox" is a separately monitored component on the status page. [guide/basics/sandbox; status.ringcentral.com]

Yes

Category 4 · Docs & AI-Ready

3.8 / 5
C4.1

Complete self-serve reference

a complete, public API reference with authentication guides, endpoint definitions, parameters, and worked examples; a developer can build without reverse-engineering. [developers.ringcentral.com/api-reference; /guide]

Yes
C4.2

Reliable machine-consumable integration path

a published OpenAPI 3.0.x specification (the rc-platform spec; the SDK page also historically references a Swagger 2.0 spec) plus officially maintained SDKs (.NET, Java, JavaScript, PHP, Python, Ruby, Swift, WebRTC). [rc-platform-openapi.yml, inspected; guide/sdks]

Yes
C4.3

AI-readable documentation

no llms.txt/llms-full.txt (404), but the full developer guide is published as a downloadable first-party Markdown corpus (github.com/ringcentral/ringcentral-api-docs) alongside the OpenAPI spec; no resource is purpose-structured for AI retrieval. [llms.txt 404; github.com/ringcentral/ringcentral-api-docs]

Partial
C4.4

Kept current

the core RingEX API changelog's latest entry is v.1.0.51 (Apr 2022, page "Last updated 2024-02-16"), which is stale; currency is carried instead by recent, scattered deprecation notices and migration guides and by actively updated reference pages. [guide/basics/changelog; guide/ai; user-call-handling/migration-guide]

Partial

Category 5 · Access & Cost

15 / 15
C5.1

Self-serve API key

a free developer account, self-serve app registration, and self-serve auth-credential generation in the Console; the operator's own key was created this way and worked in production. Public app-gallery distribution requires a graduation review, but an operator's own (private) app and credentials are self-serve. [guide/getting-started; sign-up; live auth]

Yes
C5.3

Not commercially gated

the core RingEX API is included with standard accounts (no premium-tier paywall for API access) and free to develop/test; the operator's standard-account key reached production. Some adjacent products (RingCX contact center, RingSense AI, high-volume A2P SMS) are separately entitled, and A2P registration is a carrier/regulatory requirement, not commercial gating. [guide/getting-started; live auth on production]

Yes

What works

  • An A grade, on 25 of 27 checks unanimous across three independent runs
  • Read-only and finely scoped keys, proven on the key used for this run
  • A real sandbox with its own accounts and isolated data
  • OpenAPI spec plus maintained SDKs in eight languages
  • Dedicated incremental sync for call logs and messages

What to watch

  • No idempotency keys, so a retried text or call can send twice
  • No optimistic concurrency, so two writers can overwrite each other
  • The central changelog has not been updated since April 2022
  • No llms.txt, so AI tools fall back to the OpenAPI spec
  • High-volume SMS needs separate A2P registration and entitlement

The bottom line for a property manager

RingCentral's API is excellent to build on: modern REST with an OpenAPI spec and SDKs in every common language, granular read-only and scoped keys, a real sandbox, structured errors, rate-limit and request-id headers, proper pagination and incremental sync, and self-serve free access. For a property manager this is the communications layer. You can log every tenant, owner and vendor call and text, send SMS reminders, build click-to-call and screen-pop, and get real-time webhooks. It is not a PMS, an accounting system, or a trust-accounting system, and it holds no funds. Property management is not a documented use case, only a general fit. The main engineering cautions are the missing idempotency keys and the lack of lost-update protection, so protect your own retries of anything that sends a message or moves money, and the stale changelog, so verify against the live reference.

Check it yourself.

Both files behind this page, in full.

RingCentral’s full report

The complete markdown report this page is built from, including the evidence packet, the run metadata and every check in full.

Download the RingCentral report

The grading file

The exact rubric behind every score on this page. Same file, every platform. Run it yourself and compare.

Download the methodology

Found a factual error in your grade?

Tell us and we will fix it. Every mark on this page traces to a specific piece of first-party evidence or a live API call, and the full report is published so you can see exactly what was checked and what it was checked against.

Confirmed factual errors are corrected immediately.

Everything else waits. We do not rescore piecemeal on request, because a board where some vendors have been re-run and others have not is not a fair comparison. Shipped improvements, changed documentation and disagreements about judgement all go into the next full rerun.

Contact us with a factual error