Skip to Content
APIEndpointsList alignment suggestions

List alignment suggestions

Alignment prompts the platform has generated (or that you added by hand) but have not yet been decided on. Each carries the category it targets, or a brand-new category it proposes, plus the reasoning behind it when the agent generated it.

This is the review queue for the alignment side: review what Generate alignment suggestions proposed and accept the ones worth tracking with Accept alignment suggestions. It is also how a caller learns that a generation run has finished, since there is no separate run-status endpoint: poll this with request_id and the default status=proposed filter until rows stop arriving.

Requires only read:alignment. Acting on suggestions needs write:alignment.

GET /v1/brands/{brand_id}/alignment/suggestions

Authorization

HeaderTypeRequired
AuthorizationBearer asky_sk_…required

Path parameters

ParameterTypeRequiredDescription
brand_iduuidrequiredFrom List brands

Query parameters

ParameterTypeRequiredDescription
limitintegeroptionalRows per page, 1 to 100. Defaults to 20.
cursorstringoptionalOpaque cursor from the previous response. Treat it as a token, never construct one.
request_iduuidoptionalRestrict to one generation batch (from Generate alignment suggestions).
statusstring, repeatableoptionalFilter by status. One of: proposed, accepted, rejected, promoted. Defaults to proposed (the review queue) when omitted.

Request

curl --request GET \ --url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8/alignment/suggestions?limit=50' \ --header 'Authorization: Bearer <api-key>'

Response

{ "data": [ { "id": "e4a2c8f0-6b1d-4a9e-9c3f-1d8b5a2e7f60", "request_id": "7f3ab21c-9e4d-4b8a-8f1a-2c9d6e4b7a30", "suggested_prompt": "Does this brand publish third-party verified sustainability claims?", "language": "en", "country_codes": ["US"], "category_id": "b8d4f261-3a9c-4e17-8f52-6d1a9c4e8b30", "proposed_category_name": null, "proposed_category_slug": null, "proposed_category_description": null, "agent_reasoning": "This category has no active prompts probing third-party verification, a common trust signal in this vertical.", "status": "proposed", "promoted_to_prompt_id": null, "rejected_reason": null, "created_at": "2026-08-30T09:16:47.118Z" } ], "pagination": { "limit": 20, "has_more": false, "next_cursor": null }, "request_id": "req_2f7b90c14ae8471da3cd" }

Response fields

FieldTypeDescription
data[].iduuidrequired. Use it with Accept / Reject / Edit alignment suggestions
data[].request_iduuidrequired. The generation batch this suggestion came from, or the batch it was added into by Add alignment suggestion
data[].suggested_promptstringrequired
data[].languagestringrequired
data[].country_codesstring[]required
data[].category_iduuid | nullSet when this suggestion targets an existing category, from List alignment categories
data[].proposed_category_namestring | nullSet when this suggestion proposes a brand-new category instead
data[].proposed_category_slugstring | nullThe slug the new category will get, materialized only once a suggestion in it is accepted
data[].proposed_category_descriptionstring | null
data[].agent_reasoningstring | nullWhy the agent proposed this prompt. null for hand-written suggestions
data[].statusstringrequired. One of proposed, accepted, rejected, promoted
data[].promoted_to_prompt_iduuid | nullSet once accepted
data[].rejected_reasonstring | nullSet only when rejected with a reason
data[].created_attimestamptzrequired
request_idstringrequired. Also returned as the x-request-id header. Quote it when contacting support

Errors

StatusCodeWhen
400invalid_requestA parameter is unknown or malformed. The message names it
401invalid_tokenThe key is missing, malformed, or does not exist
401token_expiredThe key passed its expiry date
401token_revokedThe key was revoked
403insufficient_scopeThe key does not carry read:alignment
404not_foundThe brand does not exist, or this key is not allowed to reach it
429rate_limitedOver 300 requests per minute

Notes

Defaults to proposed. Pass status explicitly to see suggestions you already decided on — useful for auditing what was accepted or rejected and why.

accepted vs promoted. Both mean the suggestion was accepted. promoted created a new alignment prompt; accepted means the suggested text already matched an existing active alignment prompt, so it was linked to that prompt instead of creating a duplicate. promoted_to_prompt_id is set either way.

A category never has both fields set. category_id (an existing category) and proposed_category_name/proposed_category_slug/proposed_category_description (a brand-new one) are mutually exclusive per row. A suggestion with neither is uncategorised.

Last updated on