Query Content Requests

POST body variant of the content requests list, for large identifier lists.

POST/api/v2/content-requests/query

POST body alternative to GET /api/v2/content-requests. Accepts the same filters as native JSON arrays. Use this variant when your identifier arrays are large (more than a few values for company_domain, company_linkedin_handle, or company_linkedin_url). For small queries, prefer the GET endpoint.

Request body

FieldTypeDescription
pageintegerPage number (default 1).
page_sizeintegerNumber of items per page (default 25).
date_fromstringISO 8601 timestamp. Include requests created at or after this date.
date_tostringISO 8601 timestamp. Include requests created at or before this date.
typestringFilter by request type. Valid values: account_mapping, top_account_content.
stagestring[]Filter by stage. Native JSON array. Defaults to all stages except completed.
company_idintegerFilter by company numeric SQL id. Takes priority over all human-identifier fields.
company_domainstring[]Filter by company domain(s). Native JSON array. Maximum 100 values.
company_linkedin_handlestring[]Filter by company LinkedIn handle(s). Native JSON array. Maximum 100 values.
company_linkedin_urlstring[]Filter by company LinkedIn URL(s). Native JSON array. Maximum 100 values.

Example request

curl -X POST "https://api.getsillage.com/api/v2/content-requests/query" \
  -H "Authorization: Bearer $SILLAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":1,"page_size":10,"type":"account_mapping","company_domain":["acme.com","example.com"]}'
const response = await fetch('https://api.getsillage.com/api/v2/content-requests/query', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    page: 1,
    page_size: 10,
    type: 'account_mapping',
    company_domain: ['acme.com', 'example.com'],
  }),
})

const result = await response.json()
import { request } from 'node:https'

const body = JSON.stringify({
  page: 1,
  page_size: 10,
  type: 'account_mapping',
  company_domain: ['acme.com', 'example.com'],
})

const req = request(
  new URL('https://api.getsillage.com/api/v2/content-requests/query'),
  {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`,
      'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(body),
    },
  },
  (res) => {
    let data = ''
    res.on('data', (chunk) => {
      data += chunk
    })
    res.on('end', () => {
      console.log(JSON.parse(data))
    })
  },
)

req.write(body)
req.end()
import os
import requests

response = requests.post(
    "https://api.getsillage.com/api/v2/content-requests/query",
    json={
        "page": 1,
        "page_size": 10,
        "type": "account_mapping",
        "company_domain": ["acme.com", "example.com"],
    },
    headers={"Authorization": f"Bearer {os.environ['SILLAGE_API_KEY']}"},
    timeout=30,
)
response.raise_for_status()
result = response.json()

Example response

{
  "data": [
    {
      "id": 43821,
      "type": "account_mapping",
      "stage": "account_mapping_in_progress",
      "created_at": "2026-06-12T08:30:00.000Z",
      "updated_at": "2026-06-12T09:10:00.000Z",
      "company": {
        "id": 8421,
        "name": "Acme",
        "domain": "acme.com",
        "linkedin_url": "https://www.linkedin.com/company/acme"
      },
      "inputs": {}
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "page_size": 10,
      "page_count": 3,
      "total": 28
    },
    "resolved_companies": [
      {
        "company_id": 8421,
        "matched_by": "domain",
        "identifier": "acme.com"
      },
      {
        "company_id": 9103,
        "matched_by": "domain",
        "identifier": "example.com"
      }
    ]
  }
}

meta.resolved_companies

Present on all list responses (GET and POST). Contains one entry per company matched from a company filter (company_id, company_domain, company_linkedin_handle, or company_linkedin_url).

FieldTypeDescription
company_idintegerNumeric SQL id of the matched company.
matched_bystringWhich identifier tier produced this match. One of: company_id, linkedin_handle, linkedin_url, domain.
identifierstringThe original identifier value supplied by the caller (domain, handle, URL, or numeric id echoed as a string).

All entries share the same matched_by value for a given response. When no company filter is supplied, resolved_companies is an empty array.

On this page