For developers

Build on ZASH

Read public project and market data without an account. Create and manage your own project records with a scoped access token over REST. Use MCP and the CLI for their supported read tools.

REST API

The public endpoints below need no authentication and use GET. Base URL: https://zash.xyz/api/v1

EndpointWhat it returns
GET /projectsMarketplace listing, paginated (12/page). Filter by status, category, search and sort.
GET /projects/{id}Full project detail: metadata, milestones, 20 latest investments, live market fields.
GET /projects/by-address/{tokenAddress}Canonical lookup by TokenSale contract address. Same shape as /projects/{id}.
GET /projects/by-ticker/{ticker}Deprecated ticker lookup (tickers can collide), prefer by-address.
GET /projects/{id}/ohlcvOHLCV candles from trades. Timeframes from 1s to 1W, plus all (default 1h).
GET /projects/{id}/activityLatest 50 events: buys, sells and governance (votes, fund releases, proofs).
GET /projects/{id}/holdersTop 100 token holders with share %, role and lock flags.
GET /projects/{id}/commentsUp to 100 top-level comments with author identity and holdings badges.
GET /projects/{projectId}/milestonesAll milestones: tranches, deadlines, statuses, vote tallies, proof metadata.
curl
curl "https://zash.xyz/api/v1/projects?status=live_trading&sort=most-raised"
  • Big numbers arrive as decimal strings. Units depend on the field: project creation uses micro-USD; on-chain amounts use the payment token’s decimals. Do not assume every amount has 6 decimals.
  • Rate limit: 100 requests per minute per IP. Going over returns 429.

Create and manage projects

For apps, scripts and clients like ZASH Buddy. In Settings → Access Tokens, choose Read + manage projects when creating a token. This grants zash.read and zash.projects.write. Read only is the default; existing tokens are not upgraded. Replace a read-only token in your client with a newly created project-enabled token.

Send Authorization: Bearer <token> over HTTPS. Keep tokens in server-side environment variables or a secure local credential store, not public frontend code, source control, URLs or chat messages. Token creation and revocation require an interactive login.

1. Check your identity and permissions

bash
# Set ZASH_API_TOKEN securely in your environment first.
# Never commit it or include it in a URL.
curl --fail-with-body "https://zash.xyz/api/v1/me" \
  -H "Authorization: Bearer $ZASH_API_TOKEN"

The response includes walletAddress, scope and authMethod. Ownership comes from this account, never a wallet address supplied in your request body. All write routes below require zash.projects.write.

EndpointAction and limits
GET /meCheck the connected wallet, scope and authentication method. Read permission.
GET /drafts/meRead your saved form draft. Read permission; 404 if none exists.
POST /draftsSave your form draft: {"formState":{...}}. Not a project record yet.
DELETE /drafts/meDelete your saved form draft, not a project.
POST /projectsCreate an undeployed project owned by your connected wallet. Keep the returned id.
PATCH /projects/{id}Edit your project metadata, such as tagline, description, links, logo and team. Not financial terms or contract addresses.
POST /uploads/imageMultipart field file. JPEG, PNG, GIF, WebP or AVIF, max 8 MiB; returns url and path.
POST /projects/{projectId}/milestones/{milestoneIndex}/proof-uploadsCreator-only attachments. Multipart field files; max 5 files, 10 MiB each. Index starts at 0.
POST /projects/{projectId}/milestones/{milestoneIndex}/submit-proofCreator-only proof metadata: {"description":"...","attachments":[]}. Does not start voting.

2. Create a project record

Production accepts BNB Smart Chain (bsc). Choose paymentToken explicitly: USDC or USDT, subject to availability. Required fields are name, ticker, paymentToken, raiseTarget, raiseDeadline and 3–5 milestones. Amounts are integer micro-USD ($1 = 1,000,000), not raw on-chain token units. Milestone funding must total 85% of the raise: the first gets 10% of that escrow, the remaining 90% is split equally, with rounding in the last tranche. Milestone deadlines must be in the next 730 days. Dates use ISO 8601.

bash + node
# Example only: review all terms before creating a real project.
node - <<'JS' > project.json
const dateInDays = days => new Date(Date.now() + days * 86400000).toISOString();
console.log(JSON.stringify({
  name: "My project", ticker: "DEMO", chain: "bsc", paymentToken: "USDC",
  description: "Describe the product and what you will deliver.",
  raiseTarget: 1000000000, // $1,000 in micro-USD, not on-chain token wei
  raiseDeadline: dateInDays(30),
  milestones: [
    { name: "Prototype", description: "Deliver a working prototype", fundingAmount: 85000000, deadline: dateInDays(60) },
    { name: "Beta", description: "Deliver a testable beta", fundingAmount: 382500000, deadline: dateInDays(90) },
    { name: "Release", description: "Deliver the public release", fundingAmount: 382500000, deadline: dateInDays(120) }
  ]
}, null, 2));
JS

curl --fail-with-body -X POST "https://zash.xyz/api/v1/projects" \
  -H "Authorization: Bearer $ZASH_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @project.json

