Retrieve a paginated list of analyses. Filter by project or status to narrow results, and use cursor-based pagination to iterate through large collections efficiently.
Endpoint
GET https://api.screenscoreai.com/v1/analyses
Query parameters
Return only analyses belonging to this project. If omitted, analyses across all projects are returned.
Filter by processing status. Accepted values: pending, processing, completed, failed. If omitted, analyses in all states are returned.
Number of results to return per page. Minimum 1, maximum 100. Defaults to 20.
Pagination cursor. Pass the next_cursor value from the previous response to retrieve the next page. Omit this parameter to start from the beginning.
Example request
curl --request GET \
--url "https://api.screenscoreai.com/v1/analyses?project_id=proj_01hx4k2m9fvbzq3rcw7ndj6e5t&status=completed&limit=10" \
--header "Authorization: Bearer YOUR_API_KEY"
Response
Array of analysis objects matching the query. Each object has the same fields as the Get analysis response.
Cursor to pass as after in the next request to retrieve the following page. null when you have reached the last page.
Total number of analyses matching the applied filters, across all pages.
Example response
{
"data": [
{
"id": "ana_09jz7p3nqwec1x5vbr4mt8ks2d",
"project_id": "proj_01hx4k2m9fvbzq3rcw7ndj6e5t",
"status": "completed",
"image_url": "https://example.com/screens/homepage-v2.png",
"label": "Homepage - Variant B",
"score": 78,
"breakdown": {
"visual_clarity": 82,
"visual_hierarchy": 74,
"color_contrast": 91,
"cta_effectiveness": 65,
"brand_consistency": 80
},
"feedback": [
"The primary CTA button lacks sufficient contrast with the background.",
"Text hierarchy between the headline and subheading is too similar in weight."
],
"error_message": null,
"created_at": "2026-04-16T10:23:45Z",
"completed_at": "2026-04-16T10:23:52Z"
},
{
"id": "ana_02bw9r6yftml4a8vck3pu1ns7h",
"project_id": "proj_01hx4k2m9fvbzq3rcw7ndj6e5t",
"status": "completed",
"image_url": "https://example.com/screens/homepage-v1.png",
"label": "Homepage - Variant A",
"score": 64,
"breakdown": {
"visual_clarity": 70,
"visual_hierarchy": 58,
"color_contrast": 72,
"cta_effectiveness": 55,
"brand_consistency": 66
},
"feedback": [
"Low color contrast on body text makes it difficult to read on mobile screens.",
"The hero section has competing focal points — simplify to direct attention to the CTA."
],
"error_message": null,
"created_at": "2026-04-15T14:10:02Z",
"completed_at": "2026-04-15T14:10:09Z"
}
],
"next_cursor": "cur_eyJsYXN0X2lkIjoiYW5hXzAyYnc5cjZ5ZnRtbDRhOHZjazNwdTFuczd",
"total": 47
}
Paginating through all results
To iterate through every page, pass the next_cursor from each response as the after parameter in the next request. Stop when next_cursor is null.
let cursor = null;
const allAnalyses = [];
do {
const params = new URLSearchParams({ limit: '100' });
if (cursor) params.set('after', cursor);
const response = await fetch(
`https://api.screenscoreai.com/v1/analyses?${params}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const page = await response.json();
allAnalyses.push(...page.data);
cursor = page.next_cursor;
} while (cursor !== null);