Agent skill

Polar Python SDK

by polarsource in polarsource/polar

Integrate Polar billing in server-side Python applications using the versioned Polar and PolarAsync clients.

Apache-2.0Auto-check passedData & Analytics

Install Polar Python SDK

skills CLI
$ npx skills add polarsource/polar --skill polar-python-sdk -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install polarsource/polar polar-python-sdk --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/polarsource/polar.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sdk/python/polar/.agents/skills/polar-python-sdk .claude/skills/polar-python-sdk && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
polar-python-sdk
GitHub stars
10k
Token cost
~1.8k tokens
SKILL.md length
698 words
Files
5 (incl. references)
Skills in repo
18
Repo updated
First seen
Licence
Apache-2.0

At a glance

Integrate Polar billing in server-side Python applications using the versioned Polar and PolarAsync clients.

  • Works in 5 steps: Identify the installed polar-sdk version… → Inspect generated service signatures,… → Use Polar in synchronous code and… → …
  • Implementing Polar customers and external IDs
  • SKILL.md covers Inspect the application first, Migrate from the old SDK, Configure and reuse the client and Follow generated argument and…, plus 5 more sections
  • Needs POLAR_ACCESS_TOKEN

What it does

Polar Python SDK is an agent skill from polarsource/polar. Integrate Polar billing in server-side Python applications using the versioned Polar and PolarAsync clients. Use when implementing Polar customers and external IDs, checkout or customer portal sessions, customer-state entitlement checks, webhook validation and processing, API error handling, usage-event ingestion and metered billing, or migrating an application from the old Polar Python SDK.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `agents/openai.yaml`, `references/migration-from-v0.md` and `references/usage-events.md`).

It sits in Data & Analytics, covering DataFrames. It works with Python. The repository describes itself as: Polar — A billing platform for the intelligence era. The licence is Apache-2.0.

When your agent uses it

  • Implementing Polar customers and external IDs
  • Customer portal sessions
  • Customer-state entitlement checks
  • Webhook validation and processing

Example prompts

  • “/polar-python-sdk”

Requirements

  • Python 3
  • A credential in POLAR_ACCESS_TOKEN

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Identify the installed polar-sdk version and preserve the API version already selected by the application.
  2. Inspect generated service signatures, input TypedDict definitions, output dataclasses, and endpoint-specific errors before writing calls.
  3. Use Polar in synchronous code and PolarAsync in asynchronous code. Do not mix blocking SDK calls into an async request path.
  4. Identify whether the access token is scoped to an organization. When the selected token does not imply one, create the client with…
  5. Keep client, webhook, and environment configuration on the server.

What it can do on your machine

Read from SKILL.md and the folder at commit 599c727. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • POLAR_ACCESS_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Polar Python SDK loads about 1.8k tokens when it runs, and up to ~4.8k if it reads all its reference files. Until then it costs about 103 tokens; SKILL.md has 698 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~103
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from polarsource/polar at commit 599c727, republished under its Apache-2.0 licence (© polarsource). 698 words, ~1,832 tokens.

Download SKILL.mdSave it as .claude/skills/polar-python-sdk/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
polar-python-sdk
description
Integrate Polar billing in server-side Python applications using the versioned Polar and PolarAsync clients. Use when implementing Polar customers and external IDs, checkout or customer portal sessions, customer-state entitlement checks, webhook validation and processing, API error handling, usage-event ingestion and metered billing, or migrating an application from the old Polar Python SDK.

Polar Python SDK

Use the generated, versioned Polar SDK without inventing methods or parameters.

Inspect the application first

  1. Identify the installed polar-sdk version and preserve the API version already selected by the application.
  2. Inspect generated service signatures, input TypedDict definitions, output dataclasses, and endpoint-specific errors before writing calls.
  3. Use Polar in synchronous code and PolarAsync in asynchronous code. Do not mix blocking SDK calls into an async request path.
  4. Identify whether the access token is scoped to an organization. When the selected token does not imply one, create the client with Polar(..., organization_id=...) or pass organization_id, and confirm the required endpoint scopes.
  5. Keep client, webhook, and environment configuration on the server.

