# Ranked picks per kind for a design brief, each with reasons

`POST /hosting/design-library/select` · Rivier · hosting

Ranked picks per kind for a design brief, each with reasons; hard requirements remove entries first.

- Scope: hosting:read
- Mcp: rivier_design_library_select
- Graphql: Query.hostingLibrarySelect
- Sdk: hosting.library.select
- Cli: hosting library select

## Request body

`application/json`

```json
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 1500
    },
    "siteType": {
      "type": "string",
      "maxLength": 40
    },
    "businessType": {
      "type": "string",
      "maxLength": 40
    },
    "purpose": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 30
      },
      "maxItems": 8
    },
    "mood": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 30
      },
      "maxItems": 8
    },
    "density": {
      "type": "string",
      "enum": [
        "airy",
        "balanced",
        "compact"
      ]
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 12
      },
      "maxItems": 12
    },
    "rtl": {
      "type": "boolean"
    },
    "a11y": {
      "type": "string",
      "enum": [
        "AA",
        "AAA"
      ]
    },
    "brandHex": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$"
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "template",
          "design",
          "section",
          "flow",
          "palette",
          "type_pairing",
          "token_set",
          "icon_style",
          "widget_style",
          "tone",
          "app_shell",
          "screen",
          "component_style"
        ]
      },
      "maxItems": 13
    },
    "perKind": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "additionalProperties": false
}
```

## Responses

- `200`: Success
- `400`: The request was malformed
- `401`: No valid credential
- `403`: The credential lacks the scope, origin or address
- `429`: Over the key's rate limit; see Retry-After

## Example

```sh
curl -X POST 'https://api.rivier.ai/hosting/design-library/select' \
  -H 'Authorization: Bearer $KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "text": "string",
  "siteType": "string",
  "businessType": "string",
  "purpose": [
    "string"
  ],
  "mood": [
    "string"
  ],
  "density": "airy",
  "languages": [
    "string"
  ],
  "rtl": false
}'
```
