Troubleshooting
This page covers common issues encountered when working with the Lumar GraphQL API and how to diagnose them.
401 Unauthorized
Symptom: Every request returns HTTP 401 or an UNAUTHENTICATED error.
Diagnosis: Verify your authentication is working by running a simple me query:
- Query
- Response
- cURL
query CheckMyPermissions {
me {
id
username
accounts(first: 5) {
nodes {
id
name
}
}
}
}
{
"data": {
"me": {
"id": "TjAwNFVzZXI4NjE",
"username": "your.username@example.com",
"accounts": {
"nodes": [
{
"id": "TjAwN0FjY291bnQ3MTU",
"name": "Your Account Name"
}
]
}
}
}
}
curl -X POST -H "Content-Type: application/json" -H "apollographql-client-name: docs-example-client" -H "apollographql-client-version: 1.0.0" -H "x-auth-token: YOUR_API_SESSION_TOKEN" --data '{"query":"query CheckMyPermissions { me { id username accounts(first: 5) { nodes { id name } } } }"}' https://api.lumar.io/graphql
Common causes:
- The
x-auth-tokenheader is missing or misspelt. - The session token has expired. Re-authenticate using
createSessionUsingUserKey. - The user key or service account key has been revoked.
Empty results
Symptom: A query returns an empty nodes array when you expect data.
Common causes:
- The crawl has not finished yet. Check the crawl status:
- Query
- Variables
- Response
- cURL
query VerifyCrawlStatus($crawlId: ObjectID!) {
getCrawl(id: $crawlId) {
id
status
createdAt
finishedAt
crawlUrlsTotal
crawlLevels
}
}
{
"crawlId": "TjAwNUNyYXdsMTU4MzI0NQ"
}
{
"data": {
"getCrawl": {
"id": "TjAwNUNyYXdsMTU4MzI0NQ",
"status": "Finished",
"createdAt": "2025-01-15T10:00:00.000Z",
"finishedAt": "2025-01-15T10:30:00.000Z",
"crawlUrlsTotal": 2186,
"crawlLevels": 5
}
}
}
curl -X POST -H "Content-Type: application/json" -H "apollographql-client-name: docs-example-client" -H "apollographql-client-version: 1.0.0" -H "x-auth-token: YOUR_API_SESSION_TOKEN" --data '{"query":"query VerifyCrawlStatus($crawlId: ObjectID!) { getCrawl(id: $crawlId) { id status createdAt finishedAt crawlUrlsTotal crawlLevels } }","variables":{"crawlId":"TjAwNUNyYXdsMTU4MzI0NQ"}}' https://api.lumar.io/graphql
- You are querying a report template that has no matching URLs for this crawl.
- A filter is too restrictive. Remove filters temporarily to confirm data exists, then add them back incrementally.
- You are querying the wrong account or project. Verify the ID using the
mequery above.
Rate limit errors (429)
Symptom: Requests fail with HTTP 429 Too Many Requests.
Solution:
- Reduce request frequency to stay under the 6000 requests / 5-minute limit.
- Implement exponential backoff (see Error Handling).
- Combine multiple small queries into a single larger query where possible.
Crawl stuck in Queued or Crawling status
Symptom: A crawl never reaches Finished status.
Common causes:
- The site is very large and the crawl is still in progress. Use the crawl status query above to check
crawlUrlsTotalfor progress. - The crawl hit an error and moved to an error state. Check the
statusfield -- if it showsPausedor an unexpected state, the crawl may need attention. - Rate limiting on the target site is slowing the crawl. Check your project's crawl rate settings.
Missing webhook notifications
Symptom: Webhooks are configured but no notifications are received.
Checklist:
- Verify the webhook exists on the test suite (query the
webhooksorslackWebhooksconnection on the test suite). - Confirm the
alertTypesinclude the relevant alert level (e.g.,Fail). - Check that the webhook URL is accessible from the internet and returns a 2xx response.
- For Slack webhooks, verify the incoming webhook URL is still active in your Slack workspace settings.
- Ensure a build has actually completed -- webhooks fire only when a build finishes.
Query validation errors
Symptom: The API returns a 400 status with syntax or validation errors.
Common causes:
- A required variable is missing. Check the query signature for required (
!) parameters. - An enum value is incorrect (e.g., using
"Finished"as a string instead of the enumFinished). - The query references a field that does not exist on the type. Use the schema explorer to verify field names.
Timeout or slow responses
Symptom: Requests take a very long time or time out.
Solutions:
- Reduce the
firstparameter to fetch fewer records per page. - Remove deeply nested relationship fields that trigger additional data loading.
- Avoid requesting
totalCounton very large connections if you do not need it. - Use report downloads for bulk data export instead of paginating through the API (see Generate Report Downloads).