# Which API should I use?

Google Play services has two APIs you can use to streamline the SMS-based
verification process: the [SMS Retriever API](https://developers.google.com/identity/sms-retriever/overview)
and the [SMS User Consent API](https://developers.google.com/identity/sms-retriever/user-consent/overview).

The SMS Retriever API provides a fully automated user experience and should be
used when possible. It does, however, require you to place a custom hash code in
the message body, and this may be difficult to do if you're not the sender of
that message.

If you don't have control over the contents of the message---for example, if
your app works with a financial institution that might want to verify the user's
phone number before approving a payment transaction inside your app---then
you can use the SMS User Consent API, which does not require the custom hash
code. It does, however, require the user to approve your app's request to access
the message containing the verification code. In order to minimize the chances
of surfacing the wrong message to the user, SMS User Consent will check if the
message contains a 4-10 character alphanumeric code containing at least one
number. It will also filter out messages from senders in the user's Contacts
list.

The differences are summarized in the table below:

|   | SMS Retriever | SMS User Consent |
|---|---|---|
| Message requirements | 11-digit hash code that uniquely identifies your app | 4-10 digit alphanumeric code containing at least one number |
| Sender requirements | None | Sender cannot be in the user's Contacts list |
| User interaction | None | One tap to approve |