Reference
Companies
Company pages your app manages on behalf of employers. API key only.
List managed companies
/v1/companiesLists the companies your app manages, newest first. Companies created by other apps, or by employers in the Tabbio app, are never returned.
Query parameters
| Field | Type | Description |
|---|---|---|
| page | integer | 1-based page number. Defaults to 1. |
| pageSize | integer | Items per page, 1 to 100. Defaults to 25. |
Response
These fields sit inside data.
| Field | Type | Description |
|---|---|---|
| idalways | string | The Tabbio company id. Use it on every job call. |
| namealways | string | Company name. |
| slugalways | string | The career page URL segment. Cannot be changed after create. |
| taglinealways | string or null | One line under the company name. |
| descriptionalways | string or null | The About paragraph. |
| locationalways | string or null | Head office, as city and country. |
| websitealways | string or null | Company website. |
| industryalways | string or null | Industry, as free text. |
| employeeCountalways | string or null | Size band, such as "51-200". |
| foundedalways | string or null | ISO-8601 date the company was founded, when it is on record. |
| logoalways | string or null | Logo image URL. |
| banneralways | string or null | Career page banner image URL. |
| publishedalways | boolean | Whether the career page is visible to candidates. |
| verifiedalways | boolean | True once Tabbio has verified the employer. |
| externalIdalways | string or null | Your own identifier, when the company was created with one. |
| createdAtalways | string | When the company page was created. |
| updatedAtalways | string | When it last changed. |
Status codes
- 200
One page of managed companies.
- 401
The API key is missing, expired, or revoked.
- 403
The API key is missing the companies:read scope.
curl https://server.tabbio.com/v1/companies \
-H "Authorization: Bearer $TABBIO_API_KEY"const response = await fetch(
"https://server.tabbio.com/v1/companies",
{
headers: {
Authorization: `Bearer ${process.env.TABBIO_API_KEY}`,
},
},
);
const payload = await response.json();import os
import requests
headers = {
"Authorization": f"Bearer {os.environ['TABBIO_API_KEY']}",
}
response = requests.get("https://server.tabbio.com/v1/companies", headers=headers)
response.raise_for_status()
payload = response.json(){
"data": [
{
"id": "com_7b31c4",
"name": "Northwind Logistics",
"slug": "northwind-logistics",
"tagline": "Cold chain across the Gulf",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"location": "Dubai, United Arab Emirates",
"website": "https://northwind.example",
"industry": "Logistics",
"employeeCount": "51-200",
"founded": "2015-06-01T00:00:00.000Z",
"logo": "https://cdn.tabbio.com/companies/northwind.png",
"banner": null,
"published": true,
"verified": false,
"externalId": "crm-4412",
"createdAt": "2026-08-12T07:41:22.000Z",
"updatedAt": "2026-08-28T11:05:09.000Z"
},
{
"id": "com_9a42e6",
"name": "Cedar Health Group",
"slug": "cedar-health-group",
"tagline": "Primary care across Abu Dhabi",
"description": "Cedar Health Group runs nine primary care clinics in Abu Dhabi and Al Ain, with 340 clinicians and support staff.",
"location": "Abu Dhabi, United Arab Emirates",
"website": "https://cedarhealth.example",
"industry": "Healthcare",
"employeeCount": "201-500",
"founded": null,
"logo": null,
"banner": null,
"published": true,
"verified": true,
"externalId": "crm-5108",
"createdAt": "2026-07-30T13:22:40.000Z",
"updatedAt": "2026-08-19T08:14:55.000Z"
}
],
"error": null,
"meta": {
"page": 1,
"pageSize": 25,
"total": 2,
"totalPages": 1
}
}Create a company
/v1/companiesCreates a Tabbio company page your app manages. Send your own identifier as externalId and the call becomes idempotent: repeating it returns the company you already created, with status 200 instead of 201. When slug is omitted Tabbio derives a unique career-page URL from the name.
Request body
Sent as application/json.
| Field | Type | Description |
|---|---|---|
| namerequired | string | |
| slug | string | |
| industryrequired | string | |
| employeeCountrequired | string | |
| locationrequired | string | |
| descriptionrequired | string | |
| website | string | |
| logo | string | |
| externalId | string | Your own identifier for this company. Makes creates idempotent. |
Response
These fields sit inside data.
| Field | Type | Description |
|---|---|---|
| idalways | string | The Tabbio company id. Use it on every job call. |
| namealways | string | Company name. |
| slugalways | string | The career page URL segment. Cannot be changed after create. |
| taglinealways | string or null | One line under the company name. |
| descriptionalways | string or null | The About paragraph. |
| locationalways | string or null | Head office, as city and country. |
| websitealways | string or null | Company website. |
| industryalways | string or null | Industry, as free text. |
| employeeCountalways | string or null | Size band, such as "51-200". |
| foundedalways | string or null | ISO-8601 date the company was founded, when it is on record. |
| logoalways | string or null | Logo image URL. |
| banneralways | string or null | Career page banner image URL. |
| publishedalways | boolean | Whether the career page is visible to candidates. |
| verifiedalways | boolean | True once Tabbio has verified the employer. |
| externalIdalways | string or null | Your own identifier, when the company was created with one. |
| createdAtalways | string | When the company page was created. |
| updatedAtalways | string | When it last changed. |
Status codes
- 200
A company with this externalId already existed.
- 201
The company was created.
- 400
The body failed validation.
- 401
The API key is missing, expired, or revoked.
- 403
The API key is missing the companies:write scope.
curl -X POST https://server.tabbio.com/v1/companies \
-H "Authorization: Bearer $TABBIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Northwind Logistics",
"industry": "Logistics",
"employeeCount": "51-200",
"location": "Dubai, United Arab Emirates",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"website": "https://northwind.example",
"externalId": "crm-4412"
}'const response = await fetch(
"https://server.tabbio.com/v1/companies",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TABBIO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Northwind Logistics",
"industry": "Logistics",
"employeeCount": "51-200",
"location": "Dubai, United Arab Emirates",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"website": "https://northwind.example",
"externalId": "crm-4412"
}),
},
);
const payload = await response.json();import os
import requests
headers = {
"Authorization": f"Bearer {os.environ['TABBIO_API_KEY']}",
}
body = {
"name": "Northwind Logistics",
"industry": "Logistics",
"employeeCount": "51-200",
"location": "Dubai, United Arab Emirates",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"website": "https://northwind.example",
"externalId": "crm-4412",
}
response = requests.post("https://server.tabbio.com/v1/companies", headers=headers, json=body)
response.raise_for_status()
payload = response.json(){
"data": {
"id": "com_7b31c4",
"name": "Northwind Logistics",
"slug": "northwind-logistics",
"tagline": "Cold chain across the Gulf",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"location": "Dubai, United Arab Emirates",
"website": "https://northwind.example",
"industry": "Logistics",
"employeeCount": "51-200",
"founded": "2015-06-01T00:00:00.000Z",
"logo": "https://cdn.tabbio.com/companies/northwind.png",
"banner": null,
"published": true,
"verified": false,
"externalId": "crm-4412",
"createdAt": "2026-08-12T07:41:22.000Z",
"updatedAt": "2026-08-28T11:05:09.000Z"
},
"error": null,
"meta": null
}Get a managed company
/v1/companies/{companyId}Reads one company page your app manages, including the externalId you created it with. A company another app manages, or one an employer created in the Tabbio app, answers 403 rather than 404: your key is valid, the company is simply not yours.
Path parameters
| Field | Type | Description |
|---|---|---|
| companyIdrequired | string | The Tabbio company id. |
Response
These fields sit inside data.
| Field | Type | Description |
|---|---|---|
| idalways | string | The Tabbio company id. Use it on every job call. |
| namealways | string | Company name. |
| slugalways | string | The career page URL segment. Cannot be changed after create. |
| taglinealways | string or null | One line under the company name. |
| descriptionalways | string or null | The About paragraph. |
| locationalways | string or null | Head office, as city and country. |
| websitealways | string or null | Company website. |
| industryalways | string or null | Industry, as free text. |
| employeeCountalways | string or null | Size band, such as "51-200". |
| foundedalways | string or null | ISO-8601 date the company was founded, when it is on record. |
| logoalways | string or null | Logo image URL. |
| banneralways | string or null | Career page banner image URL. |
| publishedalways | boolean | Whether the career page is visible to candidates. |
| verifiedalways | boolean | True once Tabbio has verified the employer. |
| externalIdalways | string or null | Your own identifier, when the company was created with one. |
| createdAtalways | string | When the company page was created. |
| updatedAtalways | string | When it last changed. |
Status codes
- 200
The company.
- 401
The API key is missing, expired, or revoked.
- 403
This company is not managed by your app.
curl https://server.tabbio.com/v1/companies/$COMPANY_ID \
-H "Authorization: Bearer $TABBIO_API_KEY"const response = await fetch(
`https://server.tabbio.com/v1/companies/${companyId}`,
{
headers: {
Authorization: `Bearer ${process.env.TABBIO_API_KEY}`,
},
},
);
const payload = await response.json();import os
import requests
headers = {
"Authorization": f"Bearer {os.environ['TABBIO_API_KEY']}",
}
response = requests.get(f"https://server.tabbio.com/v1/companies/{company_id}", headers=headers)
response.raise_for_status()
payload = response.json(){
"data": {
"id": "com_7b31c4",
"name": "Northwind Logistics",
"slug": "northwind-logistics",
"tagline": "Cold chain across the Gulf",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"location": "Dubai, United Arab Emirates",
"website": "https://northwind.example",
"industry": "Logistics",
"employeeCount": "51-200",
"founded": "2015-06-01T00:00:00.000Z",
"logo": "https://cdn.tabbio.com/companies/northwind.png",
"banner": null,
"published": true,
"verified": false,
"externalId": "crm-4412",
"createdAt": "2026-08-12T07:41:22.000Z",
"updatedAt": "2026-08-28T11:05:09.000Z"
},
"error": null,
"meta": null
}Update a managed company
/v1/companies/{companyId}Updates the fields you send and leaves the rest alone. The career-page URL cannot be changed here: it is a public handle other Tabbio surfaces link to.
Path parameters
| Field | Type | Description |
|---|---|---|
| companyIdrequired | string | The Tabbio company id. |
Request body
Sent as application/json.
| Field | Type | Description |
|---|---|---|
| name | string | |
| tagline | string | |
| description | string | |
| location | string | |
| website | string | |
| industry | string | |
| employeeCount | string | |
| logo | string | |
| socials | object | Public social links, keyed by platform. Send "" to remove one. |
| string | ||
| string | ||
| youtube | string | |
| string | ||
| tiktok | string | |
| x | string | |
| string |
Response
These fields sit inside data.
| Field | Type | Description |
|---|---|---|
| idalways | string | The Tabbio company id. Use it on every job call. |
| namealways | string | Company name. |
| slugalways | string | The career page URL segment. Cannot be changed after create. |
| taglinealways | string or null | One line under the company name. |
| descriptionalways | string or null | The About paragraph. |
| locationalways | string or null | Head office, as city and country. |
| websitealways | string or null | Company website. |
| industryalways | string or null | Industry, as free text. |
| employeeCountalways | string or null | Size band, such as "51-200". |
| foundedalways | string or null | ISO-8601 date the company was founded, when it is on record. |
| logoalways | string or null | Logo image URL. |
| banneralways | string or null | Career page banner image URL. |
| publishedalways | boolean | Whether the career page is visible to candidates. |
| verifiedalways | boolean | True once Tabbio has verified the employer. |
| externalIdalways | string or null | Your own identifier, when the company was created with one. |
| createdAtalways | string | When the company page was created. |
| updatedAtalways | string | When it last changed. |
Status codes
- 200
The updated company.
- 400
The body failed validation.
- 401
The API key is missing, expired, or revoked.
- 403
This company is not managed by your app.
curl -X PATCH https://server.tabbio.com/v1/companies/$COMPANY_ID \
-H "Authorization: Bearer $TABBIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tagline": "Cold chain across the Gulf",
"website": "https://northwind.example",
"socials": {
"linkedin": "https://www.linkedin.com/company/northwind-logistics"
}
}'const response = await fetch(
`https://server.tabbio.com/v1/companies/${companyId}`,
{
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.TABBIO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"tagline": "Cold chain across the Gulf",
"website": "https://northwind.example",
"socials": {
"linkedin": "https://www.linkedin.com/company/northwind-logistics"
}
}),
},
);
const payload = await response.json();import os
import requests
headers = {
"Authorization": f"Bearer {os.environ['TABBIO_API_KEY']}",
}
body = {
"tagline": "Cold chain across the Gulf",
"website": "https://northwind.example",
"socials": {
"linkedin": "https://www.linkedin.com/company/northwind-logistics",
},
}
response = requests.patch(f"https://server.tabbio.com/v1/companies/{company_id}", headers=headers, json=body)
response.raise_for_status()
payload = response.json(){
"data": {
"id": "com_7b31c4",
"name": "Northwind Logistics",
"slug": "northwind-logistics",
"tagline": "Cold chain across the Gulf",
"description": "Northwind Logistics moves temperature controlled freight across the Gulf, with a fleet of 120 vehicles and warehouses in Dubai and Riyadh.",
"location": "Dubai, United Arab Emirates",
"website": "https://northwind.example",
"industry": "Logistics",
"employeeCount": "51-200",
"founded": "2015-06-01T00:00:00.000Z",
"logo": "https://cdn.tabbio.com/companies/northwind.png",
"banner": null,
"published": true,
"verified": false,
"externalId": "crm-4412",
"createdAt": "2026-08-12T07:41:22.000Z",
"updatedAt": "2026-08-28T11:05:09.000Z"
},
"error": null,
"meta": null
}Base URL https://server.tabbio.com. Every response outside the token endpoint uses the { data, error, meta } envelope.