🚀 LaunchPad.ai — API Docs

Backend REST API — Built with Node.js, Express, PostgreSQL & Prisma

Base URL: https://launchpad-backend-production-ed66.up.railway.app/api

🔐 Authentication

POST/auth/registerPublic

Register a new user

Request Body

{
  "name": "Test Founder",
  "email": "founder@test.com",
  "password": "password123",
  "role": "FOUNDER"
}

Response

{
  "id": "uuid",
  "name": "Test Founder",
  "token": "eyJhbGci..."
}
POST/auth/loginPublic

Login and receive JWT token

Request Body

{
  "email": "founder@test.com",
  "password": "password123"
}

Response

{
  "id": "uuid",
  "token": "eyJhbGci..."
}
GET/auth/meToken Required

Get current logged in user

Header

Authorization: Bearer eyJhbGci...

📁 Projects

POST/projectsToken Required

Create a new project (Founders only)

Request Body

{
  "title": "LaunchPad AI",
  "problem_statement": "Founders struggle to get funding",
  "tech_stack": ["React", "Node.js"],
  "modules": ["Auth", "Marketplace"],
  "funding_ask": 50000,
  "equity_offered": 10
}
GET/projectsPublic

Get all published projects. Optional filters: ?min_funding=&max_funding=&status=

GET/projects/:idPublic

Get single project with founder details, investments and AI due diligence report

PATCH/projects/:idToken Required

Update a project (owner only)

POST/projects/:id/publishToken Required

Publish project to marketplace (owner only). No body needed.

🤖 AI Service Ollama llama3.2:1b

POST/ai/intakeToken Required

Multi-turn AI interview bot that collects 6 startup data points one question at a time: Problem, Market, Features, Revenue Model, Funding Ask, Equity Offered. When all 6 are collected the response status becomes "complete".

Request Body

{
  "session_id": "uuid",
  "project_id": "uuid",
  "message": "We help small businesses manage invoices"
}

Response — continue

{
  "status": "continue",
  "question": "Who is your target market?",
  "session_id": "uuid"
}

Response — complete

{
  "status": "complete",
  "question": null,
  "session_id": "uuid"
}
POST/ai/generateToken Required

Reads the full intake conversation history and extracts a structured startup profile as JSON. Automatically updates the project record in the database.

Request Body

{
  "session_id": "uuid",
  "project_id": "uuid"
}

Response

{
  "profile": {
    "title": "InvoiceAI",
    "problem_statement": "SMBs struggle with invoicing",
    "target_market": "Small businesses",
    "core_features": ["Auto invoicing", "Payment tracking"],
    "revenue_model": "SaaS subscription",
    "funding_ask": 50000,
    "equity_offered": 10
  }
}
POST/ai/analyseToken Required

Runs a full VC due diligence simulation on a startup pitch using Ollama AI. Returns a feasibility score, ROI projection, risks, strengths and investment recommendation. Results are cached per investor — pass force: true to regenerate.

Request Body

{
  "project_id": "uuid",
  "title": "InvoiceAI",
  "problem_statement": "SMBs struggle with invoicing",
  "target_market": "Small businesses",
  "revenue_model": "SaaS subscription",
  "funding_ask": 50000,
  "equity_offered": 10,
  "force": false
}

Response

{
  "analysis": {
    "feasibility_score": 8,
    "roi_estimate": {
      "best_case": "3x return in 18 months",
      "expected_case": "2x return in 24 months",
      "worst_case": "Break even in 36 months"
    },
    "risks": [
      { "risk": "High competition from established players", "severity": "High" },
      { "risk": "Slow enterprise sales cycle", "severity": "Medium" }
    ],
    "strengths": [
      "Clear problem and target market",
      "Scalable SaaS revenue model"
    ],
    "recommendation": "Invest",
    "summary": "Strong fundamentals with clear market fit."
  }
}

💰 Investments

POST/investmentsToken Required

Make an investment offer (Investors only)

Request Body

{
  "project_id": "uuid",
  "amount": 10000,
  "equity_taken": 2
}
GET/investments/project/:projectIdToken Required

Get all investments on a project

GET/investments/myToken Required

Get my investments as an investor

PATCH/investments/:id/statusToken Required

Confirm or reject investment (Founder only)

Request Body

{
  "status": "CONFIRMED"
}

💬 Messages

POST/messagesToken Required

Send a message

Request Body

{
  "receiver_id": "uuid",
  "project_id": "uuid",
  "content": "Hey! Interested in your project."
}
GET/messages/:threadIdToken Required

Get message thread. Format: projectId_userId1_userId2

PATCH/messages/:id/readToken Required

Mark message as read (receiver only)

👤 Users

GET/users/:idPublic

Get public profile with published projects

PATCH/users/meToken Required

Update own profile

Request Body

{
  "bio": "Serial entrepreneur",
  "github_url": "https://github.com/username"
}
POST/users/me/portfolioToken Required

Add portfolio item

Request Body

{
  "title": "Previous Startup",
  "description": "Built a SaaS tool",
  "outcome": "EXIT",
  "year": 2023
}
GET/users/:id/portfolioPublic

Get portfolio items of any user