117 lines
1.8 KiB
Markdown
117 lines
1.8 KiB
Markdown
# Paddle API Reference
|
|
|
|
Base URL: `https://api.paddle.com` (prod) | `https://sandbox-api.paddle.com` (sandbox)
|
|
|
|
## Products
|
|
|
|
```bash
|
|
# Create product
|
|
POST /products
|
|
{
|
|
"name": "Pro Plan",
|
|
"tax_category": "standard",
|
|
"description": "Professional subscription"
|
|
}
|
|
|
|
# List products
|
|
GET /products?status=active
|
|
```
|
|
|
|
## Prices
|
|
|
|
```bash
|
|
# Create price
|
|
POST /prices
|
|
{
|
|
"product_id": "pro_xxx",
|
|
"description": "Monthly subscription",
|
|
"unit_price": { "amount": "1999", "currency_code": "USD" },
|
|
"billing_cycle": { "interval": "month", "frequency": 1 }
|
|
}
|
|
|
|
# One-time price
|
|
POST /prices
|
|
{
|
|
"product_id": "pro_xxx",
|
|
"unit_price": { "amount": "4999", "currency_code": "USD" }
|
|
}
|
|
```
|
|
|
|
## Transactions
|
|
|
|
```bash
|
|
# Create transaction (checkout)
|
|
POST /transactions
|
|
{
|
|
"items": [{ "price_id": "pri_xxx", "quantity": 1 }],
|
|
"customer_id": "ctm_xxx" # optional
|
|
}
|
|
|
|
# Get transaction
|
|
GET /transactions/{txn_id}
|
|
```
|
|
|
|
## Customers
|
|
|
|
```bash
|
|
# Create customer
|
|
POST /customers
|
|
{
|
|
"email": "user@example.com",
|
|
"name": "John Doe"
|
|
}
|
|
|
|
# Get customer portal session
|
|
POST /customers/{ctm_id}/portal-sessions
|
|
```
|
|
|
|
## Subscriptions
|
|
|
|
```bash
|
|
# Get subscription
|
|
GET /subscriptions/{sub_id}
|
|
|
|
# Update subscription
|
|
PATCH /subscriptions/{sub_id}
|
|
{
|
|
"items": [{ "price_id": "pri_new", "quantity": 1 }],
|
|
"proration_billing_mode": "prorated_immediately"
|
|
}
|
|
|
|
# Cancel subscription
|
|
POST /subscriptions/{sub_id}/cancel
|
|
{
|
|
"effective_from": "next_billing_period"
|
|
}
|
|
|
|
# Pause subscription
|
|
POST /subscriptions/{sub_id}/pause
|
|
{
|
|
"effective_from": "next_billing_period"
|
|
}
|
|
```
|
|
|
|
## Response Format
|
|
|
|
```json
|
|
{
|
|
"data": { ... },
|
|
"meta": {
|
|
"request_id": "xxx",
|
|
"pagination": { "per_page": 50, "next": "..." }
|
|
}
|
|
}
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
```json
|
|
{
|
|
"error": {
|
|
"type": "request_error",
|
|
"code": "entity_not_found",
|
|
"detail": "Product not found"
|
|
}
|
|
}
|
|
```
|