Migrate from the old SDK

Read Migration from the <1.0.0 SDK before changing an application that imports polar_sdk, calls _async operation variants, or paginates with .next(). Do not mix old and new client, model, pagination, error, or webhook conventions.

Configure and reuse the client

Keep production and sandbox access tokens separate. Never expose an organization access token in browser, mobile, or other public client code. Pass environment="sandbox" while testing; omit it or pass environment="production" in production.

python
import os

from polar.v2026_10 import Polar

with Polar(
    os.environ["POLAR_ACCESS_TOKEN"],
    environment="sandbox",
) as polar:
    customer_state = polar.customers.get_state_external("usr_123")

For a long-running service, create one client during application startup, reuse its connection pool, and close it during application shutdown. Do not create a new client for every incoming request.

Use the async client with an application-lifetime async context in async services:

python
import os

from polar.v2026_10 import PolarAsync


async def load_customer_state() -> None:
    async with PolarAsync(os.environ["POLAR_ACCESS_TOKEN"]) as polar:
        customer_state = await polar.customers.get_state_external("usr_123")
        print(customer_state)

Follow generated argument and output conventions

  • Pass path parameters positionally.
  • Pass query and request-body parameters as keyword arguments.
  • Treat request payload definitions as generated TypedDict schemas.
  • Treat JSON object responses as generated, slotted dataclass instances or unions.
  • Expect UUID and date-time OpenAPI fields to remain strings in this SDK version.
  • Use iter_* for paginated endpoints. Use for with Polar and async for with PolarAsync; each additional page performs another API request.

Correlate customers with stable external IDs

Use the application's immutable user or organization identifier as the Polar customer external_id. It is unique within a Polar organization. It may be assigned later when initially unset, but it cannot be changed or removed once set.

python
customer = polar.customers.create(
    external_id="usr_123",
    email="user@example.com",
)
customer_state = polar.customers.get_state_external("usr_123")

Handle concurrent creation safely. A preflight lookup followed by creation is not atomic; if creation reports an existing email or external ID, fetch and reconcile the existing customer rather than creating a second mapping.

Show full SKILL.md (316 more words)Show less

Create checkout and customer portal sessions

Create checkout sessions on the server and send only the returned URL to the browser. Prefer external_customer_id so a completed checkout is reconciled with the application's customer.

python
checkout = polar.checkouts.create(
    products=[os.environ["POLAR_PRODUCT_ID"]],
    external_customer_id="usr_123",
    success_url="https://example.com/billing/success?checkout_id={CHECKOUT_ID}",
    return_url="https://example.com/settings/billing",
)
redirect_to(checkout.url)

Do not treat the success redirect as proof of payment or entitlement. Confirm access through customer state or a verified webhook.

Create short-lived customer portal sessions only for an authenticated customer:

python
session = polar.customer_sessions.create(
    external_customer_id="usr_123",
    return_url="https://example.com/settings/billing",
)
redirect_to(session.customer_portal_url)

Validate return URLs and never let an untrusted caller choose another customer's external ID.

Reconcile feature access from customer state

Prefer a feature_flag benefit attached to the relevant products over inferring access from subscription statuses. Reconcile both access grants and access revocations.

python
from polar.v2026_10.outputs import CustomerState


def has_feature_access(customer_state: CustomerState, benefit_id: str) -> bool:
    return any(
        grant.benefit_id == benefit_id for grant in customer_state.granted_benefits
    )


customer_state = polar.customers.get_state_external("usr_123")
set_feature_access(
    customer_external_id="usr_123",
    enabled=has_feature_access(
        customer_state,
        os.environ["POLAR_BENEFIT_ID"],
    ),
)

