Skip to content

API reference

Every endpoint, object, field, status, event and error of the Krows v1 API.

14 min read6 chaptersFor foundersAdvancedUpdated Oct 17, 2026

Chapter 1Round

GET/v1/round

Your round in the key’s mode: status (not_started, open, succeeded, failed, in_referendum, closed), goal, raised, percentage, investors, tokens, price, dates, contract address and network.

{
  "object": "round",
  "mode": "live",
  "startup": { "name": "Aurora Solar", "slug": "aurora-solar" },
  "status": "open",
  "goal": 120000,
  "raised": 46800,
  "currency": "USDC",
  "percent_raised": 39,
  "investors": 90,
  "tokens": 120000,
  "token_price": 1,
  "start": "2026-10-03T00:00:00.000Z",
  "end": "2027-01-15T00:00:00.000Z",
  "contract": "9fQk…",
  "network": "mainnet"
}

Chapter 2Investments

GET/v1/investments

List of investments, newest first. limit and starting_after. Excludes pending and failed ones.

GET/v1/investments/:id

One investment.

Statuses: confirmed, claimed (tokens delivered), refunded, withdrawn. The investor only appears with alias and wallet: never their email.

{
  "object": "investment",
  "id": "inv_…",
  "mode": "live",
  "status": "confirmed",
  "amount": 250,
  "currency": "USDC",
  "tokens": 250,
  "investor": { "alias": "ana_investor", "wallet": "7xKX…gAsU" },
  "checkout_session": "cs_live_8Kd2…",
  "reference": "order-1234",
  "metadata": { "campaign": "autumn" },
  "transaction": "5hTq…",
  "created": "2026-10-17T10:03:12.000Z"
}

Chapter 3Checkout sessions

POST/v1/checkout/sessions

Creates a session. Fields below. Supports Idempotency-Key. Returns 201.

FieldDescription
amountnumber, optionalFixed amount in USDC (at least 1, up to 2 decimals, not above the goal). The investor cannot change it.
suggested_amountnumber, optionalProposed amount the investor can change. Use one or the other, not both.
emailstring, optionalPrefills the investor’s email on the page.
referencestring, optionalYour identifier (order, user…), up to 200 characters. Returned in the investment and webhooks.
metadataobject, optionalUp to 20 keys and 2,000 characters. Returned as-is, untranslated.
success_urlURL, optionalWhere the investor goes when done. We append sesion and inversion as query parameters.
cancel_urlURL, optional“Go back” button if the session expired or was already paid.
Idempotency-Keyheader, recommendedUp to 100 characters. Repeating the request with the same key returns the same session.
GET/v1/checkout/sessions/:id

Session status: open, complete or expired.

POST/v1/checkout/sessions/:id/expire

Expires an open session. 409 if it is not open.

{
  "object": "checkout.session",
  "id": "cs_live_8Kd2…",
  "mode": "live",
  "status": "open",
  "url": "https://checkout.krows.app/aurora-solar?s=cs_live_8Kd2…",
  "amount": 250,
  "amount_fixed": true,
  "email": "investor@email.com",
  "reference": "order-1234",
  "metadata": { "campaign": "autumn" },
  "success_url": "https://yoursite.com/thanks",
  "cancel_url": "https://yoursite.com/invest",
  "investment": null,
  "created": "2026-10-17T10:00:00.000Z",
  "expires_at": "2026-10-18T10:00:00.000Z",
  "completed_at": null
}

Chapter 4Events

GET/v1/events

Event history. type filters by type; limit and starting_after paginate.

GET/v1/events/:id

One event.

{
  "id": "evt_Qm3x…",
  "object": "event",
  "type": "investment.confirmed",
  "mode": "live",
  "created": "2026-10-17T10:03:13.000Z",
  "data": {
    "object": "investment",
    "id": "inv_…",
    "status": "confirmed",
    "amount": 250,
    "currency": "USDC",
    "tokens": 250,
    "investor": { "alias": "ana_investor", "wallet": "7xKX…gAsU" },
    "reference": "order-1234",
    "metadata": { "campaign": "autumn" },
    "transaction": "5hTq…"
  }
}
EventWhen
investment.confirmedSomeone invested
investment.withdrawnAn investor withdrew
checkout.session.completedAn API-created session completes
round.succeededThe round reaches 100%
round.failedThe round fails or is cancelled
tokens.deliveredAn investor receives tokens
refund.completedUSDC refunded to an investor
milestone.requestedYou request a milestone and a vote opens
milestone.approvedBackers approve a milestone and funds are released
milestone.rejectedBackers reject a milestone
report.deliveredYou deliver a report
referendum.openedA vote to close the startup opens
referendum.closedThe closing vote ends
free_withdrawal.requestedYou request a free withdrawal and the veto period starts
free_withdrawal.paidNobody vetoes it and the contract pays you
free_withdrawal.vetoedBackers veto it
test.pingTest event from the dashboard

Chapter 5Milestones and rewards

GET/v1/milestones

Milestones with number, title, description, amount, date, evidence and status (pending, voting, approved).

GET/v1/rewards

Rewards with title, description, min_tokens, milestone, date and whether physical.

Chapter 6Errors

{
  "error": {
    "type": "invalid_request_error",
    "code": "amount_invalid",
    "message": "amount must be a USDC number, at least 1, with up to 2 decimals."
  }
}
HTTP · codeMeaning
400 · invalid_jsonThe body is not JSON.
400 · amount_invalid / amount_too_largeInvalid amount or above the goal.
400 · email_invalid / url_invalid / metadata_invalidField with the wrong format.
401 · api_key_missing / api_key_invalidKey missing, malformed or rolled.
404 · resource_missing / route_missing / startup_missingNot found.
409 · session_not_openThe session is already complete or expired.
429 · rate_limitOver 100 requests per minute.
500 · internal_errorOur error. Retry with the same Idempotency-Key.
Was this helpful?