Create a store
POST /repos is the whole listing surface —
create and update are the same call, because re-listing IS the update.
curl -X POST https://gitbuyer.com/repos \
-H "content-type: application/json" \
-d '{"github_url": "https://github.com/you/your-repo",
"price_usd": "25.00",
"wallet_base": "0x…", // USDC on Base
"wallet_solana": "base58…", // and/or USDC on Solana
"github_pat": "github_pat_…", // private repos
"preview_paths": ["docs/", "examples/*.py"]}'
- github_url
- The repository. gitbuyer stores what GitHub says the canonical name is, so a pre-rename URL still lists correctly.
- price_usd
- The price of the complete clone. Default 20.00.
- wallet_base / wallet_solana
- Where the money goes, on-chain. Name both and the buyer picks the chain. Optional when your account has default wallets.
- github_pat
- Fine-grained, Contents read-only, this one repo. Required for private repos; on a live deployment it doubles as the ownership proof — nobody can list a repo they don’t control and collect its revenue.
- preview_paths
- Globs buyers may read free before paying (private repos; public repos preview everything — the bytes are public on GitHub already, what you sell is packaged agent-payable delivery). Default: README only.
Or connect GitHub — no key at all
The dashboard’s Connect GitHub button installs the
gitbuyer app on repos you choose. From then on those repos appear in
your dashboard one click from being stores, previews and delivery run
on a rotating token GitHub can revoke the moment you uninstall, and
POST /repos needs no github_pat for them —
the installation is both the credential and the ownership proof.
Pasting a PAT on a listing always wins over the installation: the more
explicit act decides.
Onboard while authenticated (Authorization: Bearer gb_…)
and the store lands in your account, manageable forever; anonymous
onboarding works but leaves the store frozen as listed. A claimed repo
cannot be re-listed by another account.
Every store under your GitHub name automatically joins your shopfront
at /r/<owner>, with your GitHub avatar on it.