1. Call screening
CallerAPI Documentation
  • Quickstart
  • Use cases
    • For carriers (MNOs/MVNOs)
    • CPaaS platforms
    • Cloud communications providers
    • SIP trunking providers
    • PBX/Cloud PBX
    • UCaaS vendors
  • Account
    • Balance and email
      GET
  • Spam protection
    • Daily spam reports
      • Webhook
        • Subscribe to daily reports
        • Unsubscribe from daily reports
        • List webhook subscriptions
        • Manual dispatch of reports
        • Test webhook
      • REST
        • Fetch daily spam reports
    • Spam score + HLR
      GET
    • 15 days spam CSV snapshot
      GET
  • Mobile SDK
    • Get started
    • Quickstart
      • What you get
      • Get your keys
      • Android
      • iOS
      • Flutter
      • React Native
      • Check it works
    • Call screening
      • What each platform can do
      • Android call screening
      • iOS prerequisites
      • iOS add the extension
      • iOS test on device
    • Reference
      • Methods
      • Errors
      • Limits and billing
      • Troubleshooting
  • Data partners
    • Partner tems & docs
    • Upload spam reports
      POST
    • Upload contacts
      POST
  • Fraud prevention
    • Ported date
      GET
    • Porting history
      GET
    • Online presence
      GET
    • KYC user identity
      POST
  • Schemas
    • Spam protection
      • Spam score request
      • Business info
      • Carrier info
      • Complaint (without number)
      • Daily spam reports request
      • Complaint (with phone)
  1. Call screening

iOS prerequisites

iOS step 1: prerequisites#

Do this page before you open Xcode. One step here has a waiting period, so start it today even if you build the rest next week.
Total setup for iOS call screening is about half a day of work, plus the waiting.

The checklist#

A paid Apple Developer Program membership, at $99 a year.
Xcode 16 or later.
A physical iPhone running iOS 18 or later.
Your client_key from the dashboard.
One App Group and three App IDs in the Apple Developer portal.
Relay enrollment with Apple, if you ship to TestFlight or the App Store.

Why a free account is not enough#

The block list is stored in an App Group so your app and its extension can share it. Apple does not allow App Groups on a free Personal Team. There is no way around this.

Decide which extensions you need#

You add one Xcode target per feature. Check which ones apply to you.
Your minimum iOS versionAdd this
iOS 18 or later onlyLive Caller ID Lookup extension
iOS 15 to 17 as wellBoth: Live Caller ID Lookup and Call Directory
Live Caller ID names and blocks callers as the phone rings, on iOS 18 and later. Call Directory blocks numbers from a list downloaded in advance, and works on older versions. Call Directory cannot show a name.

Register your identifiers#

Sign in at developer.apple.com/account/resources/identifiers.
Your extensions must use bundle identifiers nested under your app. If your app is com.yourco.app, use these:
IdentifierPurpose
com.yourco.appYour app
com.yourco.app.LiveLookupLive Caller ID extension
com.yourco.app.CallDirectoryCall Directory extension
group.com.yourco.appApp Group, shared by all three
A nested identifier is not a style choice. iOS finds your extension by its position under your app. If you name it something else, your app never appears in Settings > Apps > Phone > Call Blocking & Identification, and no error tells you why.
Create the App Group first, under Identifiers > App Groups. Then create the three App IDs. On the app and the Call Directory App ID, tick App Groups and Keychain Sharing.
Leave the Live Caller ID extension App ID with no capabilities for now.

Start relay enrollment now#

Skip this only if you will never install the app any way other than from Xcode directly onto your own phone.
A build from Xcode talks to our servers directly. A build from TestFlight or the App Store does not. Apple routes it through a relay that hides your users' IP addresses, and Apple only does that for a service it has on record.
Enrollment is not instant, so start it first.
What you send us:
1.
Your Live Caller ID extension bundle identifier, for example com.yourco.app.LiveLookup.
2.
Roughly how much traffic you expect, per continent.
What we send back, within a few business days:
Three URLs reserved for you: a service URL, a token issuer URL, and a gateway URL.
A validation token for your Apple registration.
What you then do: register those URLs on the
Identity and Trust page of the CloudKit Console, under your own Apple team, with your extension bundle identifier.
We prove ownership of those hosts to Apple with a DNS record on our side, so you do not touch DNS.

Get your client key#

The Live Caller ID extension reports usage with your client_key. Copy it from https://callerapi.com/dashboard/sdk-setup. See
Get your keys.
This is the client_key, not the sdk_key. They are different values with different jobs.

What you cannot test in a simulator#

Nothing on this path works in a simulator. iOS only asks your extension during a real incoming call on real hardware.
Budget one iPhone on iOS 18 or later, and a second phone to call it from.

Next#

iOS step 2: add the extension.
Modified at 2026-07-29 21:29:11
Previous
Android call screening
Next
iOS add the extension
Built with