---
title: "Resolve or create a company"
method: POST
path: "/companies/find-or-create"
tags: ["Companies"]
---

# Resolve or create a company

`POST /companies/find-or-create`

## Request

- Base URL: `https://api.cavuno.com/v1`
- URL: `https://api.cavuno.com/v1/companies/find-or-create`
- Auth: HTTP bearer

Resolves an existing company by website domain (and optionally by name), or creates a new one if no match is found. On creation, a logo is auto-fetched from `website` when available. Use `matchByName` to disable name fallback, or `createIfMissing` to disable creation. Useful for workflows that have a name and website but no company ID yet.

## Request body

- FindOrCreateCompanyBody
  - `name` string, required: The company's display name.
  - `website` string, nullable: Public company website URL. Used to resolve to an existing company by domain before falling back to creation. `null` or `""` means not set.
  - `summary` string, nullable: One-line summary of the company. Up to 280 characters. `null` or `""` means not set.
  - `matchByName` boolean: If `true` (default), falls back to matching by `name` when no website match is found. Set to `false` to match by website domain only.
  - `createIfMissing` boolean: If `true` (default), creates a new company when no match is found. Set to `false` to receive a `404 companies_not_found` response instead.

## Response `200`

Successful response. The `matched` field indicates whether the returned company already existed (`true`) or was newly created (`false`).

- object
  - `id` string, required: Unique identifier for the object. Use this value as the `{id}` path parameter for the company endpoints (e.g. `GET /v1/companies/{id}`).
  - `object` 'company', required: String representing the object's type. Objects of the same type share the same value.
  - `name` string, required: Display name of the company.
  - `slug` string, required: URL-friendly slug for the company.
  - `website` string, nullable, required: Public company website URL, or `null` if not set.
  - `logoUrl` string, nullable, required: URL of the company logo, or `null` if no logo is set.
  - `summary` string, nullable, required: One-line summary of the company, or `null` if not set.
  - `markets` string[], required: Canonical market slugs assigned to the company.
  - `xUrl` string, nullable, required: X (Twitter) profile URL, or `null` if not set.
  - `linkedinUrl` string, nullable, required: LinkedIn page URL, or `null` if not set.
  - `facebookUrl` string, nullable, required: Facebook page URL, or `null` if not set.
  - `instagramUrl` string, nullable, required: Instagram profile URL, or `null` if not set.
  - `createdAt` string, required: Time at which the company was created. ISO 8601 datetime.
  - `updatedAt` string, nullable, required: Time at which the company was last updated, or `null` if it has never been updated. ISO 8601 datetime.
  - `revision` integer, required: Public Company lifecycle revision. Historical rows may be 0 until rollout backfill.
  - `links` object, required: Public + admin URLs for this company. `public` may be `null` if the company lacks a slug.
    - `public` string, uri, nullable, required: Canonical public URL for this company on the board, or `null` when no slug is set.
    - `admin` string, uri, required: URL inside the Cavuno app where the authenticated owner can manage this resource.
  - `description` string, nullable, required: Long-form description of the company (HTML), or `null` if not set.
  - `canBackfill` boolean, nullable, required: Whether automated backfill of jobs from this company is supported, or `null` if not yet evaluated.
  - `jobCount` number, required: Total number of jobs at this company across all statuses.
  - `publishedJobCount` number, required: Number of currently-published jobs at this company.
  - `matched` boolean, required

## Other responses

- `404`: No company matched the supplied `name` or `website`, and `createIfMissing` was set to `false`.

## Changes

- **2026-10-19** `c34152c38176`: 1 info
  - added the optional property `error/upgrade` to the response with the `404` status

[Operation history](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/changes/companies/find-or-create/post.md)

---

[API](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api.md) · [All operations](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/revisions/d5974dabff14?raw)
