Startup Rocket

x402-native founder intake

Send a paid founder intake directly into Startup Rocket.

Startup Rocket exposes a public x402 intake endpoint for founders and founder agents. A successful paid request creates a founder account, opens the standard claim flow, and lands the company inside the same structured workspace used by the main product.

Minimal curl flow

curl -i \
  -X POST \
  -H "Content-Type: application/json" \
  http://localhost:3000/api/v1/x402/intake_submissions.json \
  -d '{
    "intake_submission": {
      "founder_name": "Ada Lovelace",
      "founder_email": "ada@example.com",
      "startup_name": "Analytical Engines",
      "website_url": "https://analytical.example.com",
      "summary": "Evidence-backed tooling for technical founders."
    }
  }'

# Read the PAYMENT-REQUIRED header from the 402 response.
# Pay the challenge, then retry with:

curl -i \
  -X POST \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64-encoded payment payload>" \
  http://localhost:3000/api/v1/x402/intake_submissions.json \
  -d @payload.json

Node helper

const endpoint = "http://localhost:3000/api/v1/x402/intake_submissions.json";

const payload = {
  intake_submission: {
    founder_name: "Ada Lovelace",
    founder_email: "ada@example.com",
    startup_name: "Analytical Engines",
    website_url: "https://analytical.example.com",
    summary: "Evidence-backed tooling for technical founders."
  }
};

const challenge = await fetch(endpoint, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(payload)
});

if (challenge.status !== 402) throw new Error("Expected 402 challenge");

const paymentRequired = challenge.headers.get("payment-required");
// Pay the x402 challenge here with your client/facilitator.

const paid = await fetch(endpoint, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "PAYMENT-SIGNATURE": "<base64-encoded payment payload>"
  },
  body: JSON.stringify(payload)
});

console.log(await paid.json());

After a successful paid intake, the response includes founder_claim.path, which points to the standard Devise password-reset page for claiming the newly created founder account and continuing inside the founder workspace.