Skip to main content
Keep selling your indicator where you already sell it — Whop, Stripe, Discord, Patreon, Gumroad or your own site. When someone pays, your checkout calls the Access Grants API with the buyer’s email, and the indicator appears on their charts until the date you set. You keep your payment provider, your pricing, your bundles and your customer list. TakeProfit only handles the access.

Two ways to use it

Publish the indicator as invite-only. It has no price, it is not listed on the Marketplace and it does not come up in search — its page is visible only to you, to admins and to the people you give access to. There is no review, so it goes live as soon as you publish. Publishing one needs a paid platform plan. Or keep it paid and grant access on top. A paid indicator stays listed and anyone can still buy it at your price. Grants are a second way in, for buyers who paid you directly. Free indicators cannot be granted.

How it works

  1. Your payment platform confirms the purchase — a webhook, a Zapier trigger or a CSV export.
  2. You call the API with the buyer’s email and an end date.
  3. The buyer opens the platform and finds the indicator under the Invited filter in the indicator panel, and in their Favorites.
  4. Renewals extend the date with the same call. Refunds remove access, or you let the date pass.
The buyer does not need an account first. If the email has one, the indicator is waiting on their next visit. If it does not, they get an invite email and the indicator is there the first time they sign in — as long as they sign up with the same email you sent.

What the buyer sees

  • In the indicator panel the script sits under the Invited filter, next to Subscribed, and its card has Add to chart on it rather than a padlock and a price. It is in their Favorites as well.
  • The card shows no end date. If your automation extends access on every charge the date keeps moving, so showing one would only mislead.
  • On the product page of a paid indicator, the buyer block reads Access granted, with Managed by the author below it. There is no Subscribe button while the grant is active.
  • When access ends, an invite-only indicator disappears from the buyer again. A paid one goes back to showing your price and a Subscribe button.

Set up invite-only access

1

Publish the indicator

Publish it from the IDE as described in How to publish an indicator and choose invite-only as the type. There is no review and no price, so it is live immediately.A paid indicator works too, if you would rather also sell it on the Marketplace — that one goes through the usual review.
2

Copy the product ID

Open your indicator’s publication page or its product page. As the owner you see its Product ID — copy it.
Use the product ID, not the indicator ID. The product ID does not change when you publish a new version of the indicator, so automations built on it keep working.
3

Create an API token

Go to Settings → Login & Security → Personal API Tokens, the same place you create a Market Data API token, and click Generate New Token. Name it after where you will use it, for example whop-webhook, and give it the indicator access scopes:
  • indicator:access:write — grant, extend and revoke access
  • indicator:all:read — list who has access
Copy the token straight away. It is shown only once. See Personal API Tokens for how tokens are managed and revoked.
Tokens need an active paid plan. Without a subscription the block shows Upgrade Plan and Generate instead of the generate button. If your subscription ends, every token you hold is revoked — which stops your grants automation until you subscribe again and generate a new one.
4

Test your setup

Check it works before you automate it. Grant access to one of your own addresses:
A response with "success": true means your token, its scopes and the product ID all work. Fix any errors here, before you add your payment platform — Errors below says what each failure means.
5

Automate it

Let your payment platform make the call on every sale, renewal and refund. Anything that can send an HTTP request when a payment completes will do — a webhook from Whop, Stripe, Discord, Patreon or Gumroad, a no-code step in Zapier, Make or n8n, or a script run against a CSV export of your buyers.They all need the same three things: the buyer’s email, your product ID, and your token in the x-api-key header.

Access Grants API

Base URL: https://takeprofit.com/api/marketplace Send your API token in the x-api-key header on every call. Every date — the expiresAt you set, and the timestamps that come back — is ISO 8601 in UTC, like 2026-12-31T00:00:00Z.

Grant or extend access

Grants access, or updates expiresAt if the buyer already has it. Request body:
Response, granting by email:
Granting by username returns the same shape with username filled in and invitedEmail null.
A new grant on an invite-only indicator emails the buyer. Extending or shortening an existing one sends nothing, so renewals stay quiet. Paid indicators send no email at all.

Remove access

Deleting by email removes the invite and whatever access came from it, claimed or not. Deleting something that does not exist still returns success, so retries are safe.

List who has access

Returns everyone with access, newest first, with claimed grants before unclaimed invites. Expired ones are left out. A null expiresAt is a grant with no end date.

Errors

A failed call returns an HTTP status and a code you can switch on in your automation. The one you are most likely to hit in production is schema_error, on a date your automation built in the wrong format or in the past. Granting by email removes the other common failure, since there is no username to get wrong.

Who does what

Moving buyers from another platform

A list of buyer emails is all you need. Loop over it and call PUT once per email.
  • Buyers without an account are fine. Each gets an invite email, and the indicator is waiting when they sign up with that address.
  • They must sign up with the invited email. Tell them that when you announce the move; signing up with a different address means the invite does not reach them.
  • Check who never turned up. GET the grant list and look for status: "pending" — those are the invites nobody has opened.

Good to know

  • Sign-up is not a prerequisite. Grant access by email first; the buyer can create the account afterwards.
  • Keep your token on a server. Never put it in a web page, a browser extension or a public repository. Anyone holding it can change access to your indicators.
  • A paid indicator can carry both. Granting access to someone who already subscribed does no harm, and removing a grant does not cancel a subscription.

Frequently asked questions

Yes. All invite-only scripts run entirely server-side. The terminal only receives the output values to plot on the chart — the underlying source code is never transmitted to the client, ensuring it cannot be decompiled, viewed, or extracted.
You manage payments directly through your own checkout or billing provider (such as Whop, Stripe, or Lemon Squeezy). TakeProfit does not take any platform cut or commission on these sales, and the public Marketplace price limits (up to $100) do not apply — you set your own pricing and terms.
There is no limit to the number of users you can invite per indicator. You can automate access grants using our Access Grants API via Zapier, Make, or custom webhooks. If an invited user hasn’t registered yet, you can still grant access by email — they will receive an invite, and the indicator will be waiting in their account as soon as they sign up.
If your paid plan expires, your API tokens will be revoked until renewed.
Yes. Users on Freeroll can receive and use invite-only indicators, subject to the standard limit of 2 indicators per chart. Users on either plan can set alerts on invite-only indicators they have access to, within their plan’s allowance (Freeroll: 5 indicator alerts expiring after 3 months; All-In: up to 500 indicator alerts, non-expiring available). See Alert limitations.
Yes. All alerts execute in the cloud 24/7, continuing to fire whether your browser is closed or your device is locked. Alerts can be delivered in real time to Telegram, webhooks, or email (capped at 1 email per minute per address).