Plans
| Plan | Monthly Requests | Per-Minute Limit | Features |
|---|---|---|---|
| Starter | 100 | 5 | Products, Brands, Ingredients lookup |
| Growth | 10,000 | 60 | Everything in Starter + Reformulation Alerts |
| Pro | 100,000 | 120 | Everything in Growth + AI Recommendations |
| Enterprise | Unlimited | 1,000 | Everything in Pro + Priority support |
Starter
100 requests / month · 5 req/minThe Starter plan is designed for prototyping and personal projects. You get full access to product search, brand listings, and ingredient lookups. Ideal for validating your integration before committing to a paid tier.
Growth
10,000 requests / month · 60 req/minGrowth is for production applications with moderate traffic. It adds Reformulation Alerts — webhooks that notify your application when a product’s ingredient list changes — helping you keep your users informed about formula changes.
Pro
100,000 requests / month · 120 req/minPro unlocks the AI Recommendation engine (
POST /v1/recommend/), which uses vector similarity search and GPT-4o-mini re-ranking to surface personalised product matches based on hair type, porosity, and concerns.Enterprise
Unlimited requests / month · 1,000 req/minEnterprise is built for high-traffic platforms and marketplaces. Unlimited monthly requests, a 1,000 req/min burst ceiling, and dedicated priority support. Contact us to discuss custom SLAs and data agreements.
Rate limit headers
Every API response includes metadata about your current rate limit state. The two limits operate as independent gates:- Per-minute limit — enforced using a sliding 60-second window. If you exceed your plan’s per-minute ceiling, the API returns
429immediately. Theretry_after_secondsfield in the error body tells you exactly how many seconds remain until the window resets. - Monthly limit — a cumulative counter that increments with every successful request. Once you reach your monthly cap, every subsequent request returns
429until the counter resets on the 1st of the following month.
429 response body looks like this:
Monthly request counters reset on the 1st of each calendar month at 00:00 UTC. The reset is automatic — you do not need to take any action.
Feature availability by plan
| Feature | Starter | Growth | Pro | Enterprise |
|---|---|---|---|---|
| Product search | ✓ | ✓ | ✓ | ✓ |
| Brand listing | ✓ | ✓ | ✓ | ✓ |
| Ingredient lookup | ✓ | ✓ | ✓ | ✓ |
| Reformulation alerts | — | ✓ | ✓ | ✓ |
| AI recommendations | — | — | ✓ | ✓ |
| Priority support | — | — | — | ✓ |
403 Forbidden response:
Upgrading your plan
Open a Stripe Checkout session
Send an authenticated
POST request to /v1/stripe/checkout to generate a Stripe Checkout URL for your desired plan. Redirect your user (or yourself) to that URL to complete the upgrade. Your API key’s tier is updated automatically once payment is confirmed.Confirm your new tier
After upgrading, make any authenticated request and check the response. Your new monthly limit and per-minute ceiling take effect immediately — there is no grace period or delay.
Enterprise inquiries
For Enterprise plans, custom rate limit configurations, or volume pricing, contact us at support@blackhairapi.com rather than going through the self-serve Stripe flow.