API Documentation
Public REST API for InvestorMatch.Pro. Upload a pitch deck for AI analysis, retrieve job status, and fetch ranked investor matches. All endpoints are authenticated with a Bearer API key (im_live_… for production, im_test_… for test mode). The paid deck/campaign endpoints are credit-metered and rate-limited; the blog endpoint is a separate, admin-only, free, unmetered publishing channel.
Base URL: https://investormatch.pro/api/v1. A machine-readable OpenAPI 3 description is served at /openapi.json.
Quick start
- Get your API key — generate a test or live key from your account settings.
- Submit a pitch deck — upload a PDF or provide a URL to analyze.
- Get investor matches — retrieve AI-powered investor recommendations with fit scores.
Authentication
Every request carries a Bearer API key in the Authorization header. Keys prefixed im_live_ run against production and consume credits; keys prefixed im_test_ run in test mode so you can develop safely before going live.
Rate limits
- Free tier: 5 API calls per month.
- Paid tier: 60 requests per minute and 1,000 requests per day.
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Endpoints
Analysis
Paid deck-analysis endpoints. Usable by any valid API key. Credit-metered and rate-limited (60 req/min, 1,000 req/day on paid tier).
POST /api/v1/analyze— Submit a pitch deck for analysisGET /api/v1/jobs/{id}— Get job statusGET /api/v1/jobs/{id}/matches— Get ranked investor matches
Blog
Admin-only blog publishing. Requires an API key owned by an admin; any other valid key receives 403. Free, unmetered, and not rate-limited. The only programmatic blog action is creating a draft — listing, editing, and publishing happen in the admin dashboard, not via the API.
POST /api/v1/blog/posts— Create a blog post draft (admin-only)
Credits
Check your credit balance and free-quota usage, list purchasable bundles, and start a Stripe checkout to top up. Authenticated and rate-limited; these calls do not themselves consume analysis credits.
GET /api/v1/credits— Get credit balance and usageGET /api/v1/credits/bundles— List purchasable credit bundlesPOST /api/v1/credits/purchase— Start a credit purchase (Stripe Checkout)POST /api/v1/credits/webhook— Stripe payment webhook (internal)
API Keys
Programmatically create, list, and revoke your own API keys. Authenticated with an existing key and rate-limited; these calls do not consume analysis credits.
POST /api/v1/keys— Create a new API keyGET /api/v1/keys— List your API keysDELETE /api/v1/keys/{id}— Revoke an API key
Auto-Refill
Read and update your automatic credit top-up settings (threshold, amount, monthly cap, and saved payment method). Authenticated and rate-limited.
GET /api/v1/auto-refill— Get auto-refill settingsPUT /api/v1/auto-refill— Update auto-refill settings
Investors
Read-only access to the verified investor database — search firms and fetch a firm's partners and portfolio. Authenticated and rate-limited; does not consume analysis credits.
GET /api/v1/investors— Search the verified investor databaseGET /api/v1/investors/{id}— Get a single investor firmGET /api/v1/investors/{id}/partners— Get a firm's partnersGET /api/v1/investors/{id}/portfolio— Get a firm's portfolio
MCP server (AI assistants)
InvestorMatch runs a remote MCP (Model Context Protocol) server, so AI assistants such as Claude and ChatGPT can search the investor directory and read your campaigns, matches, outreach drafts and teardowns. Every tool is read-only: nothing spends credits, nothing sends email, and nothing changes your account.
Endpoints
POST https://investormatch.pro/mcp— signed in (OAuth or API key); all 11 tools.POST https://investormatch.pro/mcp/public— anonymous, no sign-in; the 4 public directory tools only.
Authentication
AI assistants: add https://investormatch.pro/mcp as a custom connector and sign in with your InvestorMatch account when prompted (OAuth). Manage or revoke connected assistants from your account settings.
Developers: send an API key as Authorization: Bearer im_live_…. A request to /mcp without a valid token gets 401 with a WWW-Authenticate header pointing at the OAuth metadata.
Public tools (both endpoints)
search_investors— Search the public VC directory by firm name, stage, sector and HQ location.get_investor— Get a firm's full public profile: thesis, check size, partners, portfolio and funds.list_investor_filters— List the stage, sector and location values search_investors accepts.search_fundraising_guides— Search InvestorMatch's published fundraising guides and articles.
Founder tools (signed in, /mcp only)
list_my_campaigns— List your fundraising campaigns with status, unlock state and match count.get_campaign— Get one campaign: status and the company profile extracted from your deck.list_matches— List a campaign's matched investors, best fit first, with fit score and reasons.get_match— Get the full detail of one match: why the firm fits and the partner to pitch.get_outreach_drafts— Get the pre-drafted cold emails and LinkedIn messages for a campaign's matches.list_my_teardowns— List your pitch-deck teardowns with status and readiness score.get_teardown— Get a teardown report: readiness score, critical issues and action plan.
MCP rate limits
- Anonymous: 30 requests per minute and 500 per day, per IP.
- Signed in: 120 requests per minute.
Examples
Add it to Claude Code:
claude mcp add --transport http investormatch https://investormatch.pro/mcp
Initialize a session against the public endpoint:
curl -X POST https://investormatch.pro/mcp/public \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'