Save the returned project UUID for updates. A successful POST creates a real undeployed record; it does not launch contracts or make the project visible in the marketplace. Avoid blindly retrying a POST after a timeout: it may already have succeeded. Launching contracts is a separate admin-only step; founders cannot launch from this endpoint or a PAT.

3. Update your project metadata

bash
# Set PROJECT_ID to the id returned by POST /projects.
curl --fail-with-body -X PATCH "https://zash.xyz/api/v1/projects/$PROJECT_ID" \
  -H "Authorization: Bearer $ZASH_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"tagline":"A clearer description of our product"}'
  • No wallet authority: a PAT cannot deploy contracts, trade, vote, release funds, or sign transactions. The deployment endpoint is restricted to allowlisted admins using an interactive login, not founders or PATs.
  • Proof metadata is not an on-chain proof: uploading files or saving a description does not start a vote. The creator must complete the signed on-chain step separately.
  • REST writes only: these routes are not new MCP tools or CLI commands. A write-enabled token does not add write tools to those clients.
  • 401: missing, invalid, expired or revoked token. 403: missing permission, wrong owner, or an interactive-login-only action.
  • 400: invalid request; check the response message. 404: resource not found. 429: rate limited; back off before retrying.

Connect any AI platform (MCP)

One hosted remote MCP server, live and ready. Point any MCP-capable AI client at a single URL and it can browse ZASH projects, prices, holders and milestones on its own, nothing to install, no API key, no build step. Streamable HTTP transport.

Hosted endpoint

mcp endpoint
https://zash.xyz/mcp

list_projects

Compact marketplace list: id, name, ticker, status, raise + price summary.

get_project

Full project detail by id, ticker or contract address.

get_ohlcv

OHLCV candles in USDC, any timeframe.

get_activity

Latest buys, sells and governance events.

get_holders

Top 100 holders with share %, role and lock flags.

get_milestones

All milestones: tranches, deadlines, statuses, vote tallies.

get_comments

Latest top-level community comments.

Claude Code

bash
claude mcp add --transport http zash https://zash.xyz/mcp

Claude Desktop

Settings → Developer → Edit Config, then add the remote server:

json
{
  "mcpServers": {
    "zash": {
      "url": "https://zash.xyz/mcp"
    }
  }
}

On an older desktop build without native remote support, bridge it with mcp-remote instead:

bash
npx mcp-remote https://zash.xyz/mcp

ChatGPT / OpenAI

OpenAI's Agents / Responses API and ChatGPT Developer Mode connectors both support remote MCP servers, point them at the same https://zash.xyz/mcp endpoint. For a Custom GPT with no MCP at all, import the OpenAPI spec as a GPT Action instead:

openapi spec (gpt action)
https://zash.xyz/api/v1/openapi.json

OpenAI Codex CLI

Codex CLI speaks MCP over stdio, so the mcp-remote bridge connects it to the hosted URL, no install of ZASH code needed. Add this to ~/.codex/config.toml:

toml
# ~/.codex/config.toml
[mcp_servers.zash]
command = "npx"
args = ["-y", "mcp-remote", "https://zash.xyz/mcp"]

Cursor / Windsurf / other IDEs

The standard MCP JSON most clients accept, same url shape as Claude Desktop:

json
{
  "mcpServers": {
    "zash": {
      "url": "https://zash.xyz/mcp"
    }
  }
}

Self-host (optional)

The hosted URL above is the easy path, most people never need this. If you'd rather run the server against your own deployment, set the ZASH_API_URL environment variable to point at it. Source access on request, the repo is private; reach us at Support@zash.xyz.

CLI

Prices, charts and milestones straight in your terminal. Read-only, no API key. Needs Node.js 18 or newer.

Install

bash
git clone <repo-url> && cd zash-launchpad/cli
npm install
npm run build
npm link   # puts `zash` on your PATH
CommandWhat it does
zash projectsMarketplace listing, filter with --status, cap with --limit.
zash project <p>Full detail card: price, raise progress, milestones, contracts, links.
zash price <p>One-line price + 24h change.
zash chart <p>Braille price chart in your terminal (--tf for timeframe, --last for candles).
zash holders <p>Top token holders with share %, role and lock flags.
zash milestones <p>Milestone tranches, deadlines, statuses and vote tallies.
zash activity <p>Latest buys, sells and governance events.

<p> is any project, ticker (ZGEN), uuid, or 0x TokenSale address.

Example

output
$ zash price ZGEN
ZGEN  $0.00007309  ▼ -50.71% (24h)

Scripting

Every command takes --json and prints the raw API payload, ideal for piping into jq, scripts, or AI agents.

bash
zash price ZGEN --json | jq .currentPrice

Source code

The repository (API, MCP server, CLI and this site) is currently private. Source access on request, reach us at Support@zash.xyz.

ZASH is a non-custodial software platform, not a broker, exchange or investment adviser. Projects are created by third parties and are not vetted or endorsed by ZASH. Nothing on this site is financial, legal or tax advice. Tokens are speculative and can lose all their value; only commit funds you can afford to lose. Read the full disclaimer.

© 2026 ZASH, all rights reserved