Skip to main content
POST
/
api
/
me
/
positions
/
redeem
Claim a settled position without paying gas
curl --request POST \
  --url https://core-api.adipredictstreet.com/api/me/positions/redeem \
  --header 'Content-Type: application/json' \
  --data '
{
  "marketId": "PM-WC26-R16-USA-WC26-1910V2",
  "outcomeIndex": 0
}
'
{
  "jobId": "4210",
  "status": "pending"
}

Body

application/json
marketId
string
required

Market identifier of the position to redeem — the marketId field from the Position payload (GET /api/me/positions).

Example:

"PM-WC26-R16-USA-WC26-1910V2"

outcomeIndex
integer
required

Outcome index of the held position (0 = YES, 1 = NO). For binary markets this scopes the CTF indexSets bitmask to the single side the user holds; for neg-risk it only disambiguates which Position row to read (the adapter burns both sides in one call regardless).

Required range: 0 <= x <= 255
Example:

0

auth
object

Owner-signed EIP-712 RedeemAuthorization bundle. REQUIRED only for API-key (partner) callers — it binds the redeem to the wallet owner so a spoofable X-User-Wallet header cannot force a third-party redeem. Privy-JWT (retail) callers omit it. Signed struct: RedeemAuthorization{owner, marketId, outcomeIndex, deadline} under domain {name:'PredictStreetRedeem', version:'1', chainId}.

Response

200 - application/json

Job accepted (idempotent on payload hash — an identical in-flight redeem returns the existing job).

jobId
string
required

Submitter job id (decimal string). Polling key for the status endpoint.

Example:

"4210"

status
string
required

Live submitter-job status: pending | building | submitted | confirmed | failed_permanent | expired.

Example:

"pending"