Skip to main content
Track which websites AI platforms cite when answering questions about your industry. Identify opportunities to get your content cited, and monitor which sources influence AI responses in your space.
See Entities for the complete Source object structure.

List Sources

Authorization
string
required
Bearer token. Example: Bearer qw-api-xxx
GET /api/v1/brands/{brandId}/sources

Path Parameters

brandId
string
required
The unique identifier of the brand

Query Parameters

period
number
default:"30"
Number of days to include
startDate
string
Start date (ISO 8601 format)
endDate
string
End date (ISO 8601 format)
provider
string
Filter by AI provider
type
string
Filter by source type: INSTITUTIONAL, COMMERCIAL, MEDIA, BLOG, etc.
topic
string
Filter by topic ID
tag
string
Filter by tag ID
limit
number
default:"50"
Maximum number of sources to return (max: 100)
offset
number
default:"0"
Number of results to skip for pagination
sort
string
default:"mentions"
Field to sort by: mentions, position, rate, domain
order
string
default:"desc"
Sort order: asc or desc

Response

success
boolean
Indicates if the request was successful
pagination
object
sources
array

Example Request

curl -X GET "https://qwairy.co/api/v1/brands/cm1234567890abcdef/sources?limit=10&offset=0" \
  -H "Authorization: Bearer qw-api-your-token-here"

Example Response

{
  "success": true,
  "pagination": {
    "total": 45,
    "count": 2,
    "limit": 10,
    "offset": 0
  },
  "sources": [
    {
      "id": "src1",
      "domain": "industry-news.com",
      "type": "MEDIA",
      "isSelf": false,
      "totalMentions": 102,
      "rate": 5.10,
      "avgPosition": 3.2
    },
    {
      "id": "src2",
      "domain": "mybrand.com",
      "type": "INSTITUTIONAL",
      "isSelf": true,
      "totalMentions": 45,
      "rate": 2.25,
      "avgPosition": 2.1
    }
  ]
}

Get Source Details

GET /api/v1/brands/{brandId}/sources/{sourceId}

Path Parameters

brandId
string
required
The unique identifier of the brand
sourceId
string
required
The unique identifier of the source

Query Parameters

period
number
default:"30"
Number of days to include
startDate
string
Start date (ISO 8601 format)
endDate
string
End date (ISO 8601 format)

Response

Returns detailed source information with breakdowns by provider and topic.

Example Response

{
  "success": true,
  "source": {
    "id": "src1",
    "domain": "industry-news.com",
    "type": "MEDIA",
    "status": "ACTIVE",
    "isSelf": false,
    "totalMentions": 102,
    "rate": 5.10,
    "avgPosition": 3.2,
    "byProvider": [
      { "provider": "ChatGPT", "mentions": 60, "avgPosition": 3.1 },
      { "provider": "Perplexity", "mentions": 42, "avgPosition": 3.4 }
    ],
    "byTopic": [
      { "topic": "Product Reviews", "mentions": 55, "avgPosition": 2.8 },
      { "topic": "Comparisons", "mentions": 30, "avgPosition": 3.5 }
    ]
  }
}

Get Source Evolution

Track how a source’s citation metrics change over time.
GET /api/v1/brands/{brandId}/sources/{sourceId}/evolution

Path Parameters

brandId
string
required
The unique identifier of the brand
sourceId
string
required
The unique identifier of the source

Query Parameters

period
number
default:"30"
Number of days to include
startDate
string
Start date (ISO 8601 format)
endDate
string
End date (ISO 8601 format)
provider
string
Filter by AI provider

Example Request

curl -X GET "https://qwairy.co/api/v1/brands/cm1234567890abcdef/sources/src1/evolution?period=7" \
  -H "Authorization: Bearer qw-api-your-token-here"

Example Response

{
  "success": true,
  "source": {
    "id": "src1",
    "domain": "industry-news.com",
    "isSelf": false
  },
  "evolution": [
    {
      "date": "2024-12-01",
      "mentions": 5,
      "avgPosition": 3.1
    },
    {
      "date": "2024-12-02",
      "mentions": 8,
      "avgPosition": 2.9
    }
  ]
}

Error Responses

StatusCodeDescription
401INVALID_TOKENAuthentication failed
404BRAND_NOT_FOUNDBrand doesn’t exist or not accessible
404SOURCE_NOT_FOUNDSource doesn’t exist