CAMARA APIs - Functional Differences (Use-Case & Data Semantics Edition)

CAMARA APIs - Functional Differences (Use-Case & Data Semantics Edition)

To add feedback, do not edit the document, but use the comments feature instead.

Audience: Non-telco experts

Objective: Explain in detail what problem each API solves, what data it delivers, how to interpret it, and how to combine them in risk and error-prevention policies

APIs covered: SIM Swap · Device Swap · Tenure · Number Recycling

1.  Executive Summary

This whitepaper compares four CAMARA APIs that deliver trust/risk signals around a mobile phone number:

  • SIM Swap: provides information about the most recent change of the subscription profile associated with a phone number (MSISDN)—including both physical SIM and eSIM. The API either returns the timestamp of the last change or a boolean indicating whether a change occurred within a specified look-back window. Note the API is form-factor agnostic; it reflects operator-recorded changes to the SIM/eSIM subscription profile tied to the MSISDN. Administrative re-provisions may or may not be counted as “changes” depending on each operator’s policy."

    • Purpose: prevent SIM hijacking (attackers intercepting SMS/OTP, Number Verification, or pretending to be the victim on a phone call).

  • Device Swap: detects whether the phone number is now used on a different physical device. It mirrors SIM Swap’s I/O shape (timestamp or boolean-in-window), but the tracked event is the device change, not the SIM.

    • Purpose: detect access or requests from an unexpected handset.

  • Tenure: confirms the period the phone number has been active with its current provider (or the activation date) and optionally returns the contract type (postpaid, prepaid...).

    • Purpose: use a phone number tenure as a proxy for trustworthiness or fraud risk.

  • Number Recycling: checks whether a phone number has changed ownership (if has a different contract holder) since a specified date with the same provider, returning a boolean.

    • Purpose: avoid sending OTP/data to a new owner of a recycled number, avoid locking of accounts protected by SMS 2FA due to outdated number, and flagging outdated CRM contact details.

Unambiguous overlap statements:

  • SIM Swap and Device Swap share the same endpoints patterns and response structures; they differ only in what changed (SIM vs device).

  • Tenure and Number Recycling both answer “since-date” questions, but different focus: (Line) Tenure measures the period of time the phone number has been active with its current provider (and will reset in case of portability), while Number Recycling checks whether the ownership of the phone number has changed or not since the given date with its current provider.


2. Scope & Sources

This document focuses on functional semantics, I/O, error families, and practical interpretation. Sources: CAMARA Github (link), CAMARA Wiki Page (link) and CAMARA website (link).


3. Comparative Matrix – Data Semantics

The following table positions the four APIs side by side, focusing on what question they answer, the kind of data they return, the time horizon they cover, and how the signal is usually applied in risk or trust decisions. This helps highlight their distinct roles and avoid confusion when evaluating overlaps.

API

Question Answered

Nature of Data

Typical Horizon

Risk Signal

Common Decision

 

SIM Swap

Has the SIM changed recently?

 

Last change timestamp or boolean by window

 

 

Hours/Days

 

Very recent change

 

 

Block OTP transaction or activate alternative verification

 

Device Swap

Has the device changed recently?

Last change timestamp or boolean by window

 

 

Hours/Days

Very recent change

 

Flag the new device as untrusted until validated; advise developers not to assume continuity of trust automatically

Tenure

Phone number active service since date X?

Boolean vs. date + optional contract type

 

Month/years

Short or interrupted phone tenure

Extra user verification may be required, it suggests higher risk of potential fraud from that mobile number

Number recycling

Same holder (with the same provider) since date X?

 

Boolean vs. date

 

Month/years

 

Possible new owner

 

Do not send any more OTPs/messages through SMS/voice until the right phone number is confirmed,


4. API Deep Dives

4.1.    SIM Swap (v2.1.0)

Data provided:

  • latestSimChange (timestamp) or null if no visible changes within the operator’s observable window.

  • Optional monitoredPeriod (days) when no date is returned (use to interpret null).

  • /check returns swapped (true/false) evaluated over a window in hours (e.g., 24, 48, …).

How to Read It:

  • latestSimChange = timestamp → SIM change; the more recent, the higher risk for SMS‑based authentication.

  • latestSimChange = null + monitoredPeriod = N → no SIM swap events within N days (not “no data exists”).

  • swapped = true in X‑hour window → apply friction (challenge, deny, etc.).

If the operator’s policy forbids keeping older data, you may see null even if the line exists; use monitoredPeriod for context.

