{"version":1,"pages":[{"id":"-M0QGGmwVsV0j97Cg6ZO","title":"Getting Started","pathname":"/","siteSpaceId":"sitesp_VH1EC","emoji":"1f680","description":"Get started quickly using Cotter's SDK to integrate passwordless login and email/phone number verification into your websites and apps"},{"id":"-M0QIvSMZkweKB2DHbu0","title":"Features & Concepts","pathname":"/features","siteSpaceId":"sitesp_VH1EC","description":""},{"id":"-M0QHRAfzQweYx_DczkH","title":"Sign In with Email/Phone Number","pathname":"/features/verify-email-phone","siteSpaceId":"sitesp_VH1EC","emoji":"1f4ac","description":"Sign in faster using a magic link or OTP sent to users via email, SMS, or WhatsApp.","breadcrumbs":[{"label":"Features & Concepts"}]},{"id":"-M14UhiTa9EBe1jIQi4Y","title":"Sign In with Device","pathname":"/features/passwordless-login","siteSpaceId":"sitesp_VH1EC","emoji":"1f510","description":"Sign in faster with a prompt sent to your mobile app.","breadcrumbs":[{"label":"Features & Concepts"}]},{"id":"-M14fnn2cDJkWuSFflSy","title":"How it works","pathname":"/features/passwordless-login/how-it-works","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"Features & Concepts"},{"label":"Sign In with Device","emoji":"1f510"}]},{"id":"-MDcc97fCNNgjEv4ihN4","title":"Sign In with WebAuthn","pathname":"/features/sign-in-with-webauthn","siteSpaceId":"sitesp_VH1EC","emoji":"1f9ec","description":"","breadcrumbs":[{"label":"Features & Concepts"}]},{"id":"-MEjSQxsA-eMyyl7FqWp","title":"All Guides & Tutorials","pathname":"/quickstart-guides/all-guides-and-tutorials","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-MAUbWpO8XONhF-vdxAG","title":"HTML – Sign in with Email/Phone","pathname":"/quickstart-guides/html-magic-link-with-email-and-phone","siteSpaceId":"sitesp_VH1EC","description":"Easily add email and phone number verification using Cotter's SDK. Send a magic link to your users via email, SMS or WhatsApp in just a few lines of code.","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-MBpqtdlR54h41rVFGWy","title":"React – Sign in with Email/Phone","pathname":"/quickstart-guides/react-magic-link-with-email-and-phone","siteSpaceId":"sitesp_VH1EC","description":"Easily add email and phone number verification using Cotter's SDK. Send a magic link to your users via email, SMS or WhatsApp in just a few lines of code.","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-MCjwlfkbi3ejQQ0qQ4K","title":"React – WebAuthn","pathname":"/quickstart-guides/react-webauthn","siteSpaceId":"sitesp_VH1EC","description":"Sign in users faster using WebAuthn: sign in with TouchID or Windows Hello from a web browser.","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-M6Eb1vLZRs1_0ZAMKrR","title":"React Native – Sign in with Device","pathname":"/quickstart-guides/react-native-quickstart","siteSpaceId":"sitesp_VH1EC","description":"Cotter's Passwordless SDK authenticates your user based on their device. It allows a seamless, fast, and secure way for your user to login to your React Native App.","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-M6EaO2M9ot00du8W_bR","title":"iOS – Sign in with Device","pathname":"/quickstart-guides/ios-quickstart","siteSpaceId":"sitesp_VH1EC","description":"Cotter's Passwordless SDK authenticates your user using the FIDO protocol. It allows a seamless, fast, and secure way for your user to login to your iOS App. Authenticate your users in 4 simple steps:","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-M9aaGUmTZYju_sjd17x","title":"Flutter – Sign in with Device","pathname":"/quickstart-guides/flutter-sign-in-with-device","siteSpaceId":"sitesp_VH1EC","description":"Cotter's Passwordless SDK authenticates your user based on their device. It allows a seamless, fast, and secure way for your user to login to your React Native App.","breadcrumbs":[{"label":"Quickstart Guides","emoji":"1f4cc"}]},{"id":"-M754uGf-FFj_X0jjxo8","title":"Web","pathname":"/sdk-reference/web","siteSpaceId":"sitesp_VH1EC","description":"The easiest way to add Passwordless Login and Email/Phone Number Verification to your Websites.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-M0ROJn7tosL9qeumqFd","title":"Sign In with Email/Phone Number","pathname":"/sdk-reference/web/web-sdk-verify-email-phone","siteSpaceId":"sitesp_VH1EC","description":"Our JavaScript SDK offers the easiest way to integrate Cotter 's email/phone verification. You can simply embed Cotter's Login Form and it will do the heavy lifting for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-MM3x7xmCOdxctRXaGzk","title":"Customize the Form","pathname":"/sdk-reference/web/web-sdk-verify-email-phone/customize-the-form","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Email/Phone Number"}]},{"id":"-MEjXd5EzVKBBgF7esWG","title":"Checking the email or phone before sending a verification code","pathname":"/sdk-reference/web/web-sdk-verify-email-phone/checking-the-email-or-phone-before-sending-a-verification-code","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Email/Phone Number"}]},{"id":"-M4XP8uvqhRoToxD9tWW","title":"Sending Code or Link via WhatsApp","pathname":"/sdk-reference/web/web-sdk-verify-email-phone/sending-code-via-whatsapp","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Email/Phone Number"}]},{"id":"-M6njp646Zy03Or86Tp2","title":"Styling","pathname":"/sdk-reference/web/web-sdk-verify-email-phone/styling","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Email/Phone Number"}]},{"id":"-MM3xHrU2kWabqOqD6CA","title":"Older SDK","pathname":"/sdk-reference/web/web-sdk-verify-email-phone/older-sdk","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Email/Phone Number"}]},{"id":"-M0RmcI2NzQt9-EVckEw","title":"Customize the Form","pathname":"/sdk-reference/web/web-sdk-verify-email-phone/older-sdk/advanced-customization","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Email/Phone Number"},{"label":"Older SDK"}]},{"id":"-MGMJIEuOzSx3Lqn3ANS","title":"Sign in with Social Login","pathname":"/sdk-reference/web/sign-in-with-social-login-provider","siteSpaceId":"sitesp_VH1EC","description":"Sign in with Social Login allows you to authenticate users using their social accounts like Google, Github, etc.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-MGMR-Umubw7gOJeVnX8","title":"Getting Access Tokens from Social Login Providers","pathname":"/sdk-reference/web/sign-in-with-social-login-provider/getting-access-tokens-from-social-login-providers","siteSpaceId":"sitesp_VH1EC","description":"Cotter stores all OAuth Tokens that are returned from the Social Login Providers when a user sign in. You can retrieve the tokens using the following API Requests.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign in with Social Login"}]},{"id":"-MGMKFGfaV_DOixh31r4","title":"Github Instructions","pathname":"/sdk-reference/web/sign-in-with-social-login-provider/github-instructions","siteSpaceId":"sitesp_VH1EC","description":"How to get a Client ID and Client Secret from Github, and what to fill in for the Authorization Callback URL.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign in with Social Login"}]},{"id":"-MH_-MXdzpSsx8WiQVs8","title":"Google Instructions","pathname":"/sdk-reference/web/sign-in-with-social-login-provider/google-instructions","siteSpaceId":"sitesp_VH1EC","description":"How to get a Client ID and Client Secret from Google OAuth, and what to fill in for the Authorized redirect URIs.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign in with Social Login"}]},{"id":"-MCk3X5Dh4Fkxp20D4Rt","title":"Sign In with WebAuthn","pathname":"/sdk-reference/web/sign-in-with-webauthn","siteSpaceId":"sitesp_VH1EC","description":"Sign in with WebAuthn allows you to authenticate users using TouchID or Windows Hello from their browser. This means, you can use biometric authentication from your website.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-MCkDHM5o2e7gLO0iz0C","title":"Register WebAuthn for a logged-in user","pathname":"/sdk-reference/web/sign-in-with-webauthn/register-webauthn-for-a-logged-in-user","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with WebAuthn"}]},{"id":"-M3o-GTINgCweb4ATz-9","title":"Sign In with Device","pathname":"/sdk-reference/web/web-sdk-passwordless-login","siteSpaceId":"sitesp_VH1EC","description":"Our JavaScript SDK offers the easiest way to add \"Sign in with device\" into your website. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-M3o4Cgu-uvdZvuU7AgZ","title":"Steps for Pop Up Authentication Prompt","pathname":"/sdk-reference/web/web-sdk-passwordless-login/steps-for-pop-up-authentication-prompt","siteSpaceId":"sitesp_VH1EC","description":"Show a popup to prompt users to authenticate using a Trusted Device before proceeding with a transaction or opening sensitive information","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Device"}]},{"id":"-M3oW3WPjWEiptnzU4qQ","title":"Advanced Customization for Login Form","pathname":"/sdk-reference/web/web-sdk-passwordless-login/advanced-customization","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Device"}]},{"id":"-M3ob6vjow8Bwd5zU9zY","title":"Advanced Customization for Pop Up Authentication Prompt","pathname":"/sdk-reference/web/web-sdk-passwordless-login/advanced-customization-for-pop-up-authentication-prompt","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"},{"label":"Sign In with Device"}]},{"id":"-MCkH5-JdyWtNg-5Uhxh","title":"Getting Access Token and Logged-In User Info","pathname":"/sdk-reference/web/getting-access-token-and-logged-in-user-info","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-MYJK01M71LLy_hUSlBy","title":"Sending Successful Form Submission","pathname":"/sdk-reference/web/sending-successful-form-submission","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-MEZ__MPOatWCGqMleH3","title":"FAQ & Troubleshooting","pathname":"/sdk-reference/web/faq-and-troubleshooting","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Web"}]},{"id":"-M75269s7Na4NQLLTo8U","title":"React Native","pathname":"/sdk-reference/react-native","siteSpaceId":"sitesp_VH1EC","description":"The easiest way to add Passwordless Login and Email/Phone Number Verification to your React Native app.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-M756x_QQdOi5Kk-8d04","title":"Installation","pathname":"/sdk-reference/react-native/installation","siteSpaceId":"sitesp_VH1EC","description":"Installing Cotter's React Native SDK can be done using yarn or npm.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"}]},{"id":"-M2kTuM6W90CT9IpIxHq","title":"Sign In with Device","pathname":"/sdk-reference/react-native/react-native-sdk-passwordless-login","siteSpaceId":"sitesp_VH1EC","description":"Our React Native SDK offers the easiest way to integrate Cotter's Passwordless Login. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"}]},{"id":"-MOi33TuTgxpbdk9PWhg","title":"Add Email/Phone Verification","pathname":"/sdk-reference/react-native/react-native-sdk-passwordless-login/add-email-phone-verification","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Sign In with Device"}]},{"id":"-M2pWufvpIxKQcm3t4RP","title":"Authenticate from a Non-Trusted Device","pathname":"/sdk-reference/react-native/react-native-sdk-passwordless-login/authenticate-from-a-non-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Sign In with Device"}]},{"id":"-M2phoA2Bi4EWnyF76kW","title":"Add a new Trusted Device","pathname":"/sdk-reference/react-native/react-native-sdk-passwordless-login/add-a-new-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Sign In with Device"}]},{"id":"-M2q1lSbDH6lk14hVIU_","title":"Remove Trusted Device","pathname":"/sdk-reference/react-native/react-native-sdk-passwordless-login/remove-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Sign In with Device"}]},{"id":"-M1dk_Rosjlkj52Hq_6R","title":"Sign In with Email/Phone Number","pathname":"/sdk-reference/react-native/react-native-sdk-verify-email-phone","siteSpaceId":"sitesp_VH1EC","description":"Our React Native SDK offers the easiest way to integrate Cotter 's email/phone verification. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"}]},{"id":"-MDbggdtq1vW1d8Al6w8","title":"Getting Stored OAuth Tokens and User Information","pathname":"/sdk-reference/react-native/getting-stored-oauth-tokens-and-user-information","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"}]},{"id":"-M9OeuShGRqmSY3FWLa0","title":"FAQ","pathname":"/sdk-reference/react-native/faq","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"}]},{"id":"-MDbWyT16TL8_oFzY9pm","title":"Older SDK Versions","pathname":"/sdk-reference/react-native/older-sdk-versions","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"}]},{"id":"-MEjs7mn6FLNZiQOPNS4","title":"Sign in with Email/Phone","pathname":"/sdk-reference/react-native/older-sdk-versions/sign-in-with-email-phone","siteSpaceId":"sitesp_VH1EC","description":"Our React Native SDK offers the easiest way to integrate Cotter 's email/phone verification. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Older SDK Versions"}]},{"id":"-M4XSyuxJtgBuTuqWYOn","title":"Sending Code via WhatsApp","pathname":"/sdk-reference/react-native/older-sdk-versions/sending-code-via-whatsapp","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Older SDK Versions"}]},{"id":"-MDbXFAm6-_HS7B5F-zS","title":"Sign In with Device","pathname":"/sdk-reference/react-native/older-sdk-versions/sign-in-with-device","siteSpaceId":"sitesp_VH1EC","description":"Our React Native SDK offers the easiest way to integrate Cotter's Passwordless Login. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Older SDK Versions"}]},{"id":"-MDbYS4qnCXDnudwwowb","title":"Authenticate from a Non-Trusted Device","pathname":"/sdk-reference/react-native/older-sdk-versions/sign-in-with-device/authenticate-from-a-non-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Older SDK Versions"},{"label":"Sign In with Device"}]},{"id":"-MDc5Aalr2qRqk-rCv4L","title":"Add a new Trusted Device","pathname":"/sdk-reference/react-native/older-sdk-versions/sign-in-with-device/add-a-new-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Older SDK Versions"},{"label":"Sign In with Device"}]},{"id":"-M2pbq3lhLKMtujxA2Xo","title":"Customization","pathname":"/sdk-reference/react-native/older-sdk-versions/sign-in-with-device/customization","siteSpaceId":"sitesp_VH1EC","description":"You can change the text and logo in most of the UI that's provided by Cotter's React Native SDK.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"React Native"},{"label":"Older SDK Versions"},{"label":"Sign In with Device"}]},{"id":"-M9anXyUi6GpvJBNNlRU","title":"Flutter","pathname":"/sdk-reference/flutter","siteSpaceId":"sitesp_VH1EC","description":"The easiest way to add Passwordless Login and Email/Phone Number Verification to your Flutter app.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-M9angupK73fWUZjM7fe","title":"Sign In with Device","pathname":"/sdk-reference/flutter/sign-in-with-device","siteSpaceId":"sitesp_VH1EC","description":"Our Flutter SDK offers the easiest way to integrate Cotter's Sign In with Device. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"}]},{"id":"-MAYBXzMAs8ZfSEUGux-","title":"Add Email/Phone Verification","pathname":"/sdk-reference/flutter/sign-in-with-device/add-email-phone-verification","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"},{"label":"Sign In with Device"}]},{"id":"-M9arREAyqZyslAP96BY","title":"Authenticate from a Non-Trusted Device","pathname":"/sdk-reference/flutter/sign-in-with-device/authenticate-from-a-non-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"},{"label":"Sign In with Device"}]},{"id":"-MATH96wMixRR82bWQJJ","title":"Sign in with Email/Phone Number","pathname":"/sdk-reference/flutter/sign-in-with-email-phone-number","siteSpaceId":"sitesp_VH1EC","description":"Our Flutter SDK offers the easiest way to integrate Cotter 's email/phone verification. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"}]},{"id":"-M9awQf5uqyq2X9ZO4JM","title":"Getting the Logged-in User","pathname":"/sdk-reference/flutter/getting-the-logged-in-user","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"}]},{"id":"-M9axG8HPu6f_at6wCcT","title":"Getting OAuth Tokens","pathname":"/sdk-reference/flutter/getting-oauth-tokens","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"}]},{"id":"-MX4rqsyD_32mDn7_ZFC","title":"Signing a User Out","pathname":"/sdk-reference/flutter/signing-a-user-out","siteSpaceId":"sitesp_VH1EC","description":"This page shows you how to log your users out of your application","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Flutter"}]},{"id":"-M757jiJ1fQpEoseouJL","title":"iOS","pathname":"/sdk-reference/ios","siteSpaceId":"sitesp_VH1EC","description":"The easiest way to add Passwordless Login and Email/Phone Number Verification to your iOS app.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-M35aUobglanfiWqjf7S","title":"Sign In with Email/Phone Number","pathname":"/sdk-reference/ios/ios-sdk-verify-email-phone","siteSpaceId":"sitesp_VH1EC","description":"Our iOS SDK offers the easiest way to verify email/phone numbers in your Swift app. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"}]},{"id":"-M4q-LjGBIcIq3PgnYt6","title":"Sign In with Device","pathname":"/sdk-reference/ios/ios-sdk-passwordless-login","siteSpaceId":"sitesp_VH1EC","description":"Cotter's iOS SDK offers the easiest way to integrate \"Sign in with device\" to your ios app. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"}]},{"id":"-M4q6OeSmc4NimMatcZK","title":"Authenticate from a Non-Trusted Device","pathname":"/sdk-reference/ios/ios-sdk-passwordless-login/authenticate-from-a-non-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"},{"label":"Sign In with Device"}]},{"id":"-MCiZep6L97mjBj93JTl","title":"Push Notification","pathname":"/sdk-reference/ios/ios-sdk-passwordless-login/ios-push-notification","siteSpaceId":"sitesp_VH1EC","description":"In this tutorial, we're going to setup push notification for authenticating non-trusted devices.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"},{"label":"Sign In with Device"}]},{"id":"-M4uinx5jwRCoiJxFUx3","title":"Check if Trusted Device is Enrolled","pathname":"/sdk-reference/ios/ios-sdk-passwordless-login/check-if-trusted-device-is-enrolled","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"},{"label":"Sign In with Device"}]},{"id":"-M4q65HwSchGnw-_fZc6","title":"Add a New Trusted Device","pathname":"/sdk-reference/ios/ios-sdk-passwordless-login/add-a-new-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"},{"label":"Sign In with Device"}]},{"id":"-M4uj9y8UBk-phkWAaQ8","title":"Remove Trusted Device","pathname":"/sdk-reference/ios/ios-sdk-passwordless-login/remove-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"},{"label":"Sign In with Device"}]},{"id":"-MCiYL8WPnyyfFjKorBk","title":"Older Versions","pathname":"/sdk-reference/ios/older-versions","siteSpaceId":"sitesp_VH1EC","description":"These guides are used in the older versions of the SDK. If you are still using this, please migrate to the latest version. These versions are still maintained by Cotter team.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"}]},{"id":"-M1js7LYj-yGbUtx3rXD","title":"Biometric/Pin","pathname":"/sdk-reference/ios/older-versions/ios-sdk","siteSpaceId":"sitesp_VH1EC","description":"Cotter's iOS SDK helps you easily add a Biometric prompt or PIN fallback to your app. This is useful for protecting transactions or sensitive information like medical records.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"iOS"},{"label":"Older Versions"}]},{"id":"-M759bhJDlmoAgYMcpsq","title":"Android","pathname":"/sdk-reference/android","siteSpaceId":"sitesp_VH1EC","description":"The easiest way to add Passwordless Login and Email/Phone Number Verification to your Android app.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-MCxyo3ix-jqWDQysF0g","title":"Sign In with Device","pathname":"/sdk-reference/android/sign-in-with-device","siteSpaceId":"sitesp_VH1EC","description":"Our Android SDK offers the easiest way to integrate \"Sign in with device\" to your android app. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"}]},{"id":"-MCy35gqHGzwuHzfIPSw","title":"Authenticate from a Non-Trusted Device","pathname":"/sdk-reference/android/sign-in-with-device/authenticate-from-a-non-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Sign In with Device"}]},{"id":"-M1F-1JInkvT5XlJEMVM","title":"Check if Trusted Device is Enrolled","pathname":"/sdk-reference/android/sign-in-with-device/check-if-trusted-device-is-enrolled","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Sign In with Device"}]},{"id":"-M180XVPUU9yBlVfPetR","title":"Add a new Trusted Device","pathname":"/sdk-reference/android/sign-in-with-device/add-a-new-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Sign In with Device"}]},{"id":"-M1EzM2Hxq_Gkrv0SwsS","title":"Remove Trusted Device","pathname":"/sdk-reference/android/sign-in-with-device/remove-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Sign In with Device"}]},{"id":"-M18-UXHt3c3ixTn76S4","title":"Customization","pathname":"/sdk-reference/android/sign-in-with-device/customization","siteSpaceId":"sitesp_VH1EC","description":"You can change the text and logo in most of the UI that's provided by Cotter's Android SDK.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Sign In with Device"}]},{"id":"-M0et2D8qa-mVoDh-tjp","title":"Sign In with Email/Phone Number","pathname":"/sdk-reference/android/android-sdk-1","siteSpaceId":"sitesp_VH1EC","description":"Our Android SDK offers the easiest way to verify email/phone numbers in your android app. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"}]},{"id":"-M0RaVb_ggDYyCQyIUXy","title":"Biometric/Pin","pathname":"/sdk-reference/android/android-sdk-2","siteSpaceId":"sitesp_VH1EC","description":"Cotter's Android SDK helps you easily add a Biometric prompt or PIN fallback to your app. This is useful for protecting transactions or sensitive information like medical records.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"}]},{"id":"-M0RllKaQwP94cfUBTu7","title":"Advanced Methods","pathname":"/sdk-reference/android/android-sdk-2/advanced-methods","siteSpaceId":"sitesp_VH1EC","description":"These are useful methods that you can use in your app to fully support Biometrics and PIN.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Biometric/Pin"}]},{"id":"-M0RnBPsArsqJgT5vkKe","title":"Customization","pathname":"/sdk-reference/android/android-sdk-2/customization","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Biometric/Pin"}]},{"id":"-MINNyiskmFrjp5RyVFB","title":"Setting Strings","pathname":"/sdk-reference/android/android-sdk-2/setting-strings","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Biometric/Pin"}]},{"id":"-MINHFPZKmmE0QecIOeP","title":"Styling","pathname":"/sdk-reference/android/android-sdk-2/styling","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Biometric/Pin"}]},{"id":"-MCy2yF1u1nfdtiuJVzG","title":"Older SDK Version","pathname":"/sdk-reference/android/older-sdk-version","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"}]},{"id":"-M14g3WtD4o3ZG9N2j9G","title":"Sign In with Device","pathname":"/sdk-reference/android/older-sdk-version/android-sdk","siteSpaceId":"sitesp_VH1EC","description":"Our Android SDK offers the easiest way to integrate \"Sign in with device\" to your android app. You can simply call a function and it does most of the heavy lifting and authentication for you.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Older SDK Version"}]},{"id":"-M180MWupb_alhptlzJO","title":"Authenticate from a Non-Trusted Device","pathname":"/sdk-reference/android/older-sdk-version/android-sdk/old-authenticate-from-a-non-trusted-device","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"Android"},{"label":"Older SDK Version"},{"label":"Sign In with Device"}]},{"id":"-MFXT1xFMZtxQQ6d-BYl","title":"Python (for CLI)","pathname":"/sdk-reference/python-for-cli","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-M75AF-rryBLQdVrZalw","title":"API for Other Mobile Apps or CLI","pathname":"/sdk-reference/api-for-other-mobile-apps","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-M0QVaCMLRWd0jUsIcYn","title":"Verify Email/Phone Number","pathname":"/sdk-reference/api-for-other-mobile-apps/api-for-mobile-apps","siteSpaceId":"sitesp_VH1EC","description":"Authentication API that can be called from your mobile apps. This API utilizes an in-app webview with cookies sharing to allow a single-sign-on for bypassing email and phone number verification.","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"API for Other Mobile Apps or CLI"}]},{"id":"-M0X5OOXRGv9096BLfmD","title":"Handling URL Scheme","pathname":"/sdk-reference/api-for-other-mobile-apps/api-for-mobile-apps/handling-url-scheme","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"},{"label":"API for Other Mobile Apps or CLI"},{"label":"Verify Email/Phone Number"}]},{"id":"-MDcFwnPyQzT3MiP1tHe","title":"Backend: Handling Response","pathname":"/sdk-reference/backend-handling-response","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"SDK Reference","emoji":"1f4d8"}]},{"id":"-MA_eD3Z7J5cG3nJOiW_","title":"Only Allow Your Website/App to Use Your API Key","pathname":"/protecting-your-account/only-allow-your-website-app-to-use-your-api-key","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🛡️ Protecting Your Account"}]},{"id":"-M59sOTJGykJ4QYDPveO","title":"Rate Limit","pathname":"/protecting-your-account/rate-limit","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🛡️ Protecting Your Account"}]},{"id":"-M6I9dmcWIFs0xY0mCw8","title":"Enable reCAPTCHA to Protect Against Automated Abuse","pathname":"/protecting-your-account/enable-recaptcha-to-protect-against-automated-abuse","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🛡️ Protecting Your Account"}]},{"id":"-M4HUyse-9aPxMqUoSRy","title":"Cotter's OAuth 2.0 Tokens Specification","pathname":"/getting-access-token/handling-authentication-with-cotter","siteSpaceId":"sitesp_VH1EC","description":"Allowing Cotter handling your full authentication is the fastest way to get your whole authentication suite setup. Cotter can generate an access token, id token, and refresh tokens for you.","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-M4HcAeSw6KbuSrnge2U","title":"Getting the Tokens","pathname":"/getting-access-token/getting-the-tokens","siteSpaceId":"sitesp_VH1EC","description":"Getting an access token from Cotter's SDK is as easy as setting a variable to `true`.","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-MOAmhCG4vkaRbHNMQWq","title":"Get Tokens during Authentication","pathname":"/getting-access-token/getting-the-tokens/get-tokens-during-authentication","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Getting the Tokens"}]},{"id":"-M4JGrVHEcLJ12a9rzYj","title":"Using the Refresh Token","pathname":"/getting-access-token/getting-the-tokens/using-http-requests","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Getting the Tokens"}]},{"id":"-M4I5Ed9v0BbC7OxzSFn","title":"Storing and Removing Tokens","pathname":"/getting-access-token/storing-and-removing-tokens","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-M4I0B0i0yghkR8yjphX","title":"Renewing Expired Tokens","pathname":"/getting-access-token/renewing-expired-tokens","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-M4HZPVawEx2QN3qLmnv","title":"Verifying JWT Tokens","pathname":"/getting-access-token/verifying-jwt-tokens","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-MJA0kvgKxPtKxX3W9NZ","title":"Requesting Custom Fields on your JWT Token","pathname":"/getting-access-token/requesting-custom-fields-on-your-jwt-token","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-MDcX9BCdgT511q8bObd","title":"Older API","pathname":"/getting-access-token/older-api","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"}]},{"id":"-MLVCmaq_ugDCmTaqYo2","title":"Using HTTP Requests","pathname":"/getting-access-token/older-api/untitled","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Older API"}]},{"id":"-MOAmcb5C9aCwYld7r_s","title":"Getting the Tokens","pathname":"/getting-access-token/older-api/getting-the-tokens","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Older API"}]},{"id":"-M4I2UtJdxzuT_JMHsKv","title":"During Authentication","pathname":"/getting-access-token/older-api/getting-the-tokens/during-authentication","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Older API"},{"label":"Getting the Tokens"}]},{"id":"-M4HjKz1atn3w5W-syVN","title":"During Email/Phone Verification","pathname":"/getting-access-token/older-api/getting-the-tokens/during-authentication/during-email-phone-verification","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Older API"},{"label":"Getting the Tokens"},{"label":"During Authentication"}]},{"id":"-M4IuiqhSaH4ha2Ye8zu","title":"During enrolling Trusted Devices","pathname":"/getting-access-token/older-api/getting-the-tokens/during-enrolling-trusted-devices","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"🗝️ Getting Access Token"},{"label":"Older API"},{"label":"Getting the Tokens"}]},{"id":"-M1EDBkKcgFKrMuVxEd8","title":"User API","pathname":"/api-reference/user-api","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"}]},{"id":"-M9ajAD6AcGgLGa0GDwW","title":"User Object","pathname":"/api-reference/user-api/user-object","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"},{"label":"User API"}]},{"id":"-M4JcI4GboVeH1lUde-M","title":"OAuth Tokens API","pathname":"/api-reference/oauth-tokens-api","siteSpaceId":"sitesp_VH1EC","description":"HTTP Requests for handling Access Token, ID Token, and Refresh Tokens","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"}]},{"id":"-MIH_Ye0dlvNM3xeG-xJ","title":"Verify JWT Token using API (serverless)","pathname":"/api-reference/oauth-tokens-api/verify-jwt-token-using-api-serverless","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"},{"label":"OAuth Tokens API"}]},{"id":"-MGMZEOXjRRPxy1zAe-9","title":"Requesting Custom Claims on your Access Token","pathname":"/api-reference/oauth-tokens-api/requesting-custom-claims-on-your-access-token","siteSpaceId":"sitesp_VH1EC","description":"You can now add your own custom fields on the access token that your receive from Cotter","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"},{"label":"OAuth Tokens API"}]},{"id":"-MDR2Ryn8WDOoYMLN4Ej","title":"Older API","pathname":"/api-reference/oauth-tokens-api/older-api","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"},{"label":"OAuth Tokens API"}]},{"id":"-MLQF3JeMgTYNlyJVYRz","title":"OAuth Tokens from Social Login","pathname":"/api-reference/oauth-tokens-from-social-login","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"}]},{"id":"-M9alXnR44meFvqmTpYK","title":"Event Object","pathname":"/api-reference/event-object","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"}]},{"id":"-MOAWd2k9GpAn0ISa-j2","title":"Reset PIN API","pathname":"/api-reference/reset-pin-api","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"API Reference","emoji":"1f50c"}]},{"id":"-M0j4OejxnXEdV187I4x","title":"Validating Cotter's Identity Token","pathname":"/older-api/validating-cotters-token","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"Older API"}]},{"id":"-M2pWffm56vOPZk07RZ7","title":"Validating Cotter's Event Response","pathname":"/older-api/validating-cotters-event-response","siteSpaceId":"sitesp_VH1EC","description":"","breadcrumbs":[{"label":"Older API"}]}]}