Create Company
curl --request POST \
--url https://api.example.com/companies \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slug": "<string>",
"industry": "<string>",
"country": "<string>",
"timezone": "<string>",
"currency": "<string>",
"registration_number": "<string>",
"tax_id": "<string>",
"address": "<string>",
"phone": "<string>",
"logo_url": "<string>",
"status": "<string>",
"admin": {
"admin.email": "<string>",
"admin.password": "<string>",
"admin.first_name": "<string>",
"admin.last_name": "<string>",
"admin.phone": "<string>"
}
}
'import requests
url = "https://api.example.com/companies"
payload = {
"name": "<string>",
"slug": "<string>",
"industry": "<string>",
"country": "<string>",
"timezone": "<string>",
"currency": "<string>",
"registration_number": "<string>",
"tax_id": "<string>",
"address": "<string>",
"phone": "<string>",
"logo_url": "<string>",
"status": "<string>",
"admin": {
"admin.email": "<string>",
"admin.password": "<string>",
"admin.first_name": "<string>",
"admin.last_name": "<string>",
"admin.phone": "<string>"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
slug: '<string>',
industry: '<string>',
country: '<string>',
timezone: '<string>',
currency: '<string>',
registration_number: '<string>',
tax_id: '<string>',
address: '<string>',
phone: '<string>',
logo_url: '<string>',
status: '<string>',
admin: {
'admin.email': '<string>',
'admin.password': '<string>',
'admin.first_name': '<string>',
'admin.last_name': '<string>',
'admin.phone': '<string>'
}
})
};
fetch('https://api.example.com/companies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/companies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'slug' => '<string>',
'industry' => '<string>',
'country' => '<string>',
'timezone' => '<string>',
'currency' => '<string>',
'registration_number' => '<string>',
'tax_id' => '<string>',
'address' => '<string>',
'phone' => '<string>',
'logo_url' => '<string>',
'status' => '<string>',
'admin' => [
'admin.email' => '<string>',
'admin.password' => '<string>',
'admin.first_name' => '<string>',
'admin.last_name' => '<string>',
'admin.phone' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/companies"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"timezone\": \"<string>\",\n \"currency\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"address\": \"<string>\",\n \"phone\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"status\": \"<string>\",\n \"admin\": {\n \"admin.email\": \"<string>\",\n \"admin.password\": \"<string>\",\n \"admin.first_name\": \"<string>\",\n \"admin.last_name\": \"<string>\",\n \"admin.phone\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/companies")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"timezone\": \"<string>\",\n \"currency\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"address\": \"<string>\",\n \"phone\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"status\": \"<string>\",\n \"admin\": {\n \"admin.email\": \"<string>\",\n \"admin.password\": \"<string>\",\n \"admin.first_name\": \"<string>\",\n \"admin.last_name\": \"<string>\",\n \"admin.phone\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/companies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"timezone\": \"<string>\",\n \"currency\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"address\": \"<string>\",\n \"phone\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"status\": \"<string>\",\n \"admin\": {\n \"admin.email\": \"<string>\",\n \"admin.password\": \"<string>\",\n \"admin.first_name\": \"<string>\",\n \"admin.last_name\": \"<string>\",\n \"admin.phone\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"data.id": "<string>",
"data.name": "<string>",
"data.slug": "<string>",
"data.industry": "<string>",
"data.country": "<string>",
"data.timezone": "<string>",
"data.currency": "<string>",
"data.registration_number": "<string>",
"data.tax_id": "<string>",
"data.address": "<string>",
"data.phone": "<string>",
"data.logo_url": "<string>",
"data.status": "<string>",
"data.settings": {},
"data.created_at": "<string>",
"data.updated_at": "<string>"
}
}Companies
Create Company
POST
/
companies
Create Company
curl --request POST \
--url https://api.example.com/companies \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slug": "<string>",
"industry": "<string>",
"country": "<string>",
"timezone": "<string>",
"currency": "<string>",
"registration_number": "<string>",
"tax_id": "<string>",
"address": "<string>",
"phone": "<string>",
"logo_url": "<string>",
"status": "<string>",
"admin": {
"admin.email": "<string>",
"admin.password": "<string>",
"admin.first_name": "<string>",
"admin.last_name": "<string>",
"admin.phone": "<string>"
}
}
'import requests
url = "https://api.example.com/companies"
payload = {
"name": "<string>",
"slug": "<string>",
"industry": "<string>",
"country": "<string>",
"timezone": "<string>",
"currency": "<string>",
"registration_number": "<string>",
"tax_id": "<string>",
"address": "<string>",
"phone": "<string>",
"logo_url": "<string>",
"status": "<string>",
"admin": {
"admin.email": "<string>",
"admin.password": "<string>",
"admin.first_name": "<string>",
"admin.last_name": "<string>",
"admin.phone": "<string>"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
slug: '<string>',
industry: '<string>',
country: '<string>',
timezone: '<string>',
currency: '<string>',
registration_number: '<string>',
tax_id: '<string>',
address: '<string>',
phone: '<string>',
logo_url: '<string>',
status: '<string>',
admin: {
'admin.email': '<string>',
'admin.password': '<string>',
'admin.first_name': '<string>',
'admin.last_name': '<string>',
'admin.phone': '<string>'
}
})
};
fetch('https://api.example.com/companies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/companies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'slug' => '<string>',
'industry' => '<string>',
'country' => '<string>',
'timezone' => '<string>',
'currency' => '<string>',
'registration_number' => '<string>',
'tax_id' => '<string>',
'address' => '<string>',
'phone' => '<string>',
'logo_url' => '<string>',
'status' => '<string>',
'admin' => [
'admin.email' => '<string>',
'admin.password' => '<string>',
'admin.first_name' => '<string>',
'admin.last_name' => '<string>',
'admin.phone' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/companies"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"timezone\": \"<string>\",\n \"currency\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"address\": \"<string>\",\n \"phone\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"status\": \"<string>\",\n \"admin\": {\n \"admin.email\": \"<string>\",\n \"admin.password\": \"<string>\",\n \"admin.first_name\": \"<string>\",\n \"admin.last_name\": \"<string>\",\n \"admin.phone\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/companies")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"timezone\": \"<string>\",\n \"currency\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"address\": \"<string>\",\n \"phone\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"status\": \"<string>\",\n \"admin\": {\n \"admin.email\": \"<string>\",\n \"admin.password\": \"<string>\",\n \"admin.first_name\": \"<string>\",\n \"admin.last_name\": \"<string>\",\n \"admin.phone\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/companies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"industry\": \"<string>\",\n \"country\": \"<string>\",\n \"timezone\": \"<string>\",\n \"currency\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"address\": \"<string>\",\n \"phone\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"status\": \"<string>\",\n \"admin\": {\n \"admin.email\": \"<string>\",\n \"admin.password\": \"<string>\",\n \"admin.first_name\": \"<string>\",\n \"admin.last_name\": \"<string>\",\n \"admin.phone\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"data.id": "<string>",
"data.name": "<string>",
"data.slug": "<string>",
"data.industry": "<string>",
"data.country": "<string>",
"data.timezone": "<string>",
"data.currency": "<string>",
"data.registration_number": "<string>",
"data.tax_id": "<string>",
"data.address": "<string>",
"data.phone": "<string>",
"data.logo_url": "<string>",
"data.status": "<string>",
"data.settings": {},
"data.created_at": "<string>",
"data.updated_at": "<string>"
}
}Create a new company with an admin user. This endpoint creates both the company and its initial administrator account.
Request Body
string
required
Company name (2-255 characters)
string
required
Unique company identifier (2-255 characters)
string
Industry sector (max 100 characters)
string
Country location (max 100 characters)
string
Timezone identifier (max 50 characters)
string
Currency code (max 10 characters)
string
Business registration number (max 100 characters)
string
Tax identification number (max 100 characters)
string
Physical address
string
Contact phone number (max 100 characters)
string
URL to company logo
string
Company status. One of:
active, suspended, inactiveobject
required
Response
boolean
Indicates if the request was successful
object
The created company object
string
Company UUID
string
Company name
string
Company slug identifier
string
Industry sector
string
Country location
string
Timezone identifier
string
Currency code
string
Registration number
string
Tax identification
string
Physical address
string
Contact phone
string
Logo URL
string
Company status
object
Company settings (JSON)
string
Creation timestamp (ISO 8601)
string
Last update timestamp (ISO 8601)
Request Example
cURL
curl -X POST https://api.companyflow.com/companies \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corporation",
"slug": "acme-corp",
"industry": "Technology",
"country": "United States",
"timezone": "America/New_York",
"currency": "USD",
"registration_number": "123456789",
"tax_id": "98-7654321",
"address": "123 Main St, New York, NY 10001",
"phone": "+1-555-0100",
"status": "active",
"admin": {
"email": "admin@acme.com",
"password": "SecurePass123!",
"first_name": "John",
"last_name": "Doe",
"phone": "+1-555-0101"
}
}'
Response Example
201 Created
{
"success": true,
"data": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Corporation",
"slug": "acme-corp",
"industry": "Technology",
"country": "United States",
"timezone": "America/New_York",
"currency": "USD",
"registration_number": "123456789",
"tax_id": "98-7654321",
"address": "123 Main St, New York, NY 10001",
"phone": "+1-555-0100",
"logo_url": "",
"status": "active",
"settings": null,
"created_at": "2026-03-03T10:00:00Z",
"updated_at": "2026-03-03T10:00:00Z"
}
}
400 Bad Request
{
"success": false,
"message": "invalid request body"
}
400 Validation Error
{
"success": false,
"message": "name is required"
}
500 Internal Server Error
{
"success": false,
"message": "internal server error"
}
Error Responses
| Status Code | Description |
|---|---|
| 400 | Invalid request body or validation error |
| 500 | Internal server error |