Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/wish-penalties-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
email: partner-api@wish.com
x-wish-dev-contact:
assignee: kwei
email: marketplace-external-api@contextlogic.com
description: 'Wish Marketplace V3 API
# General Information
The Wish Marketplace API will be using oAuth to authenticate in order to offer better security for its users
* Learn about oAuth here.'
version: 3.0.65
title: Wish Marketplace V3 Penalties API
servers:
- url: https://merchant.wish.com
description: V3 API endpoint
security:
- OAuth2: []
tags:
- name: Penalties
paths:
/api/v3/penalties/{id}:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Penalty'
description: successful operation
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
description: failed request
parameters:
- required: true
in: path
description: Id of the penalty to be retrieved.
name: id
schema:
type: string
format: object-id
tags:
- Penalties
summary: Get a penalty by ID
security:
- OAuth2:
- penalties:read
operationId: GetPenalty
x-code-samples:
- lang: python_requests
source: 'import requests
url = "https://merchant.wish.com/api/v3/penalties/{id}"
headers = {''authorization'': ''Bearer REPLACE_BEARER_TOKEN''}
response = requests.request("GET", url, headers=headers)
print(response.text)'
- lang: javascript_jquery
source: "var settings = {\n \"async\": true,\n \"crossDomain\": true,\n \"url\": \"https://merchant.wish.com/api/v3/penalties/{id}\",\n \"method\": \"GET\",\n \"headers\": {\n \"authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n }\n}\n\n$.ajax(settings).done(function (response) {\n console.log(response);\n});"
- lang: java_unirest
source: "HttpResponse<String> response = Unirest.get(\"https://merchant.wish.com/api/v3/penalties/{id}\")\n .header(\"authorization\", \"Bearer REPLACE_BEARER_TOKEN\")\n .asString();"
- lang: shell_curl
source: "curl --request GET \\\n --url 'https://merchant.wish.com/api/v3/penalties/{id}' \\\n --header 'authorization: Bearer REPLACE_BEARER_TOKEN'"
- lang: php_curl
source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n CURLOPT_URL => \"https://merchant.wish.com/api/v3/penalties/{id}\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_HTTPHEADER => array(\n \"authorization: Bearer REPLACE_BEARER_TOKEN\"\n ),\n));\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}"
description: Retrieve a single penalty by its ID
/api/v3/penalties/count:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PenaltyCount'
description: successful request
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
description: failed request
parameters:
- $ref: '#/components/parameters/created_at_min_param'
- $ref: '#/components/parameters/created_at_max_param'
- $ref: '#/components/parameters/reversed_at_min_param'
- $ref: '#/components/parameters/reversed_at_max_param'
tags:
- Penalties
summary: Count number of penalties
security:
- OAuth2:
- penalties:read
x-code-samples:
- lang: python_requests
source: 'import requests
url = "https://merchant.wish.com/api/v3/penalties/count"
querystring = {"created_at_min":"SOME_STRING_VALUE","created_at_max":"SOME_STRING_VALUE","reversed_at_min":"SOME_STRING_VALUE","reversed_at_max":"SOME_STRING_VALUE"}
headers = {''authorization'': ''Bearer REPLACE_BEARER_TOKEN''}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.text)'
- lang: javascript_jquery
source: "var settings = {\n \"async\": true,\n \"crossDomain\": true,\n \"url\": \"https://merchant.wish.com/api/v3/penalties/count?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE\",\n \"method\": \"GET\",\n \"headers\": {\n \"authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n }\n}\n\n$.ajax(settings).done(function (response) {\n console.log(response);\n});"
- lang: java_unirest
source: "HttpResponse<String> response = Unirest.get(\"https://merchant.wish.com/api/v3/penalties/count?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE\")\n .header(\"authorization\", \"Bearer REPLACE_BEARER_TOKEN\")\n .asString();"
- lang: shell_curl
source: "curl --request GET \\\n --url 'https://merchant.wish.com/api/v3/penalties/count?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE' \\\n --header 'authorization: Bearer REPLACE_BEARER_TOKEN'"
- lang: php_curl
source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n CURLOPT_URL => \"https://merchant.wish.com/api/v3/penalties/count?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_HTTPHEADER => array(\n \"authorization: Bearer REPLACE_BEARER_TOKEN\"\n ),\n));\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}"
operationId: CountPenalties
/api/v3/penalties:
get:
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Penalties'
description: successful request
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
description: failed request
parameters:
- $ref: '#/components/parameters/created_at_min_param'
- $ref: '#/components/parameters/created_at_max_param'
- $ref: '#/components/parameters/reversed_at_min_param'
- $ref: '#/components/parameters/reversed_at_max_param'
- required: false
in: query
description: The limit on number of penalties returned.
name: limit
schema:
default: 100
minimum: 1
type: integer
maximum: 500
format: int32
- required: false
in: query
description: Sort results by the given attribute. Enabled attributes are `created_at` and `reversed_at` Default order is `desc`, use `asc` to sort in reverse.
name: sort_by
schema:
default: created_at.desc
pattern: ^(created_at|reversed_at)(\.(asc|desc))?$
type: string
tags:
- Penalties
summary: Retrieve a list of penalties
security:
- OAuth2:
- penalties:read
x-code-samples:
- lang: python_requests
source: 'import requests
url = "https://merchant.wish.com/api/v3/penalties"
querystring = {"created_at_min":"SOME_STRING_VALUE","created_at_max":"SOME_STRING_VALUE","reversed_at_min":"SOME_STRING_VALUE","reversed_at_max":"SOME_STRING_VALUE","limit":"SOME_INTEGER_VALUE","sort_by":"SOME_STRING_VALUE"}
headers = {''authorization'': ''Bearer REPLACE_BEARER_TOKEN''}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.text)'
- lang: javascript_jquery
source: "var settings = {\n \"async\": true,\n \"crossDomain\": true,\n \"url\": \"https://merchant.wish.com/api/v3/penalties?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&sort_by=SOME_STRING_VALUE\",\n \"method\": \"GET\",\n \"headers\": {\n \"authorization\": \"Bearer REPLACE_BEARER_TOKEN\"\n }\n}\n\n$.ajax(settings).done(function (response) {\n console.log(response);\n});"
- lang: java_unirest
source: "HttpResponse<String> response = Unirest.get(\"https://merchant.wish.com/api/v3/penalties?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&sort_by=SOME_STRING_VALUE\")\n .header(\"authorization\", \"Bearer REPLACE_BEARER_TOKEN\")\n .asString();"
- lang: shell_curl
source: "curl --request GET \\\n --url 'https://merchant.wish.com/api/v3/penalties?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&sort_by=SOME_STRING_VALUE' \\\n --header 'authorization: Bearer REPLACE_BEARER_TOKEN'"
- lang: php_curl
source: "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n CURLOPT_URL => \"https://merchant.wish.com/api/v3/penalties?created_at_min=SOME_STRING_VALUE&created_at_max=SOME_STRING_VALUE&reversed_at_min=SOME_STRING_VALUE&reversed_at_max=SOME_STRING_VALUE&limit=SOME_INTEGER_VALUE&sort_by=SOME_STRING_VALUE\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n CURLOPT_HTTPHEADER => array(\n \"authorization: Bearer REPLACE_BEARER_TOKEN\"\n ),\n));\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}"
operationId: ListPenalties
components:
schemas:
PenaltyCount:
required:
- count
type: object
properties:
count:
type: integer
description: Number of penalties satisfying the query
format: int32
Penalty:
required:
- id
type: object
properties:
penalty_reason:
type: string
description: A explanation of why this penalty is generated
reversed_at:
type: string
description: The date and time when the penalty was reversed
format: date-time
related_entity_type:
enum:
- TICKET
- ORDER
- PRODUCT
- PRODUCT_VARIATION
- STORE
- PRODUCT_RATING
type: string
description: 'The name of the resource with which this penalty is associated. '
related_entity_id:
type: string
description: Id of the related entity. For instance, if related_entity_type=PRODUCT and related_entity_id=5d8d026e6973e02d0e998f37, it means this penalty is related to the product with id 5d8d026e6973e02d0e998f37
format: object-id
penalty_amount:
$ref: '#/components/schemas/Money'
created_at:
type: string
description: The date and time when the penalty was created
format: date-time
reversed:
type: boolean
description: Represent if the penalty has been reverted
id:
type: string
description: ID of the penalty
format: object-id
Penalties:
items:
$ref: '#/components/schemas/Penalty'
type: array
APIError:
required:
- code
- message
type: object
properties:
message:
type: string
code:
type: integer
format: int32
Money:
required:
- amount
- currency_code
type: object
properties:
amount:
format: float
type: number
description: Amount in decimals.
example: 10.4
currency_code:
format: iso-4217
type: string
description: The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html).
example: USD
parameters:
created_at_max_param:
schema:
type: string
format: date-time
required: false
description: Show penalties created before the given date time. Default to the date time of the latest created penalty if not provided
name: created_at_max
in: query
created_at_min_param:
schema:
type: string
format: date-time
required: false
description: Show penalties created after the given date time. Default to the date time of the earliest created penalty if not provided
name: created_at_min
in: query
reversed_at_max_param:
schema:
type: string
format: date-time
required: false
description: Show penalties reversed before the given date time. Default to the date time of the latest reversed penalty if not provided
name: reversed_at_max
in: query
reversed_at_min_param:
schema:
type: string
format: date-time
required: false
description: Show penalties reversed after the given date time. Default to the date time of the earliest reversed penalty if not provided
name: reversed_at_min
in: query
securitySchemes:
OpenID:
type: openIdConnect
openIdConnectUrl: https://merchant.wish.com/oidc/.well-known/openid-configuration
OAuth2:
type: oauth2
flows:
authorizationCode:
scopes:
payments:write: Update payments
tickets:write: Write customer tickets
epc:read: read EPC info
returns:write: Write returns
returns:read: Read returns
fbw:read: Read FBW
products:read: Read products
payments:read: Read payments
fbw:write: Write FBW
merchant:write: Write merchant
products:write: Write products
ratings:read: Read ratings
videos:read: Read videos
compliance:write: Write Compliance
product_boost:read: Read ProductBoost
listing_quality:read: Read listing quality
webhook:write: Write webhook
orders:read: Read orders
compliance:read: Read Compliance
fbs:read: Read FBS
penalties:read: Read penalties
penalties:write: Update penalties
infractions:read: Read infractions
orders:write: Update orders
merchant:read: Read merchant
notifications:write: Write notifications
announcements:read: Read announcements
product_boost:write: Write ProductBoost
notifications:read: Read notifications
webhook:read: Read webhook
qoo10:read: Read Qoo10
wps_parcel:write: Write WishParcel
wps_parcel:read: Read WishParcel
tickets:read: Read customer tickets
infractions:write: Write infractions
videos:write: Write videos
epc:write: write EPC info
tokenUrl: https://merchant.wish.com/api/v3/oauth/access_token
refreshUrl: https://merchant.wish.com/api/v3/oauth/refresh_token
authorizationUrl: https://merchant.wish.com/v3/oauth/authorize
externalDocs:
url: https://merchant.wish.com/documentation/api/v3/explorer
description: API explorer
x-wish-hidden: false