Diwali sale 30% Code: Diwali30 Ends in 2 days from now Shop Now →

Developer API

A simple JSON REST API over HTTPS. It works with every programming language. Base address: https://themeharvest.com/api/v1 · Rate limit: 60 requests per minute per IP (license calls: 30).

Catalog (no key needed)

GET /itemsLive items. Query: q, category (slug), author (username), sort=sales, per_page (1–50), page.
GET /items/{id}One item with price, rating, sales, version, tags, demo and compatibility.
GET /categoriesAll categories: id, parent_id, market, name, slug.
curl "https://themeharvest.com/api/v1/items?sort=sales&per_page=5"

Authors: verify a purchase code

Create your personal token in Studio → API & purchase codes and send it as a Bearer token. Only sales of your own items are found.

GET /author/purchase/verify?code=…Is this purchase code real? Item, buyer, license, support date, refunded.
GET /author/salesYour latest sales (50 per page) and your balance.
GET /author/itemsAll your items with their status.
curl -H "Authorization: Bearer YOUR_TOKEN" -H "Accept: application/json" \
  "https://themeharvest.com/api/v1/author/purchase/verify?code=PURCHASE-CODE"

License activation (inside your item)

Your item calls these from the buyer's server. No token is needed: the purchase code + Item ID is the proof. Fields: code, item_id, domain (form or JSON).

POST /license/activateOn install. 200 {"active":true} · 404 not_found · 409 limit_reached · 403 refunded
GET /license/checkOnce a day — still valid?
POST /license/deactivateOn uninstall — frees the domain.
curl -X POST https://themeharvest.com/api/v1/license/activate -d code=PURCHASE-CODE -d item_id=ITEM_ID -d domain=example.com

Authors: ready code for PHP, WordPress, Node.js, Python, Java, C#, Go and Flutter with your Item ID filled in is in Studio → My items → 🔑 License & API.

Automatic updates

GET /updates/check?item_id=…&code=…&version=1.0.0Latest version, changelog and a download link valid for 30 minutes (needs an active purchase).
GET /updates/{id}/infoPublic version information of an item.

Errors

401Token missing or wrong
404Not found (wrong code, item or a code of another item)
422A field is missing or not valid
429Too many requests — wait a minute

Every answer is JSON. Send "Accept: application/json".