Poem

Saying (Random / Daily / Scene / Moment)

0calls
1 credits / call

Need a warm line for your app, chatbot, or personal homepage? Whether it is a morning greeting, a late-night note, or a fixed daily quote for check-ins, this single endpoint covers the main saying use cases.

GET
uapis.cn
/api/v1/saying/random
Query parameters
5
mode
string

Runtime mode. Omit it or pass random for a random saying; available values are daily, recommend, and moment.

scene
string
Recommendation scene. Required when mode=recommend, for example night, morning, or work. Choose from the .
source
string
Corpus source filter. Supports repeated query parameters, comma-separated values, or semicolon-separated values. Choose from the .
category
string
Category filter. Supports repeated query parameters, comma-separated values, or semicolon-separated values. Choose from the .
tag
string
Tag filter. Supports repeated query parameters, comma-separated values, or semicolon-separated values. Choose from the .

Overview

This is the unified corpus saying endpoint. Use the mode parameter to switch between multiple copywriting scenarios, and optionally filter by source, category, or tag.

Four modes (mode)

  • Random (random or omitted): returns a fresh random saying from the selected pool.
  • Daily (daily): returns the same saying for the same day within the selected pool. Useful for daily check-ins, morning pushes, or sign-in backgrounds.
  • Scene recommendation (recommend): use scene to get a saying for a specific scene, such as morning or night.
  • Moment (moment): automatically detects the server-side time segment and recommends a saying that fits the current moment.

Notes

Note
  • Filters: source, category, and tag accept multiple values separated by commas , or semicolons ;.
  • Scene binding: scene is required only when mode=recommend; it is ignored by other modes.
  • Recommended requests:
    • Random: GET /api/v1/saying/random
    • Daily: GET /api/v1/saying/random?mode=daily
    • Scene: GET /api/v1/saying/random?mode=recommend&scene=night
    • Moment: GET /api/v1/saying/random?mode=moment

Query parameters

mode
stringoptional

Runtime mode. Omit it or pass random for a random saying; available values are daily, recommend, and moment.

scene
stringoptional
Recommendation scene. Required when mode=recommend, for example night, morning, or work. Choose from the .
source
stringoptional
Corpus source filter. Supports repeated query parameters, comma-separated values, or semicolon-separated values. Choose from the .
category
stringoptional
Category filter. Supports repeated query parameters, comma-separated values, or semicolon-separated values. Choose from the .
tag
stringoptional
Tag filter. Supports repeated query parameters, comma-separated values, or semicolon-separated values. Choose from the .

Response

200 / OK

Request succeeded. The response shape depends on the selected mode.

