# grov best practices

How to get good results, and how to avoid the three or four ways agents
usually waste money here.

## Pick the right service

Growth services fall into two shapes, and mixing them up is the most common
mistake.

**Post services** act on one specific piece of content. Likes, views, comments,
reposts, shares and saves. They need the direct link to that post. Pointing one
at a profile does nothing useful.

**Account services** act on a profile. Followers, subscribers, channel members.
They need the account name or the profile link, not a link to one of its posts.

- `url`: `xlikes`, `xreposts`, `xcomments`, `xviews`, `instalikes`, `instacomments`, `instaviews`, `instareposts`, `instasaves`, `tiktoklikes`, `tiktokcomments`, `tiktokviews`, `tiktokshares`, `tiktoksaves`, `ytlikes`, `ytcomments`, `ytviews`, `spotifyplays`, `spotifysaves`, `spotifyfollowers`, `spotifylisteners`, `fblikes`, `fbcomments`, `fbviews`, `fbshares`, `fbsaves`, `fbgroupmembers`
- `handle`: `xfollowers`, `instafollowers`, `tiktokfollowers`, `ytsubscribers`, `fbfollowers`
- `join`: `tgmembers`

## Get the target right

- Use the canonical link. Share sheets add tracking parameters; they are
  stripped for you, but a shortened link that redirects somewhere else is not
  resolved, so expand it first.
- The target has to be public. A private account or a restricted post cannot be
  delivered to, and the order will sit unfinished.
- For account services you can send `@name`, `name` or the full profile URL.
  All three are accepted.
- Do not rename the account or delete the post while an order is running. The
  work is being done against the link you gave.

## Choose an amount that looks plausible

Growth that is wildly out of proportion to an account is the fastest way to make
it look bought.

- Match the scale of the account. Ten thousand likes on a post from an account
  with two hundred followers reads as noise, not traction.
- Spread a campaign across several orders over several days instead of one large
  order. It costs the same.
- If you want engagement to look natural, order views alongside likes rather than
  likes alone. Real posts have far more views than likes.
- Start small on a new target. Confirm it delivers, then scale.

## Budget

- Prices are per unit and are quoted in the 402 for the exact amount you asked
  for. Read the price from there, never from a cached document.
- Confirm the spend with your human before paying. Every time, not just the
  first time.
- There is no minimum commitment and nothing recurring. One call, one order.

## Expect gradual delivery

The work is completed by people, so an order fills in over minutes to hours.

- `queued` means paid and accepted. It is not an error and it needs no action.
- `in_progress` means it is filling. `delivered` and `remaining` move as it does.
- `partial` means some of it landed and the rest is still going.
- Do not place a second order because the first has not finished. You will pay
  twice for one outcome.
- If an order has not moved in several hours, tell your human rather than
  reordering.

## Handle secrets properly

- The `secret` in the create response is the only way to read the order later.
  Save it before you do anything else.
- It is a bearer token. Anyone holding it can read the order, so keep it out of
  logs and out of anything you print back to a human verbatim.
- There is no recovery flow. A lost secret means a lost view of that order, even
  though the order itself still completes.

## Poll politely

- A status read is answered live. The delivered and remaining figures are read
  at the moment you ask, not lifted from a snapshot taken earlier.
- Reading the same order again within 120 seconds answers from the
  figures already on file instead of reading again, so a tight loop buys you
  nothing. Every few minutes is the useful rhythm.
- Stop polling once the status is `completed`, `canceled` or `failed`, and drop
  the secret from your state. A finished order is never re-read.
- Batch your checks into an existing heartbeat rather than running a dedicated
  loop.

## Platform notes

### X
- Post services: `xlikes`, `xreposts`, `xcomments`, `xviews`
- Account services: `xfollowers`
- Example target: `https://x.com/grov/status/1234567890`

### Instagram
- Post services: `instalikes`, `instacomments`, `instaviews`, `instareposts`, `instasaves`
- Account services: `instafollowers`
- Example target: `https://www.instagram.com/p/Cxxxxxxxxxx/`

### TikTok
- Post services: `tiktoklikes`, `tiktokcomments`, `tiktokviews`, `tiktokshares`, `tiktoksaves`
- Account services: `tiktokfollowers`
- Example target: `https://www.tiktok.com/@grov/video/1234567890`

### YouTube
- Post services: `ytlikes`, `ytcomments`, `ytviews`
- Account services: `ytsubscribers`
- Example target: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`

### Telegram
- Account services: `tgmembers`
- Example target: `https://t.me/grovfun`

### Spotify
- Post services: `spotifyplays`, `spotifysaves`, `spotifyfollowers`, `spotifylisteners`
- Example target: `https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT`

### Facebook
- Post services: `fblikes`, `fbcomments`, `fbviews`, `fbshares`, `fbsaves`, `fbgroupmembers`
- Account services: `fbfollowers`
- Example target: `https://www.facebook.com/grov/posts/1234567890`

## Things that will not work

- Pointing a post service at a profile, or an account service at a post.
- A target that is private, deleted, age restricted or region locked.
- Buying comments and expecting them to be about your specific subject. They are
  short and generic by nature.
- Ordering above a service's maximum. The call is rejected before you pay, which
  is the intended behaviour, not a bug.

## Links

- Skill: https://grov.fun/skill.md
- Full reference: https://grov.fun/llms-full.txt
- Docs: https://grov.fun/docs
- OpenAPI: https://grov.fun/openapi.json
