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

# Update a Definition

> Start or pause one of your team's own definitions. `active: true` starts a ready definition (its test leads become its first signals, reported under `seeded`) or resumes a paused one; `active: false` pauses an active one and keeps the definition, its slot and its signals. Starting a definition that is still compiling, testing or failed is a 400. Free (0 credits).



## OpenAPI

````yaml PUT /signals/custom/definitions/{slug}
openapi: 3.1.0
info:
  title: Custom Signals API
  description: >-
    Signals produced by custom signal definitions — signal types defined as data
    (out of stealth, new office or market entry, first or founding hire, …)
    rather than the four built-in families. One endpoint serves every
    definition; `type` selects which. A free companion endpoint lists the
    definitions, and a team can create, start, pause and remove definitions of
    its own.
  license:
    name: MIT
  version: 2.1.0
servers:
  - url: https://www.trysignalbase.com/api/v2
security:
  - bearerAuth: []
paths:
  /signals/custom/definitions/{slug}:
    put:
      summary: Update a Custom Signal Definition
      description: >-
        Start or pause one of your team's own definitions. `active: true` starts
        a ready definition (its test leads become its first signals, reported
        under `seeded`) or resumes a paused one; `active: false` pauses an
        active one and keeps the definition, its slot and its signals. Starting
        a definition that is still compiling, testing or failed is a 400. Free
        (0 credits).
      operationId: updateCustomSignalDefinition
      parameters:
        - $ref: '#/components/parameters/DefinitionSlug'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DefinitionUpdateRequest'
            example:
              active: true
      responses:
        '200':
          description: The definition after the change.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OwnDefinitionResponse'
              example:
                success: true
                data:
                  slug: first_sales_leader_x7k2
                  name: First sales leader
                  description: >-
                    The author's own company announces its first sales leader
                    (VP Sales, Head of Sales, CRO) or founding sales hire. Not:
                    a sales hire at a company with an existing sales team; a
                    recruiter post about another company.
                  sourceDescription: >-
                    The author's own company announces hiring its first sales
                    leader or is building its first sales team: a first VP
                    Sales, Head of Sales, CRO or founding account executive.
                    Exclude ordinary sales hires at companies that already have
                    a sales team, and recruiter posts about other companies.
                  status: active
                  scope: team
                  attributes:
                    - role
                    - seniority
                  keywordCount: 7
                  restricted: false
                  monitorId: null
                  compileError: null
                  test:
                    ranAt: '2026-11-10T09:16:40.000Z'
                    mode: global
                    fetched: 140
                    classified: 140
                    matched: 4
                    companiesChecked: 0
                    leads:
                      - companyName: Acme
                        companyLinkedinUrl: https://www.linkedin.com/company/acme
                        headline: Acme hires its first VP Sales
                        confidence: 0.91
                        sourceUrl: >-
                          https://www.linkedin.com/feed/update/urn:li:activity:7515785729281671168
                        author: Jane Doe
                        evidenceQuotes:
                          - >-
                            Thrilled to welcome our first ever VP of Sales as we
                            build out the go-to-market team.
                        attributes:
                          role: VP Sales
                          seniority: vp
                        postedAt: '2026-11-08T14:02:00.000Z'
                  lastRunAt: null
                  lastRunStats: null
                  activatedAt: '2026-11-10T09:30:11.000Z'
                  createdAt: '2026-11-10T09:12:04.000Z'
                  signals30d: 4
                  signalsTotal: 4
                  lastSignalAt: '2026-11-10T09:30:11.000Z'
                  nextStep: >-
                    Running. New matches arrive as custom signals under this
                    slug and alert like any other signal.
                  seeded:
                    ingested: 4
                    skipped: 0
                meta:
                  endpoint: customSignals.update
                  creditsUsed: 0
        '400':
          description: >-
            Bad request — a malformed body, slug or value; the message names the
            field
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error: Cannot start a definition that is compiling.
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error: Invalid API key
        '403':
          description: >-
            Forbidden — custom signals need a Pro plan, or the team has no
            active subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error: Custom signals are part of the Pro plan.
        '404':
          description: >-
            Not found — no definition with this slug belongs to your team
            (global definitions are not managed here), or custom signals are not
            enabled for your account yet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error: Custom signal not found
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error: Rate limit exceeded
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error: Internal server error
components:
  parameters:
    DefinitionSlug:
      name: slug
      in: path
      required: true
      schema:
        type: string
        pattern: ^[a-z][a-z0-9_]{2,39}$
      description: >-
        The definition's slug, as returned when it was created or by the
        catalogue.
  schemas:
    DefinitionUpdateRequest:
      type: object
      required:
        - active
      properties:
        active:
          type: boolean
          description: >-
            true starts a ready or paused definition (a first start makes its
            test leads its first signals); false pauses an active one. Other
            transitions are a 400.
    OwnDefinitionResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          $ref: '#/components/schemas/OwnDefinition'
        meta:
          $ref: '#/components/schemas/Meta'
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
    OwnDefinition:
      type: object
      description: One of your team's own definitions, as the Custom signals page shows it.
      properties:
        slug:
          type: string
          description: >-
            Derived from the name and made unique with a short suffix. Pass it
            as `type` on GET /signals/custom or in a monitor's signal_types.
        name:
          type: string
        description:
          type: string
          description: >-
            The compiled rule a post must satisfy. Written by the compile step
            from sourceDescription; empty until compiled.
        sourceDescription:
          type:
            - string
            - 'null'
          description: What you sent as `description` when creating it.
        status:
          type: string
          enum:
            - compiling
            - testing
            - ready
            - active
            - paused
            - disabled
            - failed
          description: >-
            compiling: search phrases and a rule are being derived. testing: a
            test run is in flight. ready: tested, not started; review
            test.leads. active: running. paused: kept, not swept. failed: see
            compileError. disabled: removed.
        scope:
          type: string
          enum:
            - team
        attributes:
          type: array
          items:
            type: string
          description: >-
            The definition-specific fields its signals carry (set by the compile
            step).
        keywordCount:
          type: integer
          description: How many search phrases the compile step produced.
        restricted:
          type: boolean
          description: >-
            true when the definition only sweeps its targets' posts (through a
            monitor).
        monitorId:
          type:
            - string
            - 'null'
          description: The monitor that holds the targets of a restricted definition.
        compileError:
          type:
            - string
            - 'null'
        test:
          oneOf:
            - $ref: '#/components/schemas/TestRun'
            - type: 'null'
        lastRunAt:
          type:
            - string
            - 'null'
          format: date-time
          description: When the sweep last ran this definition.
        lastRunStats:
          type:
            - object
            - 'null'
          additionalProperties: true
        activatedAt:
          type:
            - string
            - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
        signals30d:
          type: integer
        signalsTotal:
          type: integer
        lastSignalAt:
          type:
            - string
            - 'null'
          format: date-time
        nextStep:
          type: string
          description: What to do next, given the status.
        attached:
          type:
            - object
            - 'null'
          description: >-
            Create only: how the targets resolved. null when the definition is
            global.
          properties:
            companies:
              type: integer
            invalid:
              type: array
              items:
                type: string
        seeded:
          type: object
          description: >-
            Update with active:true, first start only: how many test leads
            became signals.
          properties:
            ingested:
              type: integer
            skipped:
              type: integer
    Meta:
      type: object
      properties:
        endpoint:
          type: string
        creditsUsed:
          type: integer
        creditsRemaining:
          type: integer
    TestRun:
      type: object
      description: >-
        The last test run: how many recent posts were fetched and classified,
        how many matched, and the matches themselves.
      properties:
        ranAt:
          type:
            - string
            - 'null'
          format: date-time
        mode:
          type: string
          enum:
            - global
            - restricted
          description: restricted when the definition has targets.
        fetched:
          type: integer
        classified:
          type: integer
        matched:
          type: integer
        companiesChecked:
          type: integer
          description: 'Restricted runs only: how many of the targets were checked.'
        leads:
          type: array
          items:
            $ref: '#/components/schemas/TestLead'
    TestLead:
      type: object
      description: >-
        One post the test run matched. The leads of a ready definition become
        its first signals when it is started.
      properties:
        companyName:
          type:
            - string
            - 'null'
        companyLinkedinUrl:
          type:
            - string
            - 'null'
        headline:
          type:
            - string
            - 'null'
          description: The event, stated as a fact.
        confidence:
          type:
            - number
            - 'null'
          minimum: 0
          maximum: 1
        sourceUrl:
          type: string
          description: The post.
        author:
          type:
            - string
            - 'null'
        evidenceQuotes:
          type: array
          items:
            type: string
          description: Verbatim from the post.
        attributes:
          type: object
          additionalProperties:
            type:
              - string
              - 'null'
        postedAt:
          type:
            - string
            - 'null'
          format: date-time
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: API key authentication. Include as Bearer token in Authorization header.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.