Format 1Random mode
JSON
{
  // Unique saying identifier.
  "uuid": "dfs-5d3627b262f01db19ddf29d0c8d94828",
  // Saying body.
  "content": "Every chance encounter, however small, has its own quiet meaning.",
  // Original work, source, or corpus origin.
  "source": "Natsume's Book of Friends",
  // Author or speaker.
  "author": "Yuki Midorikawa",
  // Extended author metadata, returned by some corpus items.
  "authorinfo": {
    "id": "natsume",
    "name": "Yuki Midorikawa",
    "description": "Manga artist",
    "bio": "Known for Natsume's Book of Friends.",
    "link": "https://example.com/author/natsume"
  },
  // Corpus identifier.
  "corpus": "sentences-bundle",
  // Saying category.
  "category": "动画",
  // Matched tags, returned by some modes.
  "matchedTags": [
    "string"
  ],
  // Corpus ingestion timestamp in seconds, returned by some items.
  "createdAt": "1675500151",
  // Character count of the body.
  "contentLength": 21
}
Format 2Daily mode
JSON
{
  "mode": "daily",
  // Date in YYYY-MM-DD format.
  "date": "2026-06-10",
  // Deterministic seed for the day.
  "seed": "daily20260610-",
  // The daily saying item.
  "item": {
    // Unique saying identifier.
    "uuid": "dfs-5d3627b262f01db19ddf29d0c8d94828",
    // Saying body.
    "content": "Every chance encounter, however small, has its own quiet meaning.",
    // Original work, source, or corpus origin.
    "source": "Natsume's Book of Friends",
    // Author or speaker.
    "author": "Yuki Midorikawa",
    // Extended author metadata, returned by some corpus items.
    "authorinfo": {
      "id": "natsume",
      "name": "Yuki Midorikawa",
      "description": "Manga artist",
      "bio": "Known for Natsume's Book of Friends.",
      "link": "https://example.com/author/natsume"
    },
    // Corpus identifier.
    "corpus": "sentences-bundle",
    // Saying category.
    "category": "动画",
    // Matched tags, returned by some modes.
    "matchedTags": [
      "string"
    ],
    // Corpus ingestion timestamp in seconds, returned by some items.
    "createdAt": "1675500151",
    // Character count of the body.
    "contentLength": 21
  }
}
Format 3Recommendation mode
JSON
{
  "mode": "recommend",
  // Matched scene profile.
  "scene": {
    "key": "night",
    "name": "夜晚",
    "description": "偏思考、回味、轻情绪化的语料"
  },
  // Deterministic seed for the scene on the day.
  "seed": "recommend20260610-night-",
  // Recommended saying item.
  "item": {
    // Unique saying identifier.
    "uuid": "dfs-5d3627b262f01db19ddf29d0c8d94828",
    // Saying body.
    "content": "Every chance encounter, however small, has its own quiet meaning.",
    // Original work, source, or corpus origin.
    "source": "Natsume's Book of Friends",
    // Author or speaker.
    "author": "Yuki Midorikawa",
    // Extended author metadata, returned by some corpus items.
    "authorinfo": {
      "id": "natsume",
      "name": "Yuki Midorikawa",
      "description": "Manga artist",
      "bio": "Known for Natsume's Book of Friends.",
      "link": "https://example.com/author/natsume"
    },
    // Corpus identifier.
    "corpus": "sentences-bundle",
    // Saying category.
    "category": "动画",
    // Matched tags, returned by some modes.
    "matchedTags": [
      "string"
    ],
    // Corpus ingestion timestamp in seconds, returned by some items.
    "createdAt": "1675500151",
    // Character count of the body.
    "contentLength": 21
  }
}
Format 4Moment mode
JSON
{
  "mode": "moment",
  // Matched time-segment key.
  "timeSegment": "night",
  // Server current time in ISO 8601 format.
  "currentTime": "2026-06-10T20:30:00+08:00",
  // Deterministic seed for the current time segment.
  "seed": "moment20260610-night",
  // Moment saying item.
  "item": {
    // Unique saying identifier.
    "uuid": "dfs-5d3627b262f01db19ddf29d0c8d94828",
    // Saying body.
    "content": "Every chance encounter, however small, has its own quiet meaning.",
    // Original work, source, or corpus origin.
    "source": "Natsume's Book of Friends",
    // Author or speaker.
    "author": "Yuki Midorikawa",
    // Extended author metadata, returned by some corpus items.
    "authorinfo": {
      "id": "natsume",
      "name": "Yuki Midorikawa",
      "description": "Manga artist",
      "bio": "Known for Natsume's Book of Friends.",
      "link": "https://example.com/author/natsume"
    },
    // Corpus identifier.
    "corpus": "sentences-bundle",
    // Saying category.
    "category": "动画",
    // Matched tags, returned by some modes.
    "matchedTags": [
      "string"
    ],
    // Corpus ingestion timestamp in seconds, returned by some items.
    "createdAt": "1675500151",
    // Character count of the body.
    "contentLength": 21
  }
}

400 / Bad Request

Invalid parameter. Common causes include an unsupported scene or invalid filter value.

JSON
{
  "code": "INVALID_PARAMETER",
  "message": "invalid saying scene"
}

404 / Not Found

No saying matched the current filter combination.

JSON
{
  "code": "NOT_FOUND",
  "message": "no saying matched current query"
}
Saying (Random / Daily / Scene / Moment) API | UApiPro | UApiPro