Create a company
curl --request POST \
--url https://api.metal.ai/v1/companies \
--header 'Content-Type: application/json' \
--header 'x-metal-api-key: <api-key>' \
--header 'x-metal-client-id: <api-key>' \
--data '
{
"canonicalName": "Northwind Components",
"alternativeNames": [
"<string>"
],
"website": "https://northwind.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>",
"tags": [
"<string>"
],
"custom": {}
}
'import requests
url = "https://api.metal.ai/v1/companies"
payload = {
"canonicalName": "Northwind Components",
"alternativeNames": ["<string>"],
"website": "https://northwind.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>",
"tags": ["<string>"],
"custom": {}
}
headers = {
"x-metal-client-id": "<api-key>",
"x-metal-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-metal-client-id': '<api-key>',
'x-metal-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
canonicalName: 'Northwind Components',
alternativeNames: ['<string>'],
website: 'https://northwind.example',
description: '<string>',
shortDescription: '<string>',
sector: '<string>',
industry: '<string>',
location: {city: '<string>', state: '<string>', country: '<string>'},
externalId: '<string>',
tags: ['<string>'],
custom: {}
})
};
fetch('https://api.metal.ai/v1/companies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.metal.ai/v1/companies"
payload := strings.NewReader("{\n \"canonicalName\": \"Northwind Components\",\n \"alternativeNames\": [\n \"<string>\"\n ],\n \"website\": \"https://northwind.example\",\n \"description\": \"<string>\",\n \"shortDescription\": \"<string>\",\n \"sector\": \"<string>\",\n \"industry\": \"<string>\",\n \"location\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\"\n },\n \"externalId\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"custom\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-metal-client-id", "<api-key>")
req.Header.Add("x-metal-api-key", "<api-key>")
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))
}{
"data": {
"id": "665f1c2a9b1e4a0012a3b4c5",
"canonicalName": "Acme Industrials",
"alternativeNames": [
"<string>"
],
"website": "https://acme.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "Industrials",
"subsector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"companyType": "operating",
"externalId": "<string>",
"externalReference": {
"source": "<string>",
"id": "<string>"
},
"tags": [
"<string>"
],
"assignees": [
{
"id": "<string>",
"type": "<string>"
}
],
"custom": {},
"employeeCount": 450,
"ownershipStatus": "private",
"lastValuation": 123,
"lastRoundDate": "2023-12-25",
"lastAmountRaised": 123,
"totalMoneyRaised": 123,
"lastFinancials": {},
"enrichment": {
"subsector": [
{
"value": "Self-Funded Health Insurance / Third Party Administrator (TPA)",
"source": "CIM",
"confidence": 100,
"pinned": true,
"discoveredAt": "2026-02-14T10:00:00Z"
},
{
"value": "Third-Party Administrators (TPAs)",
"source": "Market Report",
"confidence": 57,
"pinned": false,
"discoveredAt": "2026-01-20T10:00:00Z"
}
]
},
"lastEnrichedAt": "2023-11-07T05:31:56Z",
"lastEnrichmentStartedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "Invalid request body"
}{
"error": "invalid api key or clientId"
}Create a company
Creates a company. Only canonicalName is required.
POST
/
v1
/
companies
Create a company
curl --request POST \
--url https://api.metal.ai/v1/companies \
--header 'Content-Type: application/json' \
--header 'x-metal-api-key: <api-key>' \
--header 'x-metal-client-id: <api-key>' \
--data '
{
"canonicalName": "Northwind Components",
"alternativeNames": [
"<string>"
],
"website": "https://northwind.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>",
"tags": [
"<string>"
],
"custom": {}
}
'import requests
url = "https://api.metal.ai/v1/companies"
payload = {
"canonicalName": "Northwind Components",
"alternativeNames": ["<string>"],
"website": "https://northwind.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"externalId": "<string>",
"tags": ["<string>"],
"custom": {}
}
headers = {
"x-metal-client-id": "<api-key>",
"x-metal-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-metal-client-id': '<api-key>',
'x-metal-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
canonicalName: 'Northwind Components',
alternativeNames: ['<string>'],
website: 'https://northwind.example',
description: '<string>',
shortDescription: '<string>',
sector: '<string>',
industry: '<string>',
location: {city: '<string>', state: '<string>', country: '<string>'},
externalId: '<string>',
tags: ['<string>'],
custom: {}
})
};
fetch('https://api.metal.ai/v1/companies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.metal.ai/v1/companies"
payload := strings.NewReader("{\n \"canonicalName\": \"Northwind Components\",\n \"alternativeNames\": [\n \"<string>\"\n ],\n \"website\": \"https://northwind.example\",\n \"description\": \"<string>\",\n \"shortDescription\": \"<string>\",\n \"sector\": \"<string>\",\n \"industry\": \"<string>\",\n \"location\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\"\n },\n \"externalId\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"custom\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-metal-client-id", "<api-key>")
req.Header.Add("x-metal-api-key", "<api-key>")
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))
}{
"data": {
"id": "665f1c2a9b1e4a0012a3b4c5",
"canonicalName": "Acme Industrials",
"alternativeNames": [
"<string>"
],
"website": "https://acme.example",
"description": "<string>",
"shortDescription": "<string>",
"sector": "Industrials",
"subsector": "<string>",
"industry": "<string>",
"location": {
"city": "<string>",
"state": "<string>",
"country": "<string>"
},
"companyType": "operating",
"externalId": "<string>",
"externalReference": {
"source": "<string>",
"id": "<string>"
},
"tags": [
"<string>"
],
"assignees": [
{
"id": "<string>",
"type": "<string>"
}
],
"custom": {},
"employeeCount": 450,
"ownershipStatus": "private",
"lastValuation": 123,
"lastRoundDate": "2023-12-25",
"lastAmountRaised": 123,
"totalMoneyRaised": 123,
"lastFinancials": {},
"enrichment": {
"subsector": [
{
"value": "Self-Funded Health Insurance / Third Party Administrator (TPA)",
"source": "CIM",
"confidence": 100,
"pinned": true,
"discoveredAt": "2026-02-14T10:00:00Z"
},
{
"value": "Third-Party Administrators (TPAs)",
"source": "Market Report",
"confidence": 57,
"pinned": false,
"discoveredAt": "2026-01-20T10:00:00Z"
}
]
},
"lastEnrichedAt": "2023-11-07T05:31:56Z",
"lastEnrichmentStartedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "Invalid request body"
}{
"error": "invalid api key or clientId"
}Authorizations
The Client ID of your API key.
The secret value of your API key.
Body
application/json
The company's primary name.
Example:
"Northwind Components"
Example:
"https://northwind.example"
Show child attributes
Show child attributes
Available options:
operating, investor, lender, investment_bank, advisor, sponsor, service_provider Your own identifier for reconciling with external systems.
Response
A company.
A company record. Many attributes are populated by enrichment: Metal gathers candidate values from your documents, data providers, and the web, then ranks and reconciles them into the single value shown here. See the Enrichment and Reconciliation & ranking guides. The enrichment field exposes the discovered values and citations behind each reconciled attribute.
Show child attributes
Show child attributes
Related topics
Working with companiesCreate a personCreate a dealCreate a workspaceCreate a screening⌘I

