1
Create an instance
Open the API Dashboard, go to the CabalSpy ID tab and create an instance. Start in sandbox or development mode. Copy the Instance ID, it is your
client_id and starts with csid_.Add the page that shows the button as a redirect URI, for example https://app.example.com/, and add its origin as a web origin. Redirect URIs must match exactly.2
Add the login button
Paste the button where people should sign in. For a browser app the widget runs the whole PKCE flow itself.After a successful sign-in the widget fires a Server-side apps set
csid:login event on window.data-href to their own login route instead and run the flow with their client secret, see OpenID Connect.3
Verify the ID token on your backend
Never trust the user object from the browser on its own. Verify the ID token’s signature with the public keys at Store
https://id.cabalspy.xyz/oauth/jwks, and check the issuer and the audience.sub as the user’s id in your database. It never changes for that person and your instance.4
Enable your API key for CabalSpy ID
The Data API uses the same API key as the CabalSpy API. On the API keys page of the dashboard, switch on CabalSpy ID for the key. Then check it:The response shows your instance, plan, request rate and how many users you receive data for. If your account has several instances, add
instance=csid_....5
Call the Data API
Look up the signed-in user by the
sub from the ID token, then load the trading profile of one of their verified wallets.Going live
When everything works, switch the instance to live in the dashboard. Live instances need a verified domain, a logo, privacy policy and terms URLs and a support e-mail, and every redirect URI and web origin must be on a verified domain. If you request thewallets or onchain scope, the instance is reviewed first.
Next steps
Webhooks
React when a user verifies a wallet or gets the KOL badge.
Plans and limits
How many users you receive data for and how fast you can call the API.

