# Developers

Connect your casino or games to PlayerPal: link players without exchanging personal data, send activity and daily facts, and read analytics about your own players. Every integration is asynchronous, so nothing you build sits in the path of login, game launch, wagering or payouts.

  - [Quickstart](./quickstart.mdx): 
    Sign a request, send your first batch and read a KPI back.
  
  - [Authentication](./authentication.mdx): 
    Request signing, partner tokens, the integration key and scopes.
  
  - [API reference](/api/partner): 
    Every partner endpoint, generated from the API's own code.
  

## Choose your integration

<IntegrationPaths>
  <IntegrationPath
    eyebrow="Operators"
    title="Casino integration"
    summary="Let players link their casino account to PlayerPal, keep aliases in sync, and read analytics about your players."
    steps={[
      { label: 'Plan your integration', to: '/docs/developers/onboarding' },
      { label: 'Authenticate', to: '/docs/developers/authentication' },
      { label: 'Link players', to: '/docs/developers/linking-players', note: 'Link intent, player confirmation, result exchange' },
      { label: 'Send daily facts', to: '/docs/developers/fact-ingest', note: 'Commercial and attribution facts' },
      { label: 'Handle unlink notices', to: '/docs/developers/webhooks' },
      { label: 'Read your KPIs', to: '/docs/developers/kpi-api' },
    ]}
    cta={{ label: 'Start the operator path', to: '/docs/developers/onboarding' }}
  />
  <IntegrationPath
    eyebrow="Game providers"
    title="Game integration"
    summary="Send settled rounds for points and analytics, show the PlayerPal widget in your games, and compare your studio with the network."
    steps={[
      { label: 'Plan your integration', to: '/docs/developers/onboarding' },
      { label: 'Authenticate', to: '/docs/developers/authentication' },
      { label: 'Send activity', to: '/docs/developers/sending-activity', note: 'Settled rounds in batches or bulk uploads' },
      { label: 'Send daily facts', to: '/docs/developers/fact-ingest', note: 'Gameplay and game catalogue' },
      { label: 'Embed the widget', to: '/docs/developers/widget' },
      { label: 'Read your KPIs', to: '/docs/developers/kpi-api' },
    ]}
    cta={{ label: 'Start the game provider path', to: '/docs/developers/onboarding' }}
  />
</IntegrationPaths>

## Guides

  - [Link players](./linking-players.mdx): 
    Connect casino accounts and receive pairwise aliases.
  
  - [Send activity](./sending-activity.mdx): 
    Settled rounds in JSON batches or bulk file uploads.
  
  - [Fact ingest](./fact-ingest.mdx): 
    Daily gameplay, commercial, catalogue and attribution facts.
  
  - [KPI API](./kpi-api.mdx): 
    Your KPIs, breakdowns and anonymous network comparisons.
  
  - [Widget](./widget.mdx): 
    Show PlayerPal inside your game pages.
  
  - [Webhooks](./webhooks.mdx): 
    Notices PlayerPal sends you, and how to reconcile.
  

## Reference

  - [Errors and idempotency](./idempotency-and-errors.mdx): 
    Every error code, retries and safe resends.
  
  - [Metric definitions](../analytics/metrics.mdx): 
    Grain, source, window and suppression for each KPI.
  
  - [Availability](./availability.mdx): 
    How to integrate so play never depends on PlayerPal.
  
  - [Changelog](./changelog.mdx): 
    Changes to the partner API.
  

## Tools

| | |
|---|---|
| **OpenAPI document** | [`/openapi/partner.json`](pathname:///openapi/partner.json): OpenAPI 3.1, for code generators and API clients |
| **Code samples** | curl, Node.js, Python, PHP, Java and C# on every guide. Your language choice is remembered across pages |
| **For AI assistants** | [`/llms.txt`](pathname:///llms.txt) indexes every page; [`/llms-full.txt`](pathname:///llms-full.txt) has all of it. Each page also has **Copy page** |
| **Sandbox** | Not available yet. Ask your PlayerPal contact about test credentials |
