---
title: "Submit an AI tool for listing"
method: POST
path: "/api/submit"
tags: ["Tools"]
---

# Submit an AI tool for listing

`POST /api/submit`

## Request

- Base URL: `https://brofindai.com`
- URL: `https://brofindai.com/api/submit`
- Auth: HTTP bearer

Submit a new AI tool to the Bro Find AI directory. Requires authentication.

## Request body

- object
  - `name` string, required: Tool name
  - `url` string, uri, required: Tool website URL
  - `tagline` string: Short one-line tagline
  - `desc` string: Full description of the tool
  - `category` 'Writing & Content' | 'Coding & Dev Tools' | 'Image Generation' | 'Chatbots & Assistants' | 'SEO & Marketing' | 'Video' | 'Audio & Voice' | 'Business' | 'Research' | 'Data & Analytics' | 'Other', required: Tool category
  - `pricing` 'Free' | 'Freemium' | 'Paid', required: Pricing model
  - `logo` string, uri: Logo URL (optional)
  - `platform` string[]: Surfaces the tool runs on. Unrecognised values are dropped rather than rejected. If omitted or empty, platforms are inferred from the description at build time and flagged in meta_derived.
  - `api` boolean, nullable: Whether the tool exposes a public API. Tri-state: omit or send null for 'not stated'. Null is NOT the same as false.
  - `opensource` boolean, nullable: Whether the tool's source is publicly available. Tri-state: omit or send null for 'not stated'.
  - `tags` string[]: Keyword tags, lowercased and hyphenated on save. Max 12; extras are dropped. If omitted, tags are inferred from the category and description.

## Response `200`

Tool submitted successfully

- object
  - `id` string
  - `status` 'pending' | 'approved'

## Other responses

- `400`: Invalid request body
- `401`: Authentication required

---

[API](https://skmtc.dev/brofindai/apis/bro-find-ai-api.md) · [All operations](https://skmtc.dev/brofindai/apis/bro-find-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brofindai/apis/bro-find-ai-api/revisions/4e4078821728?raw)
