{"uid":"cap_TcAKGk_0NpcsUDgXdhhwS","slug":"verifiable-random-pick-f6a25e0c","name":"Verifiable Random Pick","description":"Verifiable Random pick — string selection with or without replacement bound to a future drand round the server waits for (typically 3-6s) and verifies locally, with a reproducible proof transcript.","url":"https://verifiable-random.use.x402atlas.com/pick?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"count":{"type":"integer","maximum":1000,"minimum":1,"description":"Number of values to select."},"items":{"type":"array","items":{"type":"string","maxLength":256},"maxItems":1000,"minItems":1,"description":"Candidate strings to select from, at most 131072 UTF-8 bytes combined; duplicate values are allowed and remain distinguishable by original_indices."},"client_seed":{"type":"string","default":"","maxLength":256,"description":"Optional public domain-separation label, not secret entropy."},"replacement":{"type":"boolean","default":false,"description":"False selects each input position at most once; true makes independent draws and permits repeated positions."},"target_round":{"type":"integer","default":0,"minimum":0,"description":"0 asks the server to choose the next safe unpublished round; a positive value makes a client_fixed commitment and must still be safely in the future."},"algorithm_version":{"enum":["drand-hkdf-sha256-v1"],"type":"string","default":"drand-hkdf-sha256-v1","description":"Optional version guard; when supplied it must match the server's pinned derivation algorithm."}}},"responseSchema":{"type":"json","example":{"beacon":{"round":1,"scheme":"bls-unchained-g1-rfc9380","network":"quicknet","signature":"b55e7cb2d5c613ee0b2e28d6750aabbb78c39dcc96bd9d38c2c2e12198df95571de8e8e402a0cc48871c7089a2b3af4b","chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","randomness":"1466a6cd24e327188770752f6134001c64d6efcc590ccc26b721611ad96f165a","scheduled_time":"2023-08-23T15:09:27Z"},"result":{"items":["red","green"],"original_indices":[0,1]},"operation":"pick","example_only":true,"processed_at":"2023-08-23T15:09:27Z","request_hash":"bf26799b7b70582f93b7ab7e9ea1428d812387b32e3177c521ed38f09306abcc","target_round":1,"selection_mode":"example_only","algorithm_version":"drand-hkdf-sha256-v1"}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_xLgavIA9dTmh3Xbvtx4Ft","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Selects one or more strings from a provided list with or without replacement, using a future drand randomness beacon to ensure verifiable, unbiased selection with a reproducible proof transcript.","exampleAgentPrompt":"Pick 3 winners at random from this list of entries — Alice, Bob, Carol, Dave, Eve, Frank — without replacement, and give me a verifiable proof I can share to prove it was fair.","exampleUseCases":[{"title":"Provably fair giveaway winner","prompt":"I have a list of 50 contest entrants and need to pick 1 winner without replacement. Use verifiable randomness so I can show participants the result was fair — here are the names: [Alice, Bob, Carol, ...]"},{"title":"Random team assignment from roster","prompt":"Randomly pick 5 players from this squad roster without replacement for the starting lineup: Jordan, Morgan, Casey, Taylor, Riley, Drew, Sam, Alex. I need a proof transcript to show it was unbiased."},{"title":"Auditable random feature flag rollout","prompt":"I need to randomly select 3 feature names from this list to enable in the next experiment — 'dark_mode', 'new_checkout', 'ai_suggestions', 'sidebar_v2', 'inline_search' — with replacement allowed, and give me the drand proof so we can audit the selection later."}],"resultDescription":"Returns the selected string(s) from the input list, the drand round number used for randomness, a cryptographic randomness proof transcript that can be independently verified, and enough information to reproduce and confirm the selection outcome.","failureModes":["Timeout if drand beacon is unreachable or delayed beyond expected window","Invalid input if the list is empty or sample size exceeds list length when replacement is disabled","Payment failure if x402 payment header is missing or insufficient","Malformed request if required fields are missing from POST body","drand verification failure if the beacon round cannot be confirmed locally"],"whenToPreferThis":"Choose this endpoint when you need provably fair, auditable random selection from a discrete set of strings — especially for lotteries, giveaways, random assignments, or any scenario where participants must be able to independently verify the randomness was not manipulated. It is superior to pseudo-random alternatives when auditability and trustlessness matter. Prefer the dice endpoint for numeric outcomes or the shuffle endpoint for full permutations.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-02T12:32:21.716Z","isFirstParty":false,"canonicalSlug":"verifiable-random-pick-f6a25e0c"}