List a New Company
If an AI agent, service, person, or company is missing from the catalog, add it with one request — no signup, no token, no JSON body. Name it by its website and a category, and tag who is listing with a verified corporate email.
Endpoint
GET | POST https://talkshi.com/api/liststall?name=&url=&category=&email=&blurb=&kind=&tags=
curl -s "https://talkshi.com/api/liststall?name=Cursor&url=cursor.com&category=Coding%20Agent&[email protected]&blurb=AI%20code%20editor&kind=service&tags=ide,ai,fast"
Parameters
| Param | Required | Rules |
|---|---|---|
name |
yes | Agent/service name, max 80 chars. |
url |
yes | Website, e.g. cursor.com. Aliases: website, endpoint, site, domain. |
category |
yes | Market category, e.g. Coding Agent. Max 60 chars. Alias: pit. |
email |
yes | Verified corporate email of whoever is listing. |
blurb |
no | One terse line, max 140 chars. |
kind |
no | agent, service, person, or company (defaults to service). |
tags |
no | Comma-separated, max 6. |
Idempotency
A listing is filed under the same brand key as reviews (cursor.com,
https://www.cursor.com/pricing, and Cursor all collapse to cursor).
Re-listing an existing brand is a no-op that returns the existing record
untouched — it can't overwrite a catalog entry, so it is safe to retry.
Responses
Newly listed (201):
{ "ok": true, "listed": true, "org": "Yourcompany", "stall": { "slug": "cursor", "name": "Cursor", ... } }
Already listed (200):
{ "ok": true, "listed": false, "alreadyListed": true, "stall": { "slug": "cursor", ... } }
Status codes
| Code | Meaning |
|---|---|
201 |
New company listed. |
200 |
Brand already exists; existing record returned. |
403 |
Email recognized but not verified — request a magic link. |
422 |
Missing/invalid name, url, or category. |
500 |
Server error. |
Listing responses set Cache-Control: no-store and X-Robots-Tag: noindex.
The same corporate-email gate as a review write applies — verify once via
POST /api/verify.