Skip to main content

Wildberries API client

Project description

wildberries-api codecov

Wildberries API client

Installation

# Sync only mode
pip install wildberries-api[sync]
# Async only mode
pip install wildberries-api[async]
# All modes
pip install wildberries-api[all]

Instantiating

There are several ways to work with the API (synchronous and asynchronous). Both interfaces have the same signatures, the only difference is the need to use async/await keywords.

from wb_api.sync_api import SyncAPI		# Sync mode
from wb_api.async_api import AsyncAPI		# Async mode
from wb_api.const import BaseURL


def main() -> None:
	api = SyncAPI.build(
		token="...",
		base_url=BaseURL,		# (optional) may be used for test circuits
	)

	# Do things here...


async def main() -> None:
	api = await AsyncAPI.build(
		token="...",
		base_url=BaseURL,		# (optional) may be used for test circuits
	)

	# Do things here...

	await api.close()

Where can I get token?

See official docs.

Common API

Check connection

# Sync mode
from wb_api.sync_api import SyncAPI


api = SyncAPI.build(...)
response = api.common.ping()

Docs: https://dev.wildberries.ru/openapi/api-information#tag/Proverka-podklyucheniya-k-WB-API

Feedback API

Check connection

# Sync mode
from wb_api.sync_api import SyncAPI


api = SyncAPI.build(...)
response = api.feedback.ping()

Docs: https://dev.wildberries.ru/openapi/api-information#tag/Proverka-podklyucheniya-k-WB-API

Check new questions and feedbacks existing

# Sync mode
from wb_api.sync_api import SyncAPI


api = SyncAPI.build(...)
response = api.feedback.check_new_feedbacks_questions()

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1new-feedbacks-questions/get

Get count of unanswered questions

# Sync mode
from wb_api.sync_api import SyncAPI


api = SyncAPI.build(...)
response = api.feedback.get_question_count_unanswered()

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions~1count-unanswered/get

Get count of questions

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionCountRequest


api = SyncAPI.build(...)
response = api.feedback.get_question_count()
# or
request = QuestionCountRequest(is_answered=False, ...)
response = api.feedback.get_question_count(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions~1count/get

Get question list

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionListRequest


api = SyncAPI.build(...)
request = QuestionListRequest(is_answered=False, take=100, skip=0)
response = api.feedback.get_question_list(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/get

Mark question as read

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionMarkAsReadRequest


api = SyncAPI.build(...)
request = QuestionMarkAsReadRequest(id="question-id", was_viewed=True)
response = api.feedback.mark_question_as_read(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/patch

Reject question

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionRejectRequest


api = SyncAPI.build(...)
request = QuestionRejectRequest.create("question-id", "reject-reason")
response = api.feedback.reject_question(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/patch

Add question answer

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionAnswerAddRequest


api = SyncAPI.build(...)
request = QuestionAnswerAddRequest.create("question-id", "question-answer")
response = api.feedback.add_question_answer(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/patch

Update question answer

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionAnswerUpdateRequest


api = SyncAPI.build(...)
request = QuestionAnswerUpdateRequest.create("question-id", "question-answer")
response = api.feedback.update_question_answer(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1questions/patch

Get question

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import QuestionGetRequest


api = SyncAPI.build(...)
request = QuestionGetRequest(id="question-id")
response = api.feedback.get_question(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Voprosy/paths/~1api~1v1~1question/get

Get count of unanswered feedbacks

# Sync mode
from wb_api.sync_api import SyncAPI


api = SyncAPI.build(...)
response = api.feedback.get_feedback_count_unanswered()

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1count-unanswered/get

Get count of feedbacks

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackCountRequest


api = SyncAPI.build(...)
response = api.feedback.get_feedback_count()
# or
request = FeedbackCountRequest(is_answered=False)
response = api.feedback.get_feedback_count(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1count/get

Get feedback list

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackListRequest


api = SyncAPI.build(...)
request = FeedbackListRequest(is_answered=False, take=100, skip=0)
response = api.feedback.get_feedback_list(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks/get

Get feedback supplier valuations

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackSupplierValuationsRequest


api = SyncAPI.build(...)
response = api.feedback.get_feedback_supplier_valuations()
# or
request = FeedbackSupplierValuationsRequest(locale="zh")
response = api.feedback.get_feedback_supplier_valuations(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1supplier-valuations/get

Report feedback text

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackTextReportRequest


api = SyncAPI.build(...)
request = FeedbackTextReportRequest(id="feedback-id", supplier_feedback_valuation=1024)
response = api.feedback.report_feedback_text(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1actions/post

Report feedback product

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackProductReportRequest


api = SyncAPI.build(...)
request = FeedbackProductReportRequest(id="feedback-id", supplier_product_valuation=1024)
response = api.feedback.report_feedback_product(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1actions/post

Add feedback answer

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackAnswerAddRequest


api = SyncAPI.build(...)
request = request = FeedbackAnswerAddRequest(id="feedback-id", text="feedback-answer")
response = api.feedback.add_feedback_answer(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1answer/post

Update feedback answer

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackAnswerUpdateRequest


api = SyncAPI.build(...)
request = FeedbackAnswerUpdateRequest(id="feedback-id", text="feedback-answer")
response = api.feedback.update_feedback_answer(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1answer/patch

Return order by feedback id

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackOrderReturnRequest


api = SyncAPI.build(...)
request = FeedbackOrderReturnRequest(feedback_id="feedback-id")
response = api.feedback.return_feedback_order(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1order~1return/post

Get feedback

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackGetRequest


api = SyncAPI.build(...)
request = FeedbackGetRequest(id="feedback-id")
response = api.feedback.get_feedback(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedback/get

Get archive feedback list

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.feedback.dataclass import FeedbackArchiveListRequest


api = SyncAPI.build(...)
request = FeedbackArchiveListRequest(take=100, skip=0)
response = api.feedback.get_feedback_archive_list(request)

Docs: https://dev.wildberries.ru/openapi/user-communication#tag/Otzyvy/paths/~1api~1v1~1feedbacks~1archive/get

Chat API

Get chat list

# Sync mode
from wb_api.sync_api import SyncAPI


api = SyncAPI.build(...)
response = api.chat.get_chat_list()

Docs: https://dev.wildberries.ru/docs/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1chats/get

Get chat event list

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.chat.dataclass import ChatEventListRequest


request = ChatEventListRequest(next=...)
response = api.chat.get_chat_event_list()
# or
response = api.chat.get_chat_event_list(request)

Docs: https://dev.wildberries.ru/docs/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1events/get

Notes

  • ChatEvent may contain expired reply_sign

Send chat message

# Sync mode
import os

from wb_api.sync_api import SyncAPI
from wb_api.chat.dataclass import ChatMessageCreateRequest
from wb_api.base.dataclass import File


# text message sending
request = ChatMessageCreateRequest(reply_sign="...", message="...")
response = api.chat.create_chat_message(request)
# file message sending
request = ChatMessageCreateRequest(
	reply_sign="...",
	file=[
		File(
			name="image.png",
			content=open("image.png", mode="rb"),
			content_type="image/png",
			content_length=os.path.getsize("image.png"),
		),
	],
)
response = api.chat.create_chat_message(request)

Docs: https://dev.wildberries.ru/docs/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1message/post

Notes

  • Maximum size of a single file is 5 MB;
  • Maximum size of all files is 30 MB;
  • See the list of supported formats in the WB documentation.

Download file

# Sync mode
from wb_api.sync_api import SyncAPI
from wb_api.chat.dataclass import FileDownloadRequest


request = FileDownloadRequest(download_id="<uuid>")
file = api.chat.download_file(request)

Docs: https://dev.wildberries.ru/docs/openapi/user-communication#tag/Chat-s-pokupatelyami/paths/~1api~1v1~1seller~1download~1%7Bid%7D/get

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wildberries_api-2.2.2.tar.gz (137.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wildberries_api-2.2.2-py3-none-any.whl (37.9 kB view details)

Uploaded Python 3

File details

Details for the file wildberries_api-2.2.2.tar.gz.

File metadata

  • Download URL: wildberries_api-2.2.2.tar.gz
  • Upload date:
  • Size: 137.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wildberries_api-2.2.2.tar.gz
Algorithm Hash digest
SHA256 6ac561a5733d7a523f0ee41c4592c41f351c84e1dd8184ce09f0f61360bd5703
MD5 1ad75ce7b587a3ece59ebe12db3c5e0b
BLAKE2b-256 bca18a8fa40b5d5760eae1781505bd834713bc97f51da539c39468fa5bfbc513

See more details on using hashes here.

Provenance

The following attestation bundles were made for wildberries_api-2.2.2.tar.gz:

Publisher: publish.yml on Kirill-Lekhov/wildberries-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wildberries_api-2.2.2-py3-none-any.whl.

File metadata

  • Download URL: wildberries_api-2.2.2-py3-none-any.whl
  • Upload date:
  • Size: 37.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wildberries_api-2.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 24709637ebe58e398f0e74482891931d037da902f9f9600ff8c4583ee6b4d91e
MD5 dd1783807b3b51cadeffb7452405b314
BLAKE2b-256 a89caffe2cb08e23929793198069b61b6a6b050c4d18081b71ada8817c8ca19c

See more details on using hashes here.

Provenance

The following attestation bundles were made for wildberries_api-2.2.2-py3-none-any.whl:

Publisher: publish.yml on Kirill-Lekhov/wildberries-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page