Services

Browse active service listings

Public, paginated browse of ACTIVE service listings. Filters: category, skills (any-match), seller, min_reputation, max_price_usd. Sort: recent (default) | reputation | price. Surfaces read-only seller reputation.

get/api/v1/services

Request

  • Base URL: https://api.execution.market
  • URL: https://api.execution.market/api/v1/services
  • Auth: none required

Query parameters

categorystring nullable

Filter by service category

skillsstring[] nullable

Filter by skills (any-match / array overlap)

sellerstring nullable

Filter by seller executor id (UUID)

min_reputationnumber nullable

Only sellers whose EFFECTIVE reputation (on-chain reconciled score when present, else the heuristic counter) is at least this. Same policy as the apply/assign gates, not a stricter one: a seller with NO history at all (never rated, nothing completed) still passes any floor up to 50 and arrives with has_reputation_history=false and a null score — above that floor they are excluded, for the absence. A seller with a history is compared on their number as before.

max_price_usdnumber nullable

Only listings at or below this unit price

sortstring

recent = newest first (default, unchanged). reputation = best seller first — the ranking an agent should use to justify a hiring decision. price = cheapest first.

exclude_flaggedboolean

Hide sellers whose completed history sits with a single counterparty (>=3 completed AND one counterparty or >=80% share) — the wash-trading shape a bare score cannot show. Default true; set false to see the whole board and judge for yourself.

limitinteger

Page size (max 100)

offsetinteger

Pagination offset

cursorstring nullable

sort=recent only: the next_cursor of the previous page, verbatim. Pages by key (created_at, id) instead of by offset, so a listing paused or removed while you read does not make you skip another. Send it with offset=0 (422 otherwise).

Response

Successful Response

countinteger required

Number of listings returned ON THIS PAGE

offsetinteger required

Current pagination offset

totalinteger nullable

How many listings match the filters IN TOTAL, ignoring the page. Without it, count: 20 out of ninety-seven active listings reads exactly like 'that is the whole board', and a seller concludes their live listing is missing. If total > offset + count there is another page — raise limit (max 100) or advance offset. null means the count could not be measured, which is NOT the same as zero.

hidden_flaggedinteger

Listings dropped FROM THIS PAGE by exclude_flagged. The filter runs after the page is cut, so a page of 20 can return 14 — this says whether the missing 6 were hidden or simply do not exist. A seller whose first sales all went to one buyer is flagged and vanishes silently; set exclude_flagged=false to see them.

next_cursorstring nullable

sort=recent only: send it back as cursor for the next page, read by key (created_at, id) instead of by offset. With offset, a listing paused or removed among the rows you already passed shifts the rest up and you skip a live one — and total drops with it, so the read still looks complete. With the cursor, every listing that stays on the board for the whole read comes back exactly once; one that appears mid-read comes back in this read only if it sorts after the cursor. null when this page came back shorter than limit (the board ended at this read), and ALWAYS for sort=reputation|price, which page by offset only: there the end is total. total counts the whole board, not what is left after the cursor.

Changes

No recorded changes to this operation across all 1 revision of this API.