---
title: "Create Company"
method: POST
path: "/api/companies"
tags: ["companies"]
---

# Create Company

`POST /api/companies`

## Request

- Base URL: `https://api.ruzora.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ruzora.com/api/companies`
- Auth: HTTP bearer

Create a new company (founder only)

Order: DB first (source of truth) → Stripe → side effects.
If Stripe fails, company still exists — retry Stripe later.

## Request body

- CompanyCreate: Request model for creating a company
  - `company_name` string, required: Legal entity name
  - `domain` string, required: Company domain (e.g. acme.com)
  - `website` string, uri, nullable: Company website
  - `industry` string, nullable
  - `company_size` string, nullable
  - `billing_email` string, email, required: Invoice recipient email
  - `billing_address` string, nullable: Billing address
  - `signer_name` string, nullable: Contract signer full name
  - `signer_email` string, email, nullable: Contract signer email (defaults to billing_email)
  - `pricing_tier` string, nullable: Pricing tier
  - `service_type` string, nullable: staffing or factory
  - `first_project` FirstProjectCreate: Optional first project to create alongside the company
    - `title` string, required
    - `description` string, nullable
    - `tech_stack` string[], nullable
    - `seniority_level` string, nullable
    - `headcount` integer
    - `monthly_rate_min` integer, nullable
    - `monthly_rate_max` integer, nullable
    - `priority` string, nullable
    - `deadline` string, date, nullable
    - `location_preference` string, nullable
    - `budget` integer, nullable: Total budget for factory
    - `timeline` string, nullable: Delivery timeline for factory

## Response `201`

Successful Response

- CompanyResponse: Response model for company data
  - `id` string, required: Record ID
  - `company_name` string, required
  - `domain` string, required
  - `website` string, nullable
  - `industry` string, nullable
  - `company_size` string, nullable
  - `billing_email` string, required
  - `billing_address` string, required
  - `signer_name` string, nullable
  - `signer_email` string, nullable
  - `stripe_customer_id` string, nullable
  - `pricing_tier` string, required
  - `total_active_seats` integer
  - `status` string
  - `signed_date` string, date, nullable
  - `nps_score` integer, nullable
  - `slack_channel` string, nullable
  - `created_at` string, date-time, required
  - `last_activity` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api.md) · [All operations](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/revisions/f9b8223f3ac4?raw)
