Chunkfactory API

The Chunkfactory API returns JSON over HTTPS. Base URL: https://chunkfactory.com/public-api/v1/

General

  • Method: all endpoints are GET. Responses are UTF-8 JSON.
  • Timestamps: ISO 8601 in UTC, e.g. 2026-10-10T18:17:41Z. Date filters (from, to, updated_since) accept a Unix timestamp, YYYY-MM-DD (UTC; to includes the whole day) or ISO 8601.
  • Amounts: decimal numbers with two decimal places in the given currency (currently always EUR).
  • Pagination: page (from 1) and per_page (max. 100). Responses contain pagination: {page, per_page, total, last_page}.
  • Rate limit: 60 requests per minute per IP address (public endpoints) or per token (vendor endpoints). Headers X-RateLimit-Limit and X-RateLimit-Remaining; above the limit you get HTTP 429 with Retry-After.
  • Errors: HTTP 400/401/403/404/429 with {"error": {"code": "...", "message": "..."}}.

Public endpoints (no authentication)

  • GET products: visible products. Filters: vendor_id, category_id, updated_since, order (last_update, released, rating, title).
  • GET product?pid=1: product details (title, vendor, category, price, sale, current version, rating).
  • GET versions?pid=1: version history, newest first (limit, max. 100).
  • GET updates?pid=1: changelog / update posts as plain text (limit, max. 50).
  • GET update-check?pid=1&version=1.2.0: latest_version and update_available. Ideal for update notifications inside your plugin.
  • GET license?pid=1&key=XXXXX-…: verifies a buyer's license key, optionally with &address=play.example.net. Returns valid: true with the license (license id, buyer user id and username, purchase date, registered server address) and address_match if you sent an address. Unknown, refunded or charged-back licenses return valid: false.

Example:

curl "https://chunkfactory.com/public-api/v1/update-check?pid=1&version=1.2.0"

Vendor endpoints (API token)

Vendors create personal tokens under Vendor area → API access and send them as header Authorization: Bearer cfv_…. A token only ever returns the vendor's own data, and never buyer names, e-mail addresses, IP addresses or license keys.

  • GET vendor/products: all own products incl. status (visible, moderated, deleted), is_active, created_at, sales_count, view_count.
  • GET vendor/sales: sold line items, one row per product and order (order_id groups the items of one checkout). Filters: from, to, product_id, status (completed, refunded), since_id (only line items with a higher line_item_id, for incremental imports), order (desc, asc).
    Fields: line_item_id, order_id, product_id, purchased_at, quantity (always 1), status, currency, list_price, discount, gross (amount paid for this item after discounts), platform_fee, payment_fee (always 0, payment fees are carried by Chunkfactory), total_fee, net (your share), share, refunded, refund_amount, refunded_net, payment_method, settlement, transferred_at.
    list_price and discount are known for orders from October 2026 on and null before. A line item can change from completed to refunded later; re-import recent periods to pick that up.
  • GET vendor/finance/summary?from=…&to=…: orders, line_items, gross, discounts, platform_fee, payment_fee, total_fee, net, refunds. Refunded items are not part of gross and net.
  • GET vendor/finance/products?from=…&to=…: the same figures per product.
  • GET vendor/payouts: payouts and Stripe transfers (from, to, pagination).
  • GET vendor/balance: available balance, balance still in the holding period, lifetime net earnings.
curl -H "Authorization: Bearer cfv_…" "https://chunkfactory.com/public-api/v1/vendor/sales?from=2026-09-01&to=2026-09-30&per_page=100"

Older endpoints

The previous endpoints https://api.chunkfactory.com/?pid=&key= and https://api.chunkfactory.com/product/?pid= keep working with their old response format. New integrations should use the endpoints above.

Missing something? Please create a support ticket.