> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/perplexideez. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# Perplexideez

Set `SEARXNG_URL` to SpecStream's SearXNG address with your key in it, and perplexideez searches the web through SpecStream's Search API. There is no SearXNG container to run, no Valkey beside it, and no `settings.yml` to edit for JSON output.

[SpecStream for PerplexideezAI assistants](https://specstream.ai/integrations/perplexideez.md)

## What you need

-   A perplexideez server you run with Docker Compose, Kubernetes or bare metal, with the Ollama or OpenAI compatible endpoint its README asks for.
-   A SpecStream key. [Get your key](https://specstream.ai/workspace/search?route=searxng&utm_source=perplexideez&utm_medium=howto) on the Search API screen of your SpecStream workspace. New accounts start with $10 of credit, no card.

1.  1

    ## 1. Put your key in the address

    perplexideez builds every search as `SEARXNG_URL` followed by `/search?format=json`, and sends no key or header of its own. So the key goes in the path, as the address's last part. Put your key in place of `YOUR_SPECSTREAM_KEY`, and end the address with no slash:

    SEARXNG\_URL

    ```text
    https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY
    ```

2.  2

    ## 2. Set SEARXNG\_URL in .env

    In the `.env` you made from `deploy/docker/.env.example`, replace the SearXNG block. `REDIS_URL` is used only by the example SearXNG stack, so it can go too. On bare metal, set the same line in the `.env` the app starts with.

    .env

    ```bash
    ###############
    ### SEARXNG ###
    ###############
    SEARXNG_URL="https://api.specstream.ai/searxng/YOUR_SPECSTREAM_KEY"
    ```

3.  3

    ## 3. Take SearXNG out of the Compose stack

    The example `compose.yml` includes `./searxng.yml`, which starts SearXNG and Valkey, and the `perplexideez` service waits until `searxng` is healthy. Remove the include line and the `searxng` entry under `depends_on`. Keep the rest of the service as it is:

    deploy/docker/compose.yml

    ```yaml
    include:
      - ./db.yml
      - ./ollama.yml
    
    services:
      perplexideez:
        # image, env_file, healthcheck and ports stay as they are
        depends_on:
          postgres:
            condition: service_healthy
          ollama:
            condition: service_healthy
    ```

4.  4

    ## 4. Restart and ask

    Run this in `deploy/docker`. It recreates perplexideez with the new address and removes the SearXNG and Valkey containers:

    Then ask about something from this week. The **Sources** list under the answer shows the pages SpecStream returned.

    Terminal

    ```bash
    docker compose up -d --remove-orphans
    ```

## What perplexideez sends, and what comes back

| perplexideez sends | SpecStream |
| --- | --- |
| `GET {SEARXNG_URL}/search?format=json&q=...` | `https://api.specstream.ai/searxng/<key>/search`, with the key read from the path |
| `format=json` | Always answered in SearXNG's JSON shape. There is no format to turn on |
| `language=en`, on every web search | Passed on as the search language |
| Reads `results[].title`, `url` and `content`, and gives each `content` to the model as the text to answer from | SearXNG's JSON: `results[]` with `title`, `url` and `content`. `publishedDate` is null on most results |

## Why a self-hosted SearXNG gets in the way

The perplexideez README warns that all requests to SearXNG fail unless JSON output is enabled, and that perplexideez is very likely to trigger SearXNG's limiter, so it advises turning the limiter off. SearXNG's own search API docs say a format that is not enabled answers 403, and that many public instances turn these formats off. A limiter that is off then sends every query from your server's address to public engines.

SpecStream answers every request in SearXNG's JSON shape, and the search runs on SpecStream's servers. There is no format to enable, no limiter to tune and no engine list to keep unblocked.

## Related Images and Related Videos

perplexideez asks for images and videos by engine name (`bing images`, `google images` and `youtube`) and keeps only results that carry an image address or a video embed. SpecStream's SearXNG address answers an image search when the request carries `categories=images`, which perplexideez does not send, so these two panels stay hidden. The answer and its sources do not change.

## What each message costs

Each search through the SearXNG address is one Search API call on the fast tier: $1 per 1,000 searches of up to 10 results, a fifth of the default search's $5. perplexideez sends no result count, so each search gets one page of 10 results, and a search that returns nothing costs nothing.

A message can send up to three searches: one for the answer, and one each for related images and related videos. perplexideez repeats the image and video searches on each new message of a chat while that chat holds none, so a message costs at most $0.003. A question that holds links is answered from those links and sends no web search for the answer.

Searches come out of your balance with no quote and no approval. New accounts start with $10 of credit, no card. Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## If answers fail

-   perplexideez reads the reply as JSON with no status check, so a key SpecStream does not accept shows up as a failed answer. SpecStream answers `401` for that key. Check that the whole key is the address's last part, with no slash after it, and that the key can search: keys made on the Search API screen can.
-   When search is busy, SpecStream answers `429` with a `Retry-After` header and charges nothing. perplexideez does not retry, so send the question again.
-   The address holds your key. Keep `.env` out of git and out of shared Compose files, and in Kubernetes set `SEARXNG_URL` from a Secret. To end a key's access, revoke it under **API keys** in **Agents & API** in your workspace and make a new one.

## Read pages and get rows too

The same key reads pages with the [Extract API](https://specstream.ai/docs/extract-api.md) at $0.80 per 1,000 pages, and a page with no text is not charged. For a dataset, add SpecStream's MCP server at `https://api.specstream.ai/mcp` and ask for the records in plain words. Deep Search returns every match as structured rows at 5¢, 15¢ or $1 a row, under a maximum you approve. See [MCP](https://specstream.ai/docs/mcp.md).

## More

[SpecStream for Perplexideez](https://specstream.ai/integrations/perplexideez.md) covers what it does in Perplexideez on one page. Every other tool has its guide in [Connect your tools](https://specstream.ai/docs/integrations.md). You see the most a request can cost before it starts, and the matches are paid from your balance. [Billing](https://specstream.ai/docs/billing.md) has the details. For help, email [support@specstream.ai](mailto:support@specstream.ai).