Endpoints and I/O:

  • POST /retrieve-date a returns latestSimChange (timestamp or null), optionally monitoredPeriod (days) - If there is no swap event, the SIM activation date on the network is used.

  • POST /check a input maxAge (1-2400 hours), returns swapped (boolean). If the requested window exceeds local policy/retention, expect 400 OUT_OF_RANGE with a human-readable reason.

Example – How SIM Swap responses should be interpreted:

Given following situation for several lines:

image-20251027-155734.png

We expect following result from the API:

line

sim-swap/check

maxAge = 2400

Call triggered Sept 15th

sim-swap/retrieve-date

0601

false

2020/1/1

 or monitoredPeriod:100 days

0602

true

2025/9/1

0603

true

2025/9/1

0604

false

2024/1/1

or monitoredPeriod:100 days

0605

true

2025/9/1

4.2. Device Swap (v1.0.0)

Data provided:

  • latestDeviceChange (timestamp) or null with optional monitoredPeriod (days), which indicates the maximum observable period supported by the operator due to local data-retention regulations or internal privacy policies.

  • /check returns swapped (true/false) over a window in hours.

If no swap ever occurred and policy allows, it may return the first time the number was used in a device.

How to Read It:

  • Same as SIM Swap but the event is “device change”. A Very recent change might imply higher impersonation risk or new device used by legitimate user (it could be useful to update device fingerprinting).

  • null + monitoredPeriod means “no events in that observable period.”

Endpoints and I/O:

  • POST /retrieve-date a returns latestDeviceChange (timestamp or null), optionally monitoredPeriod (days) - If there is no swap event, the SIM activation date on the network is used.

  • POST /check a input maxAge (1-2400 hours), returns swapped (boolean).

4.3.    Tenure (v0.2.0)

Data Provided:

  • tenureDateCheck (true/false) answering “Has the phone number been active since tenureDate?”

  • Optional contractType: PAYG, PAYM, Business.

How to Read It:

  • true → mobile phone number has been active since that date (tenure ≥ threshold).

  • false → more recent phone number activation or interruptions (change from postpaid<->prepaid): higher reputational risk.

  • contractType useful for different policy tiers (prepaid, postpaid, enterprise). There is a higher correlation of frauds with origin in prepaid plan types, it is a signal of higher risk as well.

Endpoints and I/O:

  • POST /check-tenure a input tenureDate (YYYY-MM-DD), optional phoneNumber (two-legged only); output tenureDateCheck (boolean) and optional contractType (PAYG/PAYM/Business).

Examples:

Given following situation for several lines:

image-20251125-153624.png

Note on 0608 line: on Jan 1st, 2024 we have a MSISDN change for this line. The 0608 is not anymore used for this line and 0604 is the new number. It was intentionally included to illustrate a non-existent or deactivated MSISDN, where /check-tenure returns 404 not found (no active record within the operator’s current numbering plan).

 

We expect following result from the API:

line

/check-tenure

2025-09-02

/check-tenure

2025-06-02

/check-tenure

2023-12-15

/check-tenure

2021-12-15

0601

true + contractType

true + contractType

true + contractType

true + contractType

0602

true + contractType

true + contractType

true + contractType

true + contractType

0603

true + contractType

false+ contractType

false+ contractType

false+ contractType

0604

true + contractType

true + contractType

false+ contractType

false+ contractType

0605

true + contractType

false+ contractType

false+ contractType

false+ contractType

0606

true + contractType

true + contractType

false+ contractType

false+ contractType

0607

true + contractType

true + contractType

false+ contractType

false+ contractType

0608

404 not found

404 not found

404 not found

404 not found

4.4. Number Recycling (v0.2.0)

Data Provided: phoneNumberRecycled (true/false) compared to a specifiedDate.

How to Read It:

  • true → ownership (contract holder) within the same MNO changed since the specifiedDate. Treat as potential misdelivery risk. Note a port-in from other MNO is not mapped as a change of ownership as the owner could be still the same, neither is it a new phone activation as could be the first time the number is assigned to someone.

  • false → number still belongs to same person; safe to proceed. Note the MNO can only confirm there has not been a change of ownership while the phone number belonged to him, so within the phone number Tenure.

Endpoints and I/O:

  • POST /check a input specifiedDate (YYYY-MM-DD), optional phoneNumber (two-legged only); output phoneNumberRecycled (boolean).

Examples:

Given following situation for several lines:

image-20251027-160115.png

We expect the following result from the API request submitted on September 15, 2025:

line

/check

2021-12-15

/check

2023-12-15

/check

2025-06-02

/check

2025-09-02

0601

false

false

false

false

0602

false

false

false

false

0603

false

false

false

false

0604

false

false

false

false

0605

false(*)

false(*)

false(*)

false

0606

false

false

false

false

0607

true

true

false

false

*: Note this is a case an API provider can confirm a contract which is one with other MNO before a port-in date.


5.  Where to Use Them

Each API brings value in different industries depending on the type of risk they face. Below are examples of how companies can apply the signals in real customer journeys.

Industry

Onboarding on the app (new customer / number binding)

In-life interactions on the app (existing customer lifecycle)

Industry

Onboarding on the app (new customer / number binding)

In-life interactions on the app (existing customer lifecycle)

Banking / Fintech

Tenure (configurable threshold, e.g. ≥3–6 months) to unlock higher limits; Number Recycling (since last verified contact) before binding or re-binding a number. If SMS OTP is used at signup, run SIM Swap /check (configurable value, e.g. 24–72h) to gate binding.

Examples of in-life transactions:

  • User make a money transfer on the bank app

  • Bank send message to the user through the app

Access & sensitive transactions: SIM Swap (configurable threshold, e.g. 24–72h) + Device Swap (configurable value, e.g. 24–72h) as risk gates; Tenure to modulate limits/trust. Step-up or cool-off if true.

Insurance

Tenure threshold to prioritise trusted numbers; Number Recycling prior to policy activation or re-activation (since last contact/consent).

Examples of in-life transactions:

  • User declare a prejudice and provide proofs

  • User change her/his account information and in particular link to insurance refund

Claims / payouts: Device Swap (24–72h) before disbursements; add SIM Swap if using SMS OTP; use Tenure to prioritise trust and reduce manual review.

E-commerce

Number Recycling (since registration) + Tenure before storing a number for notifications/2FA; if SMS OTP is part of account creation, add SIM Swap at bind time.

Examples of in-life transactions:

  • User change payment method or delivery address

Purchase OTP & password resets: SIM Swap for SMS OTP integrity; Device Swap for account changes/high-risk actions; Number Recycling before messaging dormant accounts to prevent misdelivery.

Messaging (brands / CPaaS)

Before (re)enrolling a number for alerts/marketing: Number Recycling (since last consent) + Tenure to prioritise deliverability.

Example of in-life transactions:

  • A car company wants to reach its customer via SMS to inform them about air bag issue requiring urgent maintenance

Prevent misdelivery & privacy breaches: periodic Number Recycling checks on dormant lists; use Tenure to tier sending policies.

Credit / BNPL

Tenure as a fast trust filter; Number Recycling (since application date) before binding; if SMS OTP used in KYC, add SIM Swap check at registration.

Examples of in-life transactions:

  • User makes a request to a 4-times payment (split charge on 4 months)

  • User change hers/his account information

High-value operations: gate with SIM Swap / Device Swap; use Tenure to tune limits, friction, and review thresholds.

Authentication solutions

When binding phone numbers as factors: Tenure + Number Recycling to ensure stable ownership before trusting the factor.

Examples of in-life transactions:

  • a food delivery application using phone number as identifier wants to check for a long-time inactive account making a request that the user is still the same (the number has not be provided to another user)

Add a telco-signal layer: SIM Swap / Device Swap for adaptive step-up; use Tenure to weight risk scores and session trust.


6.  Overlap, Differentiation & How They Complement Each Other

The four APIs may look similar in structure, but their value lies in what type of change or continuity they track and how these signals complement each other.

6.1    SIM Swap vs Device Swap

  • Similarity: Both expose the same endpoint patterns (/retrieve-date, /check) and responses (timestamp or boolean-in-window). Both could produce a positive response if the mobile phone is lost or stolen and it’s replaced by a new one.

  • Difference: The event type differs: SIM replaced vs Device changed.

  • Complementarity: Used together, they provide a stronger signal of suspicious recent change. A legitimate SIM replacement without a device change is lower risk than both happening simultaneously. Both are very useful to keep up to date device fingerprints associated to a given person.

6.2    Tenure vs Number Recycling

  • Similarity: Both answer “since-date” questions.

  • Difference: Line Tenure within its current operator (phone number activation date) vs Phone Number ownership change within its current operator (phone number recycled and assigned to someone else). Tenure does not specify the source of activation while number recycling only refers to line activations from a contract owner to another one in the same provider (MNO). Also, note that SIM cards can be handed to a person who is not the contract owner (for example, in family contracts where multiple lines are in use by family members but the MNO only keeps track of the contract holder).