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

# Text search

> Resolve a short piece of text to the Specter entities it refers to. Pass a passage to pull out the entities mentioned, or a natural-language query (e.g. "competitors of rippling.com" or "fintech investors") to get the entities that match. Each result includes the entity's Specter ID, type, and how central it is to the text.

<Note> Costs 1 credit per request. </Note>

## Behaviour

- Accepts up to 1,000 characters.
- Each match carries a `context`: `primary` (a main subject or direct match), `active` (a meaningful supporting role, e.g. an investor in a round), or `passive` (mentioned in passing).
- People aren't supported yet.
- No matches returns an empty list.




## OpenAPI

````yaml /api-ref/bundle_api.yaml post /entities/text-search
openapi: 3.0.0
info:
  title: Specter API
  termsOfService: https://tryspecter.com/terms/
  contact:
    name: API support
    email: api-support@tryspecter.com
  version: 1.0.0
servers:
  - description: Production
    url: https://app.tryspecter.com/api/v1
security:
  - ApiKeyAuth: []
tags:
  - name: Enrichment
    description: >
      Endpoints which can be used to query for data and, if the data is not
      found request that it be retrieved by Specter systems.
  - name: Companies
    description: >
      Endpoints that provide the most up to date information about all the
      companies in our data set. Giving the ability to query by a specific
      company id, or using a keyword such as the domain.


      This also allows us to enrich the data about a company if we either do not
      have it or it is older than expected, which means you always have the most
      up-to-date information possible.
  - name: People
    description: >
      Endpoints that expose Specter people records — profile data and contact
      details — for a known person ID.
  - name: Investors
    description: >
      Endpoints that expose Specter investor records — profile, activity,
      targeting, funds, portfolio companies, and the funding rounds they have
      participated in — for a known investor ID.
  - name: Talent and Interest Signals
    description: >
      Endpoints for retrieving Specter Talent Signals and Investor Interest
      Signals by ID.
  - name: News Signals
    description: >
      Company-level news signals generated from articles monitored by Specter.
      Each signal represents a single classified company mention within an
      article and includes a summary of the newsworthy update (such as funding,
      deals, revenue, profitability, or traction) along with an assigned
      importance score.
  - name: Revenue Signals
    description: >
      Revenue and profitability observations for companies, derived from news
      coverage and public filings. Each signal captures one data point — the
      revenue or profitability metric, the year it refers to, the source, and
      the company it is attributed to.
  - name: Transactions
    description: >
      Endpoints that expose transaction detail — funding rounds, acquisitions,
      and IPOs — by ID.
  - name: Company Lists
    description: >
      Create, query and maintain lists of companies that are of particular
      interest. The endpoints here allow you to interrogate and maintain those
      lists using a programmatic interface.
  - name: People Lists
    description: >
      Create, query and maintain lists of people that are of particular
      interest. The endpoints here allow you to interrogate and maintain those
      lists using a programmatic interface.
  - name: Investor Lists
    description: >
      Create, query and maintain lists of investors that are of particular
      interest. The endpoints here allow you to interrogate and maintain those
      lists using a programmatic interface.
  - name: Network
    description: >
      Endpoints for accessing your team's LinkedIn network - the people and
      companies your teammates are connected to.
  - name: Saved Searches
    description: >
      Manage searches that have been saved via `tryspecter.com`. These endpoints
      are useful to programmatically list and delete saved searches. To update a
      search the UI should be used at `tryspecter.com`.
  - name: Company Saved Searches
    description: >
      Query and get results for company searches that have been saved via
      `tryspecter.com`. These endpoints are useful to programmatically get
      results and information for a search. To update a search the UI should be
      used at `tryspecter.com`.
  - name: People Saved Searches
    description: >
      Query and get results for people searches that have been saved via
      `tryspecter.com` or via the API. These endpoints are useful to
      programmatically get results and information for a search. To update a
      search the UI should be used at `tryspecter.com`.
  - name: Investor Saved Searches
    description: >
      Query and inspect saved investor searches — metadata (name, match counts)
      and paginated results — from searches saved via `tryspecter.com` or shared
      with the API.
  - name: Talent Signals Saved Searches
    description: >
      Query and get results for Talent Signals searches that have been saved via
      `tryspecter.com`.
  - name: Investor Interest Saved Searches
    description: >
      Query and get results for Investor Interest Signals searches that have
      been saved via `tryspecter.com`.
  - name: Organization
    description: >
      Endpoints for accessing your organization's members and org-level
      resources.
  - name: Customer Data
    description: >
      Retrieve a log of API calls made by your organization. Useful for auditing
      usage, debugging integrations, and monitoring activity.
paths:
  /entities/text-search:
    post:
      tags:
        - Enrichment
      summary: Text search
      description: >
        Resolve a short piece of text to the Specter entities it refers to. Pass
        a passage to pull out the entities mentioned, or a natural-language
        query (e.g. "competitors of rippling.com" or "fintech investors") to get
        the entities that match. Each result includes the entity's Specter ID,
        type, and how central it is to the text.


        <Note> Costs 1 credit per request. </Note>


        ## Behaviour


        - Accepts up to 1,000 characters.

        - Each match carries a `context`: `primary` (a main subject or direct
        match), `active` (a meaningful supporting role, e.g. an investor in a
        round), or `passive` (mentioned in passing).

        - People aren't supported yet.

        - No matches returns an empty list.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: The text to resolve.
              properties:
                text:
                  type: string
                  description: The text to resolve (max 1,000 characters).
                  maxLength: 1000
                  example: Competitors of rippling.com worldwide
              required:
                - text
              additionalProperties: false
      responses:
        '200':
          description: >
            The entities resolved from the text. Returns an empty list when
            there are no matches.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    source_name:
                      type: string
                      description: The matched entity's name.
                      example: Stripe
                    context:
                      type: string
                      description: >
                        How central the entity is to the text: `primary` (a main
                        subject or direct match), `active` (a meaningful
                        supporting role, e.g. an investor in a round), or
                        `passive` (mentioned incidentally).
                      enum:
                        - primary
                        - active
                        - passive
                      example: primary
                    entity_id:
                      type: string
                      description: >-
                        The entity's Specter ID — a company ID or an investor
                        ID.
                      example: 5e3bc2b700c8f4c966ad2bbd
                    entity_type:
                      type: string
                      description: >
                        Entity category. Companies are returned as `company`,
                        investors as `investors`.
                      enum:
                        - company
                        - investors
                      example: company
        '400':
          $ref: '#/components/responses/EnrichmentBadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimits'
components:
  responses:
    EnrichmentBadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                description: The type of error.
              message:
                type: string
                description: >
                  A message with information about why the request was bad, will
                  be either a single message, or a path to the validation
                  issues.
          examples:
            no-request-body:
              summary: No request body
              value:
                errorCode: VALIDATION_ERROR
                message: Cannot get item with no request body.
            bad-linkedin-id:
              summary: Bad LinkedIn Id
              value:
                errorCode: VALIDATION_ERROR
                message: >
                  {"code":"invalid_type","expected":"number","received":"string","path":["linkedin_id"],"message":"Expected
                  number, received string"}
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/ApiKeyMissing'
              - $ref: '#/components/schemas/ApiKeyNotValid'
    Forbidden:
      description: Forbidden - There is no permissions to use the endpoint
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                description: NOT_PERMITTED
                type: string
                example: NOT_PERMITTED
              message:
                type: string
                description: You do not have permission to access this resource.
                example: You do not have permission to access this resource.
            required:
              - errorCode
              - message
    RateLimits:
      description: Too Many Requests - API Rate limit exceeded
      content:
        application/json:
          schema:
            type: object
            required:
              - errorCode
              - message
            properties:
              errorCode:
                type: string
                description: RATE_LIMITED
              message:
                type: string
                description: You have been rate-limited
      headers:
        X-RateLimit-Limit:
          schema:
            type: integer
          description: The total rate limit allowed for this endpoint
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: The number of requests remaining
        X-RateLimit-Reset:
          schema:
            type: number
            format: float
          description: The number of seconds until the rate limit resets
  schemas:
    ApiKeyMissing:
      properties:
        errorCode:
          description: API_KEY_MISSING
          example: API_KEY_MISSING
          type: string
        message:
          description: No API Key was presented on the header X-API-KEY
          example: No API Key was presented on the header X-API-KEY
          type: string
    ApiKeyNotValid:
      properties:
        errorCode:
          description: API_KEY_NOT_VALID
          example: API_KEY_NOT_VALID
          type: string
        message:
          description: API key present, but not valid
          example: API key present, but not valid
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````