Programmatic Startup Submissions
The IndieTool REST API allows developers, solo founders, and SaaS automation pipelines to submit, showcase, and rank new software applications directly into the IndieTool directory.
Instant SEO Backlink
Permanent DR 35+ dofollow backlink created on submission.
Dual Upload Modes
Submit via remote Image URL or direct local binary multipart streams.
SHA-256 Auth
Bank-grade hashed API keys with instant revocation control.
Authentication
All requests to the IndieTool API require a valid API key prefixed with it_live_. You can generate and manage keys from your API Keys Dashboard.
Submit Application
Creates a new product listing on IndieTool. The API accepts both application/json (with remote image URLs) and multipart/form-data (with direct file binary uploads).
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| appName | string | Required | The public name of your startup or SaaS tool (2-100 chars). |
| appUrl | string (URL) | Required | Live website URL (e.g. https://myapp.com). |
| landingPageHeading | string | Required | Primary value proposition headline (3-150 chars). |
| landingPageSubHeading | string | Required | Short description or pitch explaining the product (5-500 chars). |
| category | string | Required | Category: Ai, Design, Productivity, Marketing, Fintech, etc. |
| imageUrl | string (URL) | Conditional | Public HTTPS URL to product logo/screenshot (Required if file is omitted). |
| file | File (Binary) | Conditional | Local image binary in multipart mode (PNG, JPG, WebP < 5MB). |
| creatorName | string | Optional | Founder or maker full name (e.g. "Sarah Solo"). |
| creatorSocialMediaLink | string (URL) | Optional | Founder's profile (e.g. https://x.com/sarahsolo). |
Code Examples
curl -X POST https://www.indietool.io/api/v1/apps/submit \
-H "Authorization: Bearer it_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"appName": "My AI Startup",
"appUrl": "https://mystartup.com",
"landingPageHeading": "AI-Powered SEO for Solo Founders",
"landingPageSubHeading": "Build, launch, and rank your SaaS automatically.",
"category": "Ai",
"imageUrl": "https://mystartup.com/logo.png",
"creatorName": "Sarah Solo",
"creatorSocialMediaLink": "https://x.com/sarahsolo"
}'Responses & Error Handling
{
"success": true,
"statusCode": 201,
"message": "App successfully submitted and featured on Indietool.",
"data": {
"appName": "My AI Startup",
"appUrl": "https://mystartup.com",
"domainSlug": "mystartup-com",
"indietoolUrl": "https://www.indietool.io/indietool/mystartup-com",
"category": "Ai",
"imageUrl": "https://indie-tool.s3.amazonaws.com/uploads/1785775...-app-logo.png",
"creatorName": "Sarah Solo",
"creatorImageUrl": "https://indie-tool.s3.amazonaws.com/uploads/...-creator.jpg",
"creatorSocialMediaLink": "https://x.com/sarahsolo"
}
}{
"success": false,
"statusCode": 409,
"error": "Insufficient credits. Please purchase credits at indietool.io to submit apps via API.",
"hint": "Purchase credits on https://www.indietool.io to continue submitting via API."
}| Status Code | Meaning | Description |
|---|---|---|
| 201 Created | Success | App successfully persisted, image uploaded to AWS S3, and public URL generated. |
| 400 Bad Request | Validation Error | Missing required fields, invalid domain URL, or SSRF protection trigger. |
| 401 Unauthorized | Authentication Failed | Missing or invalid API key in Authorization header. |
| 409 Conflict | Duplicate / Credits | Insufficient credits (0 balance) or domain slug already submitted. |
| 429 Rate Limit | Too Many Requests | Exceeded 60 requests/minute per IP window. |
Credits & Lifetime Rules
Lifetime Pass ("indietool-expert")
Lifetime pass holders can submit unlimited applications via the developer API without credit deductions or limits.
Submission Credits ("indietool-pro")
Each API submission uses 1 credit. If your credit balance reaches 0, further uploads are paused until more credits are added.
Enterprise-Grade Security
IndieTool implements rigorous safety standards across all public endpoints:
- SSRF Defense: Remote image URLs are strictly filtered against private IP ranges (127.0.0.1, 10.x, 192.168.x, localhost).
- Hashed API Keys: Keys are one-way hashed with SHA-256 in PostgreSQL. Even in the event of database dumps, raw keys are unrecoverable.
- CORS Enabled: Cross-origin resource sharing headers are pre-configured to allow integrations from any server or cloud runner.
Ready to integrate?
Generate your live developer API key in under 10 seconds.