---
title: "Browse current primary and secondary Area membership with public market terms, without changing any scored round"
method: GET
path: "/arena/placements"
tags: ["Arena"]
---

# Browse current primary and secondary Area membership with public market terms, without changing any scored round

`GET /arena/placements`

## Request

- Base URL: `https://kellian.app/api/v1`
- URL: `https://kellian.app/api/v1/arena/placements`
- Auth: none required

## Query parameters

- `area` 'crypto' | 'sports' | 'politics' | 'elections' | 'tech' | 'world' | 'ai' | 'gaming' | 'business' | 'fashion' | 'movies-tv' | 'music' | 'shopping' | 'beauty' | 'travel' | 'climate', required: The market's arena as a URL slug (one per `category` value except OTHER). Open enum: tolerate unseen values.
- `limit` integer
- `afterMarketId` integer
- `includeCards` 'true'

## Response `200`

Success

- object
  - `placements` object[], required
    - `id` string, uuid, required
    - `marketId` integer, required
    - `version` integer, required
    - `inputHash` string, required
    - `methodVersion` string, required
    - `state` 'pending' | 'placed' | 'needs_review' | 'excluded_from_competition', required
    - `area` 'crypto' | 'sports' | 'politics' | 'elections' | 'tech' | 'world' | 'ai' | 'gaming' | 'business' | 'fashion' | 'movies-tv' | 'music' | 'shopping' | 'beauty' | 'travel' | 'climate', nullable, required: The market's arena as a URL slug (one per `category` value except OTHER). Open enum: tolerate unseen values.
    - `secondaryAreas` string[], required
    - `eventGroupId` string, nullable, required
    - `occurrence` object, nullable, required
      - `authority` string, required
      - `key` string, required
      - `label` string, required
    - `evidence` object, required
      - `schemaVersion` 1, required
      - `origin` 'structured' | 'classifier' | 'operator', required
      - `reason` string, required
      - `proposedArea` 'crypto' | 'sports' | 'politics' | 'elections' | 'tech' | 'world' | 'ai' | 'gaming' | 'business' | 'fashion' | 'movies-tv' | 'music' | 'shopping' | 'beauty' | 'travel' | 'climate', nullable, required: The market's arena as a URL slug (one per `category` value except OTHER). Open enum: tolerate unseen values.
      - `sourceReview` object, nullable, required
        - `schemaVersion` 1, required
        - `kind` 'opening_source_review', required
        - `attribution` 'operator_reviewed', required
        - `sourceCard` object, required
          - `sourceKind` 'sports_fixture' | 'crypto_price' | 'source_series' | 'manual', required
          - `sourceKey` string, required
          - `proposition` string, required
          - `geography` string, required
          - `units` string, required
          - `publisher` string, required
          - `sourceUrl` string, uri, required
          - `observationStartsAt` string, date-time, required
          - `observationEndsAt` string, date-time, required
          - `expectedReleaseAt` string, date-time, required
          - `permittedVintage` string, required
          - `revisionPolicy` string, required
          - `exceptions` string, required
        - `resultAvailability` 'not_yet_known' | 'already_known' | 'uncertain', required
        - `basis` string, required
        - `artifacts` object[], required
          - `artifactUrl` string, uri, required
          - `artifactHash` string, required
          - `locator` string, required
          - `observedAt` string, date-time, required
          - `publishedAt` string, date-time, nullable, required
      - `competitions` object[], required
        - `id` string, required
        - `version` integer, required
      - `reviewedBy` string, nullable, required
      - `commandHash` string, nullable, required
    - `createdAt` string, date-time, required
    - `stale` boolean, required
    - `card` FactoryMarket
      - `id` integer, required
      - `address` string, required
      - `question` string, required
      - `settlement` 'onchain' | 'committed': Which engine settles this market's fills. `onchain` = the market contract holds collateral and outcome tokens, and every fill is its own Base transaction. `committed` = the venue's commit ledger holds them, a fill is paid the instant it matches, and fills are published to Base in batches as standard ERC-1155 transfers under a chained Merkle root — so a trade is recorded on Base a short time after it happens rather than at the moment it happens. Immutable per market, decided by the market's collateral.
      - `resolutionTime` string, required
      - `outcome` integer, required
      - `marketDate` string, nullable, required
      - `createdAt` string, nullable
      - `totalVolume` string, nullable
      - `seedAmount` string, nullable
      - `creationBondAmountWei` string, nullable
      - `creationBondSymbol` string, nullable
      - `q1` string, nullable
      - `q2` string, nullable
      - `q3` string, nullable
      - `category` 'CRYPTO' | 'SPORTS' | 'POLITICS' | 'ELECTIONS' | 'FINANCE' | 'TECH' | 'WORLD' | 'ECONOMY' | 'CULTURE' | 'WEATHER' | 'SCIENCE_HEALTH' | 'AI' | 'GAMING' | 'BUSINESS' | 'FASHION' | 'MOVIES_TV' | 'MUSIC' | 'SHOPPING' | 'BEAUTY' | 'TRAVEL' | 'CLIMATE' | 'DAILY_LIFE' | 'LOCAL' | 'SOCIAL' | 'FUN' | 'OTHER', required: The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.
      - `marketType` 'BINARY' | 'TERNARY'
      - `pricingModel` 'automated' | 'ORDERBOOK'
      - `supportsVoid` boolean
      - `prices` MarketPrices
        - `outcome1` number, required
        - `outcome2` number, required
        - `outcome3` number
      - `imageUrl` string, nullable
      - `closeTime` string, nullable
      - `outcome1Label` string, nullable
      - `outcome2Label` string, nullable
      - `outcome3Label` string, nullable
      - `openTime` string, nullable
      - `eventEndedAt` string, nullable
      - `tradingEndsAt` string, nullable
      - `createdBy` string, nullable
      - `creatorIdentity` FactoryMarketCreatorIdentity
        - `source` 'wallet' | 'agent', required
        - `displayName` string, nullable
        - `handle` string, nullable
        - `avatarUrl` string, nullable
      - `isPermissionless` boolean
      - `chainId` integer, required: Compiled protocol release chain ID (Base 8453).
      - `creatorContent` CreatorContentEnvelope: Opaque content envelope forwarded by the protocol and retained only as ephemeral live state.
        - `renderer` string, required: Free-form renderer identifier. Not validated against a closed list.
        - `data` object, required: Renderer-specific data (max 4096 bytes once JSON-serialized). Opaque to the protocol.
        - `label` string: Optional display label
        - `timestamp` integer: Unix ms (defaults to server time)
      - `marketTiming` MarketTimingSnapshot
        - `status` 'scheduled' | 'delayed' | 'in_progress' | 'paused' | 'completed', required
        - `source` string, required
        - `updatedAt` string, date-time, required
        - `observation` CreatorMarketObservation
          - `schemaVersion` 1, required
          - `sourceKey` string, required: Stable provider-namespaced occurrence, e.g. espn:basketball:nba:401123456.
          - `occurrenceId` string
          - `sourceRevision` string, required: Durable positive int64 observation sequence. A retry retains the original sequence.
          - `sourceSnapshotHash` string, required: SHA-256 of the canonical durable source snapshot; provenance, not a signature.
          - `observedAt` string, date-time, required
          - `timeBasis` 'provider_fetch' | 'creator_observation', required
          - `sourceUpdatedAt` string, date-time, nullable
          - `scheduledStartAt` string, date-time, nullable
          - `estimatedEndAt` string, date-time, nullable
          - `expectedResultAt` string, date-time, nullable
          - `actualStartAt` string, date-time, nullable
          - `actualEndAt` string, date-time, nullable: Known actual event end; never inferred from a completed poll.
          - `firstObservedCompletedAt` string, date-time, nullable: First observation of completion, distinct from the actual event end.
        - `receivedAt` string, date-time
        - `expectedStartTime` string, date-time
        - `expectedCloseTime` string, date-time
        - `expectedResolutionTime` string, date-time
        - `eventEndTime` string, date-time: When this market's real-world EVENT is expected to be over. Trading stops at the earlier of this instant and the market's on-chain closeTime, so a resolution buffer held open after the final whistle no longer accepts orders. Publish it when the market's immutable spec carries no reference end date, or to correct one; omit it on a later snapshot to clear it.
        - `note` string
        - `version` integer
      - `quoteSummary` MarketQuoteSummary
        - `observedAt` string, date-time, required
        - `expiresAt` string, date-time, required: Snapshot freshness cutoff, not an executable quote expiry.
        - `outcomes` object, required
          - `outcome1` object, required
            - `bestBidBps` integer, nullable, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
            - `bestAskBps` integer, nullable, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
          - `outcome2` object, required
            - `bestBidBps` integer, nullable, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
            - `bestAskBps` integer, nullable, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
          - `outcome3` object
            - `bestBidBps` integer, nullable, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
            - `bestAskBps` integer, nullable, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
        - `lastTrade` object, nullable
          - `outcome` union, required
            - 1
            - 2
            - 3
          - `priceBps` integer, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
          - `tradedAt` string, date-time, required
        - `initialReference` object, nullable
          - `kind` 'neutral' | 'source', required
          - `pricesBps` object, required
            - `outcome1` integer, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
            - `outcome2` integer, required: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
            - `outcome3` integer: Price in integer basis points (bps): 0–10000, where 10000 represents a full payout share.
          - `source` string, required
          - `observedAt` string, date-time, required
      - `commentCount` integer, nullable
      - `researchedAt` string, nullable
      - `latestFact` object, nullable
        - `date` string, date, required
        - `text` string, required
      - `analystsAverage` number, nullable
      - `topTraders` object, nullable
        - `outcome1` integer, required
        - `outcome2` integer, required
      - `priceChange24h` number, nullable
      - `sparkline` number[]
      - `followedSource` object, nullable
        - `name` string, required
        - `url` string, required
      - `contentChannel` ContentChannelDeclaration
        - `renderer` string, required
        - `label` string
        - `schemaHint` object
      - `resolutionCriteria` string, nullable
      - `description` string, nullable
      - `marketState` 'open' | 'closed' | 'creator_proposal' | 'challenge' | 'human_voting' | 'council_review' | 'resolved' | 'void', required: Canonical market state shared by every protocol surface.
      - `pricingTimestampMs` integer
      - `collateralToken` string, nullable
      - `collateralSymbol` string, nullable
      - `outcomeTokenAddress` string
      - `language` string, nullable
      - `eventSlug` string, nullable
      - `eventTitle` string, nullable
      - `geo` MarketGeoTag
        - `scope` 'city' | 'region' | 'country' | 'global', required: Precision of the tag. 'global' carries no place fields and renders unpinned.
        - `countryCode` string, nullable, required: ISO-3166-1 alpha-2 country code, gazetteer-validated. Null when scope is global.
        - `place` string, nullable, required: Display name of the resolved place (e.g. 'Kumamoto'). Null when scope is global.
        - `lat` number, nullable, required: Gazetteer-resolved latitude. Null when scope is global.
        - `lon` number, nullable, required: Gazetteer-resolved longitude. Null when scope is global.
        - `derivation` 'explicit' | 'entity_hq', nullable, required: 'explicit' = the question names the place; 'entity_hq' = derived from a named entity's headquarters (render visually distinct). Null when scope is global.
      - `creatorCategoryEditCount` integer, nullable
      - `creatorCategoryEditLimit` integer, nullable
      - `creatorVerified` boolean
      - `trustFlags` string[]
      - `creatorMarketsResolved` integer, nullable
      - `creatorReversalRate` number, nullable
      - `creatorMarketsVoided` integer, nullable
      - `creatorReputationTier` 'banned' | 'new' | 'established' | 'trusted' | 'expert' | 'legend'
      - `viewerVote` object, nullable
        - `outcome` union, required
          - 1
          - 2
          - 3
        - `castedAt` string, nullable, required
    - `scoreOwner` object, nullable: The actual admitted question in its immutable owning round. Prospective placement and secondary discovery never grant score credit.
      - `roundId` string, required
      - `roundName` string, required
      - `area` 'crypto' | 'sports' | 'politics' | 'elections' | 'tech' | 'world' | 'ai' | 'gaming' | 'business' | 'fashion' | 'movies-tv' | 'music' | 'shopping' | 'beauty' | 'travel' | 'climate', required: The market's arena as a URL slug (one per `category` value except OTHER). Open enum: tolerate unseen values.
      - `competition` string, required
      - `editionId` string, required
      - `editionName` string, required
    - `market` object
      - `chainId` integer, required
      - `address` string, nullable, required
      - `question` string, required
      - `resolutionCriteria` string, nullable, required
      - `outcomes` string[], required
  - `nextMarketId` integer, nullable, required

## Other responses

- `default`: Error response (RFC 9457 Problem Details for HTTP APIs)

---

[API](https://skmtc.dev/problee/apis/kellian-consumer-api.md) · [All operations](https://skmtc.dev/problee/apis/kellian-consumer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/problee/apis/kellian-consumer-api/revisions/2b8254b0ec57?raw)
