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 schema
See the request body tables below or /platform/openapi.json for the machine-readable schema surface.
Response schema
Responses 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.
Idempotency
Use Idempotency-Key on retried writes when your client cannot guarantee whether a prior attempt succeeded.
Rate limits
See /rate-limits. Page intentionally through list endpoints and apply backoff on 429 responses.
Examples
curl, 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/companies
limit
fields
https://api.levcapital.com/api/external/v2/companies?limit=10

Overview

EndpointDescription
GET /companiesList companies with pagination
GET /companies/{id}Get a single company
POST /companiesCreate a new company
PATCH /companies/{id}Update a company

List Companies

GET/api/external/v2/companies
List companies in your account

Query parameters

ParameterTypeRequiredDescription
limitintegerOptionalResults per page (1–200, default 50)
cursorstringOptionalCursor for next page
fieldsstringOptionalComma-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

ParameterTypeRequiredDescription
company_idintegerRequiredThe 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/companies
Create a new company

Request body

ParameterTypeRequiredDescription
namestringRequiredCompany name (1–255 characters)
company_typestringRequiredCompany type: "lender" or "sponsor" (required)
websitestringOptionalCompany website URL
addressstringOptionalStreet address
citystringOptionalCity
statestringOptionalState
zipstringOptionalZIP code
org_idintegerOptionalLink to a global organization record
linkedin_urlstringOptionalLinkedIn 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

ParameterTypeRequiredDescription
company_idintegerRequiredThe 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

FieldTypeDescription
idintegerCompany identifier
namestring|nullCompany name
websitestring|nullWebsite URL
addressstring|nullStreet address
citystring|nullCity
statestring|nullState
zipstring|nullZIP code
org_idinteger|nullLinked global organization ID
owner_account_idinteger|nullOwning account ID
is_connectedbooleanWhether this is a connected company
linkedin_urlstring|nullLinkedIn URL
created_atstring|nullCreation timestamp
updated_atstring|nullLast update timestamp