Make set_feature_access an idempotent application write. A missing benefit must disable access, not merely skip a grant operation.

For webhook-driven synchronization, use benefit-grant events for an incremental local grant ledger or customer.state_changed for complete snapshot reconciliation. Read Webhook processing before implementing or modifying a receiver.

Ingest metered usage events

Read Usage-event ingestion before implementing metered billing. In particular:

  • Match the event name and metadata to the configured meter.
  • Associate the event with exactly one customer_id or external_customer_id.
  • Assign every logical event a stable, unique external_id.
  • Reuse the same external_id when retrying so Polar can deduplicate the event.
  • Inspect both inserted and duplicates in the ingestion result.
  • Enforce usage limits in the application; ingestion does not reject an action because a customer has exhausted a balance.

Handle API failures intentionally

Handle generated endpoint-specific errors before broad SDK errors. Classify common base errors as follows:

  • PolarNetworkError: retry only when the operation is safe or carries a stable deduplication identifier.
  • PolarRateLimitError: apply bounded backoff and honor retry_after when present.
  • PolarServerError: retry selected 5xx failures with bounded exponential backoff and jitter.
  • PolarClientError: do not blindly retry authentication, authorization, validation, or not-found failures.

Never create a new usage-event external_id during a retry. For other mutations, use an endpoint-supported idempotency mechanism or application-level reconciliation before retrying.

© polarsource, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in sdk/python/polar/.agents/skills/polar-python-sdk of polarsource/polar.

  • SKILL.md
  • agents/openai.yaml
  • references/migration-from-v0.md
  • references/usage-events.md
  • references/webhooks.md

Open the folder on GitHubat commit 599c727

Compare with similar skills

Polar Python SDK next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Polar Python SDK compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Polar Python SDK this skillpolarsource/polar10k—~1.8kAutomated safety check: PassApache-2.0
Spark Python Data Sourcedatabricks/databricks-agent-skills345—~2.1kAutomated safety check: PassCustom licence
Chdb Datastorevemetric/vemetric3942 repos~1.4kAutomated safety check: PassApache-2.0
CSV Data Summarizercoffeefuelbump/csv-data-summarizer-claude-skill4682 repos~1.4kAutomated safety check: PassNone
Python Executorcortega26/chile-hub1132 repos~1.5kAutomated safety check: PassMIT
Retentioneering Product Analyticsretentioneering/retentioneering-tools920—~1.6kAutomated safety check: PassApache-2.0

