addrbookFor publishers
← The evidence ledger

Evidence row 67972

Observed , by baseline/1.

Kind
listing
About
source_record x402_bazaar:https://api.particle.pro/v1/podcasts/episodes/search
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
1bacb188bd264f529595025f41d3408d3507d9f95d9d1c881046b1b0afe45c86
Leaf
0xa32ebeb4cf3881ba977f8ea77ef0b9812ece13fd30091e40b4cc63ba1f908d14

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://api.particle.pro/v1/podcasts/episodes/search"
    ]
  ],
  "name": "Particle Pro",
  "owner_address": "0x59f3a6dcb6f482c53872dd8f8f9e1f9161a1c5f7",
  "raw": {
    "accepts": [
      {
        "amount": "30000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 300,
        "network": "eip155:8453",
        "payTo": "0x59f3a6dcb6f482c53872dd8f8f9e1f9161a1c5f7",
        "scheme": "exact"
      }
    ],
    "description": "Search podcast episode content. To find podcasts (shows) by name or topic, use /v1/podcasts/search?q=….",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "method": "GET",
            "queryParams": {
              "language": "fr",
              "since": "2024-01-01",
              "until": "2024-06-01"
            },
            "type": "http"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "method": {
                  "enum": [
                    "GET"
                  ],
                  "type": "string"
                },
                "queryParams": {
                  "properties": {
                    "company_id": {
                      "description": "Optional company slug, domain, or ID. Resolves to the company's linked entity and applies as a filter.",
                      "type": "string"
                    },
                    "context": {
                      "description": "Lines of surrounding dialogue around each matched line (1-15, default 1). Widens each match's transcript window in place — request more context instead of fetching the full transcript. Window size stays bounded even at the maximum. Ignored when format=compact.",
                      "format": "int64",
                      "type": "integer"
                    },
                    "cursor": {
                      "description": "Opaque cursor from a previous response.",
                      "type": "string"
                    },
                    "entity_id": {
                      "description": "Optional entity or person slug or ID. Filters results to episodes featuring this entity. A person with no linked entity matches the episodes they speak in. A slug that names both an entity and a person means the entity; pass the person's ID to filter by the person. For 'every line about X', use /v1/podcasts/mentions instead.",
                      "type": "string"
                    },
                    "entity_type": {
                      "description": "Optional entity category slug. Filters to episodes that *mention* any entity in that category (e.g. 'company', 'school', 'book'). Speakers are always people, so this filter only narrows mentioned entities. Cannot be combined with 'role'. Ignored when entity_id resolves to a specific entity. See GET /v1/entities/types for the available slugs.",
                      "type": "string"
                    },
                    "episode_id": {
                      "description": "Filter to a specific episode by slug or ID.",
                      "type": "string"
                    },
                    "format": {
                      "description": "Response shape. 'full' (default) carries each match's bounded dialogue windows and overlapping clips. 'compact' omits windows and clips and skips the transcript load and line scoring that produce them, so the page is a fraction of the size and returns sooner: each match keeps its episode, its segment (id, title, description, summary, bounds) and its relevance score. Use it to screen many results — a fan-out over companies, themes, or dates — and fetch dialogue only for the matches that survive, via GET /v1/podcasts/segments/{id}/transcript or a full-format search narrowed with episode_id.",
                      "enum": [
                        "full",
                        "compact"
                      ],
                      "type": "string"
                    },
                    "guest_capacity": {
                      "description": "Only segments of episodes with a guest who knows their field in this capacity, such as executive_founder for founders. It narrows the other filters; an everyday word for a capacity passed as guest_occupation (founders, politicians) lands here too.",
                      "enum": [
                        "researcher",
                        "licensed_professional",
                        "practitioner",
                        "executive_founder",
                        "public_official",
                        "journalist_analyst",
                        "creator_entertainer",
                        "athlete_coach",
                        "clergy",
                        "firsthand",
                        "layperson"
                      ],
                      "type": "string"
                    },
                    "guest_field": {
                      "description": "Only segments of episodes with a guest listed under this ANZSRC 2020 field of research (code, slug, or title).",
                      "type": "string"
                    },
                    "guest_in_field": {
                      "description": "Only segments of episodes with a guest speaking within their field (the guest the other guest_ filters select, when given).",
                      "type": "boolean"
                    },
                    "guest_occupation": {
                      "description": "Only segments of episodes with a guest listed under this SOC 2018 or ISCO-08 occupation (code, slug, or title), including a SOC group or everyday name such as physicians or doctors. A word with no occupation filters by the field of research or capacity it names: oncologists is field 3211, founders is guest_capacity=executive_founder.",
                      "type": "string"
                    },
                    "guest_practicing": {
                      "description": "Only segments of episodes with a guest who still works in guest_occupation, a SOC 2018 occupation or group.",
                      "type": "boolean"
                    },
                    "guest_seniority": {
                      "description": "Only segments of episodes with a guest at this seniority or above.",
                      "enum": [
                        "professional",
                        "senior",
                        "distinguished"
                      ],
                      "type": "string"
                    },
                    "guest_standing": {
                      "description": "Only segments of episodes with a guest whose standing is recognized this way.",
                      "enum": [
                        "established",
                        "self_described",
                        "unverified"
                      ],
                      "type": "string"
                    },
                    "keyword_match": {
                      "description": "How unquoted keyword_search terms are applied. 'required' (default) filters to segments containing every term, so results are guaranteed to contain what you typed — this also constrains semantic_search, making a hybrid query an intersection of the two. 'ranked' instead lets unquoted terms only boost BM25 relevance without excluding anything, which widens recall for loose bag-of-words queries but returns segments that may contain none of them. Quoted phrases are unaffected: they filter in BOTH modes, so to relax a phrase remove its quotes. Ignored when keyword_search is empty.",
                      "enum": [
                        "required",
                        "ranked"
                      ],
                      "type": "string"
                    },
                    "keyword_search": {
                      "description": "BM25 lexical search over dialogue. Use when an exact token must appear verbatim — tickers, drug names, product codes. By default every token must appear somewhere in the matched segment (see keyword_match). Wrap any token sequence in double quotes (e.g. \"machine learning\") to additionally require those words adjacent and in order in the segment's spoken dialogue — a speaker's own name is not indexed as dialogue, so quoting a person's name finds segments where the name appears in what was said, not segments they speak in. Adjacency spans consecutive lines, so a phrase may rarely straddle a line break. Multiple quoted phrases AND together (e.g. \"central bank\" \"interest rates\"). There is no boolean OR — a bare OR is treated as an ordinary word, so pass alternatives as separate requests.",
                      "type": "string"
                    },
                    "language": {
                      "description": "Restrict to episodes of podcasts in this language (ISO 639-1 code, e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.",
                      "type": "string"
                    },
                    "limit": {
                      "description": "Results per page (1-100, default 25).",
                      "format": "int64",
                      "type": "integer"
                    },
                    "podcast_id": {
                      "description": "Podcast slug, internal ID, or numeric iTunes ID.",
                      "type": "string"
                    },
                    "role": {
                      "description": "How the entity must relate to the episode. Speaking roles: 'guest', 'host', 'panelist', 'correspondent', or 'speaker' for any of them. 'mention' means the entity is talked about rather than speaking. Omit to match both. Matches the role values on /v1/podcasts/episodes.",
                      "enum": [
                        "guest",
                        "host",
                        "panelist",
                        "correspondent",
                        "speaker",
                        "mention"
                      ],
                      "type": "string"
                    },
                    "semantic_search": {
                      "description": "Vector-similarity search by meaning. Express the query the way you'd describe the topic to a colleague — paraphrase tolerant, finds segments that express the same idea in different vocabulary. Combine with keyword_search for hybrid ranking. Describe a topic, not a name: to find a specific person or company, filter with entity_id / company_id (or use /v1/podcasts/mentions for every line about them) — and for an exact token like a ticker, use keyword_search.",
                      "type": "string"
                    },
                    "since": {
                      "description": "Only segments from episodes published after this date.",
                      "type": "string"
                    },
                    "sort": {
                      "description": "Sort order. Defaults to relevance.",
                      "enum": [
                        "relevance",
                        "recency"
                      ],
                      "type": "string"
                    },
                    "speaker": {
                      "description": "Optional person slug or ID (a person's entity slug or ID works too). Keeps only segments in which this person speaks a line, and only their lines can be a window's match: 'did X say Y' rather than entity_id's 'Y came up in an episode with X'. With keyword_search, the person's own lines in the segment must carry every quoted phrase, and every unquoted term under keyword_match=required; a phrase may run across their consecutive lines but never into someone else's. Only speaking roles count: a clip of the person played on another show (a soundbite) is not them speaking, so their original turns up and its replays do not. With format=compact the page keeps the same shape and the same filtering, but loads transcripts to apply it. Retrieval narrows to the person's episodes before the line check, so lines of theirs that rank below other segments of those episodes can be missed: an empty page does not prove they never said it. Narrow with podcast_id, episode_id, since or until, or try semantic_search. Cannot be combined with the guest_ filters.",
                      "type": "string"
                    },
                    "type": {
                      "description": "Segment type filter.",
                      "enum": [
                        "INTRO",
                        "PERSONAL_BANTER",
                        "TOPIC_DISCUSSION",
                        "INTERVIEW",
                        "TRANSITION",
                        "AD",
                        "OUTRO"
                      ],
                      "type": "string"
                    },
                    "until": {
                      "description": "Only segments from episodes published on or before this date. A bare date includes that whole day.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    },
    "lastUpdated": "2026-10-22T18:03:05.006Z",
    "quality": {
      "l30DaysTotalCalls": 10,
      "l30DaysUniquePayers": 2,
      "lastCalledAt": "2026-10-22T18:03:04.577Z"
    },
    "resource": "https://api.particle.pro/v1/podcasts/episodes/search",
    "serviceName": "Particle Pro",
    "tags": [
      "podcast episode search",
      "podcasts",
      "media intelligence",
      "particle pro"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Search podcast episode content. To find podcasts (shows) by name or topic, use /v1/podcasts/search?q=…."
}

What the leaf hashes

{"body":"1bacb188bd264f529595025f41d3408d3507d9f95d9d1c881046b1b0afe45c86","id":67972,"kind":"listing","method":"baseline/1","observed_us":1793025465476596,"prev":null,"subject":"x402_bazaar:https://api.particle.pro/v1/podcasts/episodes/search","subject_kind":"source_record"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0xa32ed301cb66a5e323641a11c6e44745be17e7e8e4d9a707b8fb72aecbea21eb
  2. 0x2394ec2c1d031e40e10fd46b638b2d43d19825c12ad5957b2abd90a66749dff4
  3. 0x00f2f5bf7cc6495eed28099dab003715df90b11e7dc29649f5e10792185e4bfd
  4. 0xefa73807b3b22ba014ed3f7367993f94cfbbd3e84fd1b1aacd075f9524fa0052
  5. 0x442d32e1667e98ee8e7ff4cc45c941dc5983d07bb4e61bbab87a862bd6750632
  6. 0x502c07ed144e1e93f38da075cf2fced9079565ee23d22216517d5561a23d8b5b
  7. 0x258452ec5e33a70d345b7950d2163a89421101442632504d2e172e0f07cba239
  8. 0x5bf0a77cb804a2b0a017cf03cb21a056cd3a9bfa700cd60c2215d256ac704e82
  9. 0x956e2775a1c8c595dca8ca94938d6cfa37df73918e6612cf61dbc5f45c8e4bce
  10. 0x7adfb47ecfda217ca42c908cb971dd1ceaa64411de0157e4eeeee4ba0ca9cfde
  11. 0xd2bc27d81a73a53b7c724da36f189ebdd2fef396490722c3ee66192b798d20d0
  12. 0x19537c574979327583a539261287714af2eee831125de819abab0f155acd3a75
  13. 0xc34c13c58ba9c342ea1b833ac1882a4aea22777c4fd1092b2f83d3bac6b9f845
  14. 0x428106f4ae4ec142f17aebf6fa50935242f8d3f1c211cf95d6351d03d11da2b7
  15. 0x62a900133713919f4eed33d8336876b7a6d538233b8a4f3ed03b29aa44f5bad0
  16. 0x1ac20d30773e1f4f2f811540e9a99b5cca9177c9e2e029acc0d80cf3f1d11f0f
  17. 0xd21942ae3214eff88e08ab04884fd4b11958b51af9a0741b7668e2d07a2c56c9
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON