Using the widget's JS API, the site owner has the ability to programmatically control the widget.

For example: On your site (in the header of the site) there is an input field for the URL and a "Buy Views" button. Using the setUrl method, you can copy data from your field to a similar field on the widget.

Use this to return all networks with their id:


In each network you will see the serviceTypes field. From there you need to take the services id.

Usage example:

mountTargetSelector: '#order-widget',
apiUrl: 'https:/api.url/',
apiToken: 'sometoken',
language: 'ru',
currency: 'RUB'
.onInit((widget, event) => {
widget.selectServices([1, 3])
widget.setURL('via API')
widget.setEmail('[email protected]')
console.log('getNetworks', widget.getNetworks())
console.log('getSelectedNetwork', widget.getSelectedNetwork())
console.log('getServices', widget.getServices())
—Āonsole.log('getSelectedServices', widget.getSelectedServices())
.onNetworkSelected((widget, id) => {
console.log('onNetworkSelected', id);
.onServicesSelected((widget, ids) => {
console.log('onServicesSelected', ids);
.onInvoiceCreated((widget, event) => {
console.log('onInvoiceCreated', event)
.onURLInput((widget, url) => {
console.log('onURLInput', 'getURL', widget.getURL())
.onEmailInput((widget, email) => {
console.log('onEmailInput', 'getEmail', widget.getEmail())
.onCost((widget, event) => {
console.log('onCost', event)
.onFormSend((widget) => {
Did this answer your question?