Similar skills

  • Spark Python Data Source

    databricks/databricks-agent-skills

    Official

    Build custom Python data sources for Apache Spark using the PySpark DataSource API — batch and streaming readers/writers for external systems.

    345 GitHub stars~2.1k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Chdb Datastore

    vemetric/vemetric

    A skill your agent uses when the user has tabular data (pandas DataFrame, parquet, csv, Arrow, json) and wants to filter, group, aggregate, join, or speed up slow pandas.

    394 GitHub starsUsed in 2 repos~1.4k tokens
    Data & AnalyticsAuto-check passed
  • CSV Data Summarizer

    coffeefuelbump/csv-data-summarizer-claude-skill

    Analyzes CSV files, generates summary stats, and plots quick visualizations using Python and pandas.

    468 GitHub starsUsed in 2 repos~1.4k tokens
    Data & AnalyticsAuto-check passed
  • Python Executor

    cortega26/chile-hub

    Execute Python code in a safe sandboxed environment via [inference.sh](https://inference.sh).

    113 GitHub starsUsed in 2 repos~1.5k tokens
    Data & AnalyticsAuto-check passed
  • Retentioneering Product Analytics

    retentioneering/retentioneering-tools

    Analyze event logs, clickstreams, user paths, product funnels, retention, behavioral segments, transition graphs, step matrices, sequence patterns, and customer journeys using Retentioneering.

    920 GitHub stars~1.6k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Pandas Pro

    Jeffallan/claude-skills

    Handles pandas DataFrame work: cleaning, merging, groupby aggregation, pivots, time-series resampling and memory tuning, with checks on dtypes, shapes and nulls.

    12k GitHub starsUsed in 1 repo~1.5k tokens
    Data & AnalyticsAuto-check passed

More from polarsource/polar

All 18 skills in this repo
  • Polar Typescript SDK

    polarsource/polar

    Integrate Polar billing in server-side TypeScript applications using the versioned createPolar and createPolarCore clients.

    10k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Adr Check

    polarsource/polar

    Check a code change against the repo's Accepted Architecture Decision Records (ADRs) in handbook/engineering/decisions/ and report violations with citations.

    10k GitHub stars~771 tokensUpdated today
    Auto-check passed
  • API Surface Review

    polarsource/polar

    Review changes to Polar's API contract — Pydantic schemas, FastAPI endpoints, OpenAPI output and the generated SDKs.

    10k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Billing Review

    polarsource/polar

    Review a diff that touches Polar's billing domain — subscriptions, cycles and crons, orders, billing entries, meters and usage, discounts, checkout, payments and dunning, refunds, disputes, payouts…

    10k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Interview Task

    polarsource/polar

    Prepare an interview task for a candidate, as part of our hiring process.

    10k GitHub stars~933 tokensUpdated today
    Auto-check passed
  • Open PR

    polarsource/polar

    Open or update a draft GitHub pull request after Polar-specific review and cubic CLI review.

    10k GitHub stars~586 tokensUpdated today
    Auto-check passed

Works with

Questions about Polar Python SDK

What does Polar Python SDK do?

Integrate Polar billing in server-side Python applications using the versioned Polar and PolarAsync clients. Polar Python SDK is an agent skill from polarsource/polar. Integrate Polar billing in server-side Python applications using the versioned Polar and PolarAsync clients.

When should I use Polar Python SDK?

Polar Python SDK fits situations like: implementing Polar customers and external IDs; customer portal sessions; customer-state entitlement checks; webhook validation and processing.

How do I install Polar Python SDK in Claude Code?

Run `npx skills add polarsource/polar --skill polar-python-sdk -a claude-code`. Or copy the skill folder (sdk/python/polar/.agents/skills/polar-python-sdk in polarsource/polar) into .claude/skills/polar-python-sdk in your project. Claude Code loads it when a task matches its description.

How do I install Polar Python SDK in Codex?

Run `npx skills add polarsource/polar --skill polar-python-sdk -a codex`. Or copy the skill folder (sdk/python/polar/.agents/skills/polar-python-sdk in polarsource/polar) into .agents/skills/polar-python-sdk in your project. Codex loads it when a task matches its description.

Can I use Polar Python SDK in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add polarsource/polar --skill polar-python-sdk -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/polar-python-sdk, .gemini/skills/polar-python-sdk, .github/skills/polar-python-sdk and .opencode/skills/polar-python-sdk in your project.

What does Polar Python SDK need to run?

Going by SKILL.md and its folder, Polar Python SDK needs credentials named POLAR_ACCESS_TOKEN. Our summary lists: Python 3; A credential in POLAR_ACCESS_TOKEN.

Does Polar Python SDK access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Polar Python SDK safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Polar Python SDK use?

Polar Python SDK is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Polar Python SDK use?

About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.9k tokens, read only when the agent opens those files.

What are the alternatives to Polar Python SDK?

Skills that share tags, products or a category with Polar Python SDK: Spark Python Data Source (databricks/databricks-agent-skills, 345 stars), Chdb Datastore (vemetric/vemetric, 394 stars), CSV Data Summarizer (coffeefuelbump/csv-data-summarizer-claude-skill, 468 stars) and Python Executor (cortega26/chile-hub, 113 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Polar Python SDK?

polarsource (a GitHub organization) maintains it in polarsource/polar, which has 10,336 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 7, 2026.

Source: polarsource/polar on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.