Integration Summary
When to use- Create, read, and update CRM companies.
- Use the read and write examples together so you can validate state before you mutate it.
Required scopes- Access is inherited from the connected user or JWT session.
- Inspect GET /me or the validate-api-key response to confirm the scopes available to the current token.
Headers- Authorization: Bearer <token>
- X-Origin-App: <client-name>
- Content-Type: application/json on write operations
Request schemaSee the request body tables below or /platform/openapi.json for the machine-readable schema surface.
Response schemaResponses use the standard request_id/timestamp/data envelope. This page documents these object schemas: Company Object.
Enums & values- Enum-like values and filter operators are documented inline on the page where available.
- When a value set is account- or tier-dependent, validate against live responses before hard-coding assumptions.
IdempotencyUse Idempotency-Key on retried writes when your client cannot guarantee whether a prior attempt succeeded.
Rate limitsSee /rate-limits. Page intentionally through list endpoints and apply backoff on 429 responses.
Examplescurl, TypeScript, Python
Starter example: GET /api/external/v2/companies
bash
curl -X GET "https://api.levcapital.com/api/external/v2/companies" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Origin-App: my-integration"Companies
Last updated: March 2026
Companies are private CRM records representing lender or sponsor organizations in your account. They're linked to the global organization directory and serve as the parent entity for contacts.
Connect your API key to explore
Stored in your browser session only. Never sent to our docs server.
GET
/api/external/v2/companieslimitfieldshttps://api.levcapital.com/api/external/v2/companies?limit=10Overview
| Endpoint | Description |
|---|---|
GET /companies | List companies with pagination |
GET /companies/{id} | Get a single company |
POST /companies | Create a new company |
PATCH /companies/{id} | Update a company |
List Companies
GET
/api/external/v2/companiesList companies in your account
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | Optional | Results per page (1–200, default 50) |
cursor | string | Optional | Cursor for next page |
fields | string | Optional | Comma-separated fields to include |
Response (200):
json
{
"request_id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"timestamp": "2026-03-20T15:30:45Z",
"data": [
{
"id": 12,
"name": "Meridian Capital Group",
"website": "https://meridiancapital.com",
"address": "1 Battery Park Plaza",
"city": "New York",
"state": "NY",
"zip": "10004",
"org_id": 4521,
"linkedin_url": "https://linkedin.com/company/meridian-capital",
"is_connected": true,
"owner_account_id": 56,
"created_at": "2025-08-12T09:00:00Z",
"updated_at": "2026-02-15T14:30:00Z"
}
],
"pagination": {
"total": 34,
"limit": 50,
"has_more": false,
"next_cursor": null
}
}Error responses
401unauthorized
When: Missing or invalid Authorization header
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 401,
"type": "unauthorized",
"message": "Authentication required",
"details": {}
}
}400bad_request
When: Both cursor and sort params provided
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 400,
"type": "bad_request",
"message": "cursor and sort cannot be combined; use offset pagination when sorting",
"details": {}
}
}Get Company
GET
/api/external/v2/companies/{company_id}Get a single company by ID
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
company_id | integer | Required | The company ID |
Response (200):
json
{
"request_id": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 12,
"name": "Meridian Capital Group",
"website": "https://meridiancapital.com",
"address": "1 Battery Park Plaza",
"city": "New York",
"state": "NY",
"zip": "10004",
"org_id": 4521,
"linkedin_url": "https://linkedin.com/company/meridian-capital",
"is_connected": true,
"owner_account_id": 56,
"created_at": "2025-08-12T09:00:00Z",
"updated_at": "2026-02-15T14:30:00Z"
}
}Error responses
401unauthorized
When: Missing or invalid Authorization header
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 401,
"type": "unauthorized",
"message": "Authentication required",
"details": {}
}
}404not_found
When: The ID doesn't exist or isn't accessible to the authenticated user
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 404,
"type": "not_found",
"message": "Company not found",
"details": {}
}
}Create Company
POST
/api/external/v2/companiesCreate a new company
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Required | Company name (1–255 characters) |
company_type | string | Required | Company type: "lender" or "sponsor" (required) |
website | string | Optional | Company website URL |
address | string | Optional | Street address |
city | string | Optional | City |
state | string | Optional | State |
zip | string | Optional | ZIP code |
org_id | integer | Optional | Link to a global organization record |
linkedin_url | string | Optional | LinkedIn URL |
Response (201):
json
{
"request_id": "f6a7b8c9-d0e1-2345-f012-456789012345",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 45,
"name": "Eastdil Secured",
"website": "https://eastdilsecured.com",
"address": "40 West 57th Street",
"city": "New York",
"state": "NY",
"zip": "10019",
"org_id": null,
"linkedin_url": "https://linkedin.com/company/eastdil-secured",
"is_connected": false,
"owner_account_id": 56,
"created_at": "2026-03-20T15:30:45Z",
"updated_at": "2026-03-20T15:30:45Z"
}
}Error responses
401unauthorized
When: Missing or invalid Authorization header
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 401,
"type": "unauthorized",
"message": "Authentication required",
"details": {}
}
}403forbidden
When: The user's role doesn't have CREATE permission
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 403,
"type": "forbidden",
"message": "User not authorized to create company",
"details": {}
}
}422validation_error
When: Missing required name field
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 422,
"type": "validation_error",
"message": "name is required",
"details": {}
}
}422validation_error
When: Missing required company_type field
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 422,
"type": "validation_error",
"message": "company_type is required",
"details": {}
}
}Update Company
PATCH
/api/external/v2/companies/{company_id}Update a company
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
company_id | integer | Required | The company ID |
All request body fields are optional.
Response (200):
json
{
"request_id": "a7b8c9d0-e1f2-3456-0123-567890123456",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 12,
"name": "Meridian Capital Group",
"website": "https://meridiancapital.com",
"address": "1 Battery Park Plaza, Suite 800",
"city": "New York",
"state": "NY",
"zip": "10004",
"org_id": 4521,
"linkedin_url": "https://linkedin.com/company/meridian-capital",
"is_connected": true,
"owner_account_id": 56,
"created_at": "2025-08-12T09:00:00Z",
"updated_at": "2026-03-20T15:30:45Z"
}
}Error responses
401unauthorized
When: Missing or invalid Authorization header
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 401,
"type": "unauthorized",
"message": "Authentication required",
"details": {}
}
}404not_found
When: The ID doesn't exist or isn't accessible to the authenticated user
{
"request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"error": {
"status": 404,
"type": "not_found",
"message": "Company not found",
"details": {}
}
}Company Object
| Field | Type | Description |
|---|---|---|
id | integer | Company identifier |
name | string|null | Company name |
website | string|null | Website URL |
address | string|null | Street address |
city | string|null | City |
state | string|null | State |
zip | string|null | ZIP code |
org_id | integer|null | Linked global organization ID |
owner_account_id | integer|null | Owning account ID |
is_connected | boolean | Whether this is a connected company |
linkedin_url | string|null | LinkedIn URL |
created_at | string|null | Creation timestamp |
updated_at | string|null | Last update timestamp |