---
title: "Register a vendor account (domain-verified work email) or request a new listing"
method: POST
path: "/api/v1/vendors/register"
tags: ["Vendor portal"]
---

# Register a vendor account (domain-verified work email) or request a new listing

`POST /api/v1/vendors/register`

## Request

- Base URL: `https://saaskly.com`
- URL: `https://saaskly.com/api/v1/vendors/register`
- Auth: none declared

The only public write endpoint. Anti-bot: ALTCHA proof-of-work challenge from `GET /api/v1/vendors/captcha`, a honeypot field, and per-IP limits. Creates the account in one transaction and sends a verification email; retries should reuse the same `Idempotency-Key`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `email` string, email, required: Work email on the provider’s own domain
  - `password` string, required
  - `name` string, required
  - `jobTitle` string
  - `company` string
  - `providerId` integer: A published provider you represent — or omit and fill `listingRequest` instead
  - `listingRequest` object
    - `name` string
    - `website` string, uri
    - `category` 'cloud-management' | 'email' | 'voip' | 'seo-geo-aeo' | 'social-media-management' | 'domain-names' | 'vpn' | 'crm' | 'content-creation' | 'vps-hosting' | 'password-managers' | 'accounting-software' | 'antivirus' | 'cms-website-builders' | 'gpu-compute'
    - `proposedCategory` string
    - `description` string
  - `altcha` string, required: Solved ALTCHA payload

## Response `201`

Created — verification email sent

- object
  - `ok` boolean
  - `listingRequested` boolean

## Other responses

- `400`: Error
- `403`: Error
- `409`: Duplicate listing or listing already in progress
- `422`: Idempotency-Key reused with a different body
- `429`: Too many requests — 300 per 60 s per client IP. Wait `Retry-After` seconds.

---

[API](https://skmtc.dev/saaskly/apis/saaskly-public-read-api.md) · [All operations](https://skmtc.dev/saaskly/apis/saaskly-public-read-api/llms.txt) · [OpenAPI document](https://skmtc.dev/saaskly/apis/saaskly-public-read-api/revisions/93e336357193?raw)
