---
title: "As empresas do catálogo"
method: GET
path: "/api/v1/companies"
tags: ["Catálogo"]
---

# As empresas do catálogo

`GET /api/v1/companies`

## Request

- Base URL: `https://rebasedev.com.br`
- URL: `https://rebasedev.com.br/api/v1/companies`
- Auth: HTTP bearer

As empresas com pelo menos uma vaga no catálogo, com o `slug` que o filtro `empresa` aceita e quantas vagas cada uma tem, da que tem mais pra que tem menos (nome desempata). Empresa sem vaga pública não aparece: pro catálogo ela não existe, e o filtro com o slug dela responde 422. Sem paginação. Pede token, então sai com `Cache-Control: private, no-store`: não passa por cache nenhum, nem da borda nem do navegador.

## Response `200`

Sucesso.

- CompanyListResponse
  - `data` Company[], required
    - `slug` string, required: O valor que o filtro `empresa` aceita. É o contrato.
    - `name` string, required
    - `website` string, nullable, required: O site da empresa, como a curadoria gravou. Nulo quando não há.
    - `total` integer, required: Quantas vagas da empresa estão no catálogo hoje.

## Other responses

- `401`: Sem token, ou token inválido ou revogado. `code` é `unauthorized`, e a resposta traz `WWW-Authenticate: Bearer`. Gere um token em `/vagas/perfil/agentes` (entrando com o LinkedIn) e mande em `Authorization: Bearer <token>`.
- `403`: O token é válido, mas a conta não tem acesso ao catálogo pela API. `code` é `forbidden`. Gerar outro token não resolve: é a conta que precisa de acesso.
- `429`: Mais de 60 chamadas no minuto, pela mesma conta (com token) ou pelo mesmo IP (sem). `code` é `rate_limited`. Espere o `Retry-After`; melhor ainda, leia o `X-RateLimit-Remaining` das respostas de sucesso e se autorregule antes de chegar aqui.

---

[API](https://skmtc.dev/rebasedev/apis/rebase-jobs-api.md) · [All operations](https://skmtc.dev/rebasedev/apis/rebase-jobs-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rebasedev/apis/rebase-jobs-api/revisions/ec4ed03ac794?raw)
