> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nephia.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a bucket

> Adds a bucket to a listening keyword: a name and one plain-language sentence saying what belongs in it. The model reads the sentence, not a list of words. Mentions already sorted stay where they are; the next sorting pass reads the new bucket. Refused on a catalog keyword and when a bucket of that name exists. Free: does not charge credits; sorting is charged when it runs.



## OpenAPI

````yaml /openapi.json post /v1/keywords/{id}/buckets
openapi: 3.1.0
info:
  title: Nephia API
  description: >-
    The brand-monitoring API. Create a **keyword** and it polls the live Sources
    (X, Reddit, Youtube, TikTok, Bluesky, Hacker News, Mastodon, Lemmy, GitHub,
    Product Hunt, Stack Overflow, RSS, AI answers and Vinted) on an interval,
    keeps what matches, reads each mention for sentiment and intent, sorts it
    into your buckets and answers your own agent step over it. Read the result
    back as **mentions** (`GET /v1/mentions` across the whole Account, or per
    keyword), or have it pushed to you as signed webhook events and delivery
    channels. A search can carry several terms at once, OR'd into one upstream
    request at one tick's cost. Authenticate with an API key on your Account.
    Monitoring is sold as a subscription (keywords, terms, freshness and AI)
    with credits as the meter underneath; credit packs are overflow and never
    change a limit. Reading your own mentions is free; the semantic search mode
    and the AI passes are what meter. Request quota is per Account (all API keys
    share one bucket), by Plan: Free 60/min, Solo 350/min, Growth 700/min, Pro
    1200/min.
  version: 1.0.0
servers:
  - url: https://api.nephia.cc
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Account
    description: Account balance
  - name: Mentions
    description: Everything your keywords caught, across every Source
  - name: Keywords
    description: >-
      What you monitor. A keyword carries its terms, its Sources and its
      settings. Read, create, edit and pause them here.
  - name: Explore
    description: >-
      One question asked of the Sources once, priced first, without creating a
      keyword
  - name: AI
    description: Group, classify, agent and summarise passes over items you name
  - name: Vinted analytics
    description: Observed price history and per-day market statistics
paths:
  /v1/keywords/{id}/buckets:
    post:
      tags:
        - Keywords
      summary: Create a bucket
      description: >-
        Adds a bucket to a listening keyword: a name and one plain-language
        sentence saying what belongs in it. The model reads the sentence, not a
        list of words. Mentions already sorted stay where they are; the next
        sorting pass reads the new bucket. Refused on a catalog keyword and when
        a bucket of that name exists. Free: does not charge credits; sorting is
        charged when it runs.
      operationId: postV1KeywordsByIdBuckets
      parameters:
        - in: path
          name: id
          schema:
            type: string
            format: uuid
          required: true
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  minLength: 1
                  maxLength: 40
                rule:
                  type: string
                  minLength: 1
                  maxLength: 240
                color:
                  type: string
                  enum:
                    - positive
                    - negative
                    - question
                    - mixed
                    - neutral
              required:
                - label
                - rule
      responses:
        '201':
          description: Bucket created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KeywordBucketRecord'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                required:
                  - error
        '404':
          description: Keyword not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                required:
                  - error
        '409':
          description: A bucket with that name exists
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                required:
                  - error
        '429':
          description: >-
            Request quota exceeded. Retry after the `Retry-After` header
            (seconds). Response includes `RateLimit-*` headers (IETF draft-7).
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                required:
                  - error
              example:
                error: Rate limit exceeded
                code: TOO_MANY_REQUESTS
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      schema:
        type: string
        maxLength: 255
      description: >-
        Unique key (e.g. UUID) making this POST safe to retry for 24 hours.
        Replays return the original response with an `Idempotency-Replayed:
        true` header; reusing a key with a different body returns 422.
  schemas:
    KeywordBucketRecord:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
        rule:
          type: string
        color:
          type: string
        origin:
          type: string
        createdAt:
          type: string
      required:
        - id
        - label
        - rule
        - color
        - origin
        - createdAt
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key created from the Nephia dashboard for your Account.

````