Cognis
Design Proposals

Search Design Proposals

GET
/brands/{brandId}/design-proposals/search

Search design proposals for a brand (returns DesignProposalDto, not AI runs). Use search for free text; optional status and sortOrder (createdAt). Caps at 50; currentHtml is null in list/search payloads — fetch by id for HTML.

Required scopes: brand:urls:read

Authorization

bearerAuth
AuthorizationBearer <token>

API key (prefix: cogn_) from Account → Developer

In: header

Path Parameters

brandId*string

Brand ID (prefix: br_)

Query Parameters

search?string

Free-text search (display name, website name/url, brief)

sortOrder?string

Sort order by createdAt

Default"desc"
Value in"asc" | "desc"
status?string

Optional status filter (draft|generating|ready|failed); archived are never returned

Value in"draft" | "generating" | "ready" | "failed"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "http://localhost:3013/api/v1/brands/string/design-proposals/search"
{
  "success": true,
  "data": {
    "id": "dprop_1",
    "orgId": "org_1",
    "brandId": "br_1",
    "displayName": "Acme homepage proposal",
    "websiteName": "Acme",
    "websiteUrl": "https://acme.example.com",
    "brief": "Acme makes premium dog food for active urban breeds.",
    "imageAssetIds": [],
    "inspirationImageAssetIds": [],
    "companyImageAssetIds": [],
    "creationSource": "ai",
    "status": "ready",
    "latestAiRunId": "air_1",
    "currentHtml": "<!doctype html>...",
    "currentHtmlRunId": "air_1",
    "publishedVariantVersionId": null,
    "previewPublishMode": "off",
    "previewPublicSlug": "aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899",
    "previewPasswordUpdatedAt": null,
    "createdBy": null,
    "createdAt": "2026-08-18T09:07:00.073Z",
    "updatedAt": "2026-08-18T09:07:00.073Z"
  },
  "message": "Success",
  "traceId": "req_abc123"
}
{
  "success": false,
  "message": "Invalid data",
  "errors": [
    {
      "code": 400,
      "message": "Invalid data"
    }
  ],
  "traceId": "req_xxx"
}
{
  "success": false,
  "message": "Unauthorized",
  "errors": [
    {
      "code": 401,
      "message": "Unauthorized"
    }
  ],
  "traceId": "req_xxx"
}
{
  "success": false,
  "message": "Forbidden",
  "errors": [
    {
      "code": 403,
      "message": "Forbidden"
    }
  ],
  "traceId": "req_xxx"
}
{
  "success": false,
  "message": "Not found",
  "errors": [
    {
      "code": 404,
      "message": "Not found"
    }
  ],
  "traceId": "req_xxx"
}
{
  "success": false,
  "message": "Conflict",
  "errors": [
    {
      "code": 409,
      "message": "Conflict"
    }
  ],
  "traceId": "req_xxx"
}
{
  "success": false,
  "message": "string",
  "errors": [
    {
      "code": 0,
      "message": "string",
      "details": {}
    }
  ],
  "traceId": "string",
  "params": {},
  "readableMessage": "string"
}
{
  "success": false,
  "message": "Rate limit exceeded",
  "errors": [],
  "traceId": "req_xxx"
}
{
  "success": false,
  "message": "Unexpected error",
  "errors": [
    {
      "code": 500,
      "message": "Unexpected error"
    }
  ],
  "traceId": "req_xxx"
}