dynpricing CLI Queue API

This interface queues long running dynpricing CLI commands and exposes friendly documentation for each action.

🔑 Authentication Required

All API endpoints require authentication with an API key.

💡 Tip: Log in to the admin panel to test endpoints without entering an API key.

Two authentication methods are supported:

Method 1: Authorization Header RECOMMENDED

Authorization: ApiKey YOUR_API_KEY_HERE

Example:

curl -H "Authorization: ApiKey sk_live_xxx..." \
  https://dynpricingv3.test/api/external-data-bulk

Method 2: Query Parameter TESTING

?key=YOUR_API_KEY_HERE

Example (easy browser testing):

https://dynpricingv3.test/api/external-data?key=sk_live_xxx...

⚠️ Less secure (logged in URLs) - use for testing only

⚠️ Common Error: With header method, forgetting the ApiKey prefix results in 401 Unauthorized

📖 Read Full Authentication Guide

Swagger/OpenAPI: https://admin.elpricing.com/api/swagger.json

Queue Runner

Use the CLI helper to process queued jobs in order:

php go.php cron:list\nphp go.php cron:go

Queue logs are stored under var/api_queue/logs.

Endpoints

Data Preparation & Repricing

PreparationPOST | GET/prepare-data/domain

Queues go.php preparedata for an entire domain.

Interactive doc: https://admin.elpricing.com/api/prepare-data/domain?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain name as configured in DynPricing.profi-parfemy.cz
  • Queues the CLI command `php go.php preparedata --domain=...`.
curl -X POST https://admin.elpricing.com/api/prepare-data/domain
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz"}'
PreparationPOST | GET/prepare-data/domain-id

Queues go.php preparedata for selected product IDs within a domain.

Interactive doc: https://admin.elpricing.com/api/prepare-data/domain-id?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain name as configured in DynPricing.profi-parfemy.cz
idstringyesSingle product ID or comma separated list of IDs.667301,74500
waitbooleannoSet to true to run immediately and include CLI output in the response.true
  • Supports optional wait mode for immediate execution.
  • IDs are passed to the CLI as a comma separated list.
curl -X POST https://admin.elpricing.com/api/prepare-data/domain-id
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","id":"667301","wait":true}'
RepricingPOST | GET/reprice/domain

Queues go.php reprice for an entire domain.

Interactive doc: https://admin.elpricing.com/api/reprice/domain?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to reprice.profi-parfemy.cz
  • Queues the CLI command `php go.php reprice --domain=...`.
curl -X POST https://admin.elpricing.com/api/reprice/domain
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz"}'
RepricingPOST | GET/reprice/domain-id

Queues go.php reprice for selected product IDs.

Interactive doc: https://admin.elpricing.com/api/reprice/domain-id?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to reprice.profi-parfemy.cz
idstringyesSingle product ID or comma separated list of IDs.667301
strategy_idstringnoOptional strategy row ID to limit the repricing run to a single strategy.recYb7E8QiPbovU9d
waitbooleannoSet to true to run immediately and include CLI output in the response.false
  • Supports optional wait mode for immediate execution.
  • Provide strategy_id to reprice only a single strategy for the product.
curl -X POST https://admin.elpricing.com/api/reprice/domain-id
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","id":"667301","strategy_id":"recYb7E8QiPbovU9d","wait":false}'
TasksPOST | GET/tasks/feeds

Queues go.php feeds to refresh product feeds.

Interactive doc: https://admin.elpricing.com/api/tasks/feeds?html=1

  • Queues the CLI command `php go.php feeds`.
curl -X POST https://admin.elpricing.com/api/tasks/feeds
  -H "Authorization: ApiKey YOUR_API_KEY"

No parameters required. Use the buttons below to submit.

TasksPOST | GET/tasks/plafeeds

Queues go.php plafeeds to update PLA feed data.

Interactive doc: https://admin.elpricing.com/api/tasks/plafeeds?html=1

  • Queues the CLI command `php go.php plafeeds`.
curl -X POST https://admin.elpricing.com/api/tasks/plafeeds
  -H "Authorization: ApiKey YOUR_API_KEY"

No parameters required. Use the buttons below to submit.

Logs & Statistics

Logs & StatisticsGET/logs/product/{productId}

Returns the latest repricing change stored in the changes table for the given product.

Interactive doc: https://admin.elpricing.com/api/logs/product/667301?domain=profi-parfemy.cz&format=json&html=1

PathTypeRequiredDescriptionExample
productIdintegeryesInternal DynPricing product identifier.900258
ParameterTypeRequiredDescriptionExample
domainstringyesDomain where the repricing change occurred.profi-parfemy.cz
formatstringnoSet to xml to receive XML output (default json).json
  • Reads from the high-performance SSD `changes` table populated by the repricing engine.
  • Domain query parameter is mandatory.
  • Set `format=xml` to receive an XML payload instead of JSON.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/logs/product/{productId}?domain=profi-parfemy.cz&format=json"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Logs & StatisticsGET/logs/product-global/{productId}

Returns repricing change records for the given product across all domains.

Interactive doc: https://admin.elpricing.com/api/logs/product-global/667301?limit=50&html=1

PathTypeRequiredDescriptionExample
productIdintegeryesInternal DynPricing product identifier.667301
ParameterTypeRequiredDescriptionExample
whstringnoOptional warehouse (`wh`) filter matching the changes table column.main
limitintegernoMaximum number of records to return (default 50, max 500).50
formatstringnoSet to xml to receive XML output (default json).json
  • Reads from the SSD `changes` table without applying a domain filter.
  • Use the optional `wh` parameter to restrict results to a specific warehouse.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/logs/product-global/{productId}?limit=50"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Logs & StatisticsGET/logs/product-history/{productId}

Streams historical repricing results from BigQuery for the given product.

Interactive doc: https://admin.elpricing.com/api/logs/product-history/{productId}?html=1

PathTypeRequiredDescriptionExample
productIdintegeryesInternal DynPricing product identifier.734522
ParameterTypeRequiredDescriptionExample
domainstringnoOptional domain/project filter when querying BigQuery.profi-parfemy.cz
limitintegernoMaximum number of records to return (default 20, max 100).20
formatstringnoSet to xml to receive XML output (default json).json
  • Runs a read-only query against `dynpricing.dynpricing_logs` in BigQuery.
  • Nested competition and processing metadata are returned exactly as stored in BigQuery.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/logs/product-history/{productId}?limit=20&format=json"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Logs & StatisticsGET/logs/project

Returns recent repricing logs for an entire project/domain without product filtering.

Interactive doc: https://admin.elpricing.com/api/logs/project?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesRequired domain/project filter.profi-parfemy.cz
maxageintegernoMaximum age in days (default 31).31
limitintegernoMaximum number of records to return (default 1000).1000
  • Reads from the high-performance MySQL repricing_logs table.
  • Returns logs for all products within the specified domain.
  • Default time range is last 31 days.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/logs/project?domain=profi-parfemy.cz&maxage=31&limit=1000"
Logs & StatisticsGET/logs/project-history

Returns historical repricing logs for an entire project/domain from BigQuery without product filtering.

Interactive doc: https://admin.elpricing.com/api/logs/project-history?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesRequired domain/project filter.profi-parfemy.cz
maxageintegernoMaximum age in days (default 31).31
limitintegernoMaximum number of records to return (default 1000).1000
formatstringnoSet to xml to receive XML output (default json).json
  • Runs a read-only query against BigQuery for historical project data.
  • Returns logs for all products within the specified domain.
  • Default time range is last 31 days.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/logs/project-history?domain=profi-parfemy.cz&maxage=31&limit=1000&format=json"

AI Tools

AI ToolsPOST/explain_pricing

🤖 Uses AI to explain pricing decisions in plain language for non-technical users.

Interactive doc: https://admin.elpricing.com/api/explain_pricing?html=1

ParameterTypeRequiredDescriptionExample
promptstringyesThe prompt containing pricing data to explain.
  • 🤖 Uses LiteLLM API for AI-powered explanations
  • 📝 Returns plain language explanation of pricing decisions
  • ⚙️ Requires LiteLLM configuration in app.config.php
curl -X POST https://admin.elpricing.com/api/explain_pricing
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"prompt":"Explain why product X costs Y..."}'

Diagnostics

DiagnosticsGET | DELETE/pricing-tags

🏷️ **Pricing diagnostics system** - tracks why pricing decisions were made. Automatically records when products hit guardrails (min/max price), margin issues (below cost, low margin), or custom tags from DSL rules. Use for monitoring pricing health and identifying problematic products.

Interactive doc: https://admin.elpricing.com/api/pricing-tags?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to filter tags for.profi-parfemy.cz
actionstringnoAction type: stats (default), products, product, global.stats
tagstringnoFilter by specific tag name (for action=products).min_margin_hit
product_idintegernoProduct ID (for action=product).12345
severitystringnoFilter by severity: info, warning, error.warning
limitintegernoMaximum number of results (default 100).100
  • 🏷️ **Automatic tags**: min_price_hit, max_price_hit, min_margin_hit, max_margin_hit, below_cost, low_margin
  • 📊 **action=stats**: Returns tag statistics with counts and percentages
  • 📋 **action=products**: Lists products with specific tag
  • 🔍 **action=product**: Shows all tags for specific product
  • 🌐 **action=global**: Returns global statistics across all domains
  • 🗑️ **DELETE**: Clears all tags for domain (use with caution)
  • 📈 Use DSL operator `["tag", "name", "description"]` to add custom tags in rules
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/pricing-tags?domain=profi-parfemy.cz&action=stats"

External Data

External DataGET | POST | PUT/external-data

Manage external data for products. GET retrieves data with filtering. POST performs UPSERT using (dataid, name) as composite key: if record exists → UPDATE with new value, if not → INSERT new record. PUT updates by record ID.

Interactive doc: https://admin.elpricing.com/api/external-data?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum rows per page (default 100).50
pageintegerno1-indexed page when limit is provided.1
offsetintegernoExplicit row offset.0
dataidstringnoFilter by product ID. Required for POST/PUT.24
namestringnoFilter by or specify data name. Required for POST/PUT.competitor_price
valstringnoData value. Required for POST/PUT.299.90
datumstringnoTimestamp for the data (defaults to now for POST).2025-10-16 12:00:00
idintegernoID of specific record to update (PUT only).123
sortstringnoSort column (id, datum, dataid, name).datum
directionstringnoSort direction asc or desc.desc
  • GET lists external data from pricestest.external_data table with pagination.
  • ✅ POST performs UPSERT using (dataid, name) composite key. Record updated if exists, inserted if new. Required: dataid, name, val.
  • PUT updates by ID. Provide id + fields to update.
  • External data is accessible in DSL as: dsl.external_data.name = val
  • Example UPSERT: POST {"dataid":"24","name":"competitor_price","val":"299.90"}
  • For bulk upserts, use POST /external-data-bulk
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data"
External DataPOST/external-data-bulk

Bulk upsert multiple external data records in a single API call. Each record is upserted (updated if exists, inserted if new) based on (dataid, name) composite key. Significantly faster than individual POST calls for batch operations.

Interactive doc: https://admin.elpricing.com/api/external-data-bulk?html=1

ParameterTypeRequiredDescriptionExample
recordsarrayyesArray of external data records. Each must have: dataid, name, val. Optional: datum (auto-filled if omitted).[{"dataid":"24","name":"competitor_price","val":"299.90"},{"dataid":"25","name":"competitor_price","val":"349.90"}]
  • 📦 POST ONLY: Bulk upsert in single transaction.
  • 🔑 Composite key: (dataid, name). UPDATE if exists, INSERT if new.
  • 🚀 Performance: Much faster than individual POST /external-data calls.
  • ⚠️ Validation: All records validated. Batch rejected if any fails.
  • 💾 Database: pricestest.external_data table.
  • 📊 Response: Count of inserted/updated records + any errors.
  • 🔄 Use Cases: Batch competitor updates, scheduled sync, data migrations.
curl -X POST https://admin.elpricing.com/api/external-data-bulk
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"records":[{"dataid":"24","name":"competitor_price","val":"299.90"},{"dataid":"25","name":"competitor_price","val":"349.90"},{"dataid":"26","name":"supplier_stock","val":"15"}]}'
External DataGET/benydata

Get latest competition price data from external marketplaces. Returns simplified data structure with ID (dataid), STATUS, SHOP (domain), OLD_PRICE (price without shipping), CURRENCY, TIMESTAMP and URL. Excludes major marketplaces (Kaufland, Otto, Amazon, iDufte, eZebra) by default. Action (source) is REQUIRED.

Interactive doc: https://admin.elpricing.com/api/benydata?html=1

ParameterTypeRequiredDescriptionExample
actionstringyesData source/marketplace (e.g., idealo, heureka, google). REQUIRED - no data dump without specifying source.idealo
dataidstringnoProduct identifier (ZNZ ID) to filter by specific product. Optional - if omitted returns all products for given action.12324
onlystringnoComma-separated list of shop domains to INCLUDE (whitelist). Opposite of remove - returns ONLY these competitors.parfum-zentrum.de,notino.de
removestringnoComma-separated list of shop domains to exclude (blacklist). Defaults to: kaufland.de,otto.de,amazon.de,idufte,ezebra. Ignored if &only= is used.kaufland.de,otto.de,amazon.de
limitintegernoMaximum number of records per page. Leave empty or set to 0 for all records (no limit).50
pageintegernoPage number for pagination (1-indexed). Use with limit parameter.1
  • 📊 Returns competition data from raw_js table
  • 🔑 REQUIRED: action (source). Available sources: arukereso, ceneje, ceneo, compari, heureka, heurekask, idealo, idealoat, idealoit, jeftinije, pazaruvaj, skroutz, toppreise
  • 📝 Optional: dataid to filter by specific product
  • ✅ Use &only= to get ONLY specific competitors (whitelist)
  • 🚫 Use &remove= to exclude competitors (blacklist). Default: kaufland.de,otto.de,amazon.de,idufte,ezebra
  • 📄 Use &limit= and &page= for pagination
  • ⏰ Returns latest data for each competitor with timestamp and source URL, sorted by date DESC
  • 💰 OLD_PRICE = price without shipping costs
  • 💱 CURRENCY = price currency (EUR, CZK, etc.)
  • 🔐 Requires API Key authentication (use ?key=YOUR_API_KEY)
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/benydata?action=idealo"

Management

ManagementGET/admin/plafeeds

List recent PLA feed uploads with their metadata.

Interactive doc: https://admin.elpricing.com/admin/plafeeds?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum number of records to return (default 50).20
domainstringnoFilter by domain.profi-parfemy.cz
actionstringnoFilter by action/marketplace.heureka
  • GET returns recent PLA feed uploads from the plafeeds table.
  • Includes upload metadata like domain, action, filename, and upload date.
  • Used by the admin interface to display recent uploads.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/admin/plafeeds?limit=20&domain=profi-parfemy.cz"
ManagementDELETE/admin/plafeeds/{id}

Delete a specific PLA feed by ID.

Interactive doc: https://admin.elpricing.com/admin/plafeeds/{id}?html=1

PathTypeRequiredDescriptionExample
idintegeryesThe ID of the PLA feed to delete.34862
  • DELETE removes a PLA feed record from the plafeeds table.
  • This action cannot be undone.
curl -X DELETE -H "Authorization: ApiKey YOUR_API_KEY" https://admin.elpricing.com/api/admin/plafeeds/{id}

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

ManagementPOST/admin/plafeeds/{id}/process

Process/import a PLA feed file (XLSX/CSV) into structured data.

Interactive doc: https://admin.elpricing.com/admin/plafeeds/{id}/process?html=1

PathTypeRequiredDescriptionExample
idintegeryesThe ID of the PLA feed to process.34863
  • POST processes the uploaded PLA feed file and imports data.
  • This parses XLSX/CSV data into the structured database format.
curl -X POST https://admin.elpricing.com/api/admin/plafeeds/{id}/process
  -H "Authorization: ApiKey YOUR_API_KEY"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

ManagementGET/admin/plafeeds/{id}/download

Download the original PLA feed file (XLSX/CSV).

Interactive doc: https://admin.elpricing.com/admin/plafeeds/{id}/download?html=1

PathTypeRequiredDescriptionExample
idintegeryesThe ID of the PLA feed to download.34863
  • GET downloads the original uploaded PLA feed file.
  • Returns the file with appropriate headers for browser download.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/admin/plafeeds/{id}/download"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Monitoring

MonitoringGET/status

🔓 PUBLIC ENDPOINT - No API key required. Comprehensive system health check for monitoring. Checks data freshness (live, live_prices, orders < 3h old) and API key error rate (< 20% in last hour). Returns 200 OK if all checks pass, 503 Service Unavailable if any check fails. Supports both JSON and XML output formats.

Interactive doc: https://admin.elpricing.com/api/status?html=1

ParameterTypeRequiredDescriptionExample
formatstringnoOutput format: json (default) or xmljson
  • 🔓 PUBLIC ENDPOINT - No API key required!
  • ✅ Returns HTTP 200 if all checks pass
  • ❌ Returns HTTP 503 if any check fails
  • 📊 Data freshness: live, live_prices, orders tables must have records < 3h old
  • 🔑 API error rate: Must be < 20% in the last hour
  • 📝 Supports both JSON and XML output (use ?format=xml)
  • 🔧 Designed for external monitoring systems (Pingdom, UptimeRobot, etc.)
  • 💡 Use this endpoint in your monitoring dashboard to track system health
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/status?format=json"

Orders Data

Orders DataGET/orders

📦 Returns raw order items (line items) from the orders table with pagination and filtering. Each row represents a single product in an order.

Interactive doc: https://admin.elpricing.com/api/orders?html=1

ParameterTypeRequiredDescriptionExample
domainstringnoFilter by domain (e.g., profi-parfemy.cz, parfumsetmoi.fr).profi-parfemy.cz
oidstringnoFilter by order ID (e.g., PM4544521).PM4544521
productintegernoFilter by product ID.882725
date_fromstringnoStart date for filtering (YYYY-MM-DD format).2025-01-01
date_tostringnoEnd date for filtering (YYYY-MM-DD format).2025-12-31
curstringnoFilter by currency (e.g., EUR, CZK, PLN).EUR
partnerstringnoFilter by partner code.znz
limitintegernoMaximum number of records (default 100, max 1000).100
pageintegernoPage number for pagination (1-indexed).1
sortstringnoSort column: datum, price, ks, product, domain.datum
directionstringnoSort direction: asc or desc (default: desc).desc
  • 📦 Returns individual order line items (products)
  • 🔗 Each row links to an order header via oid field
  • 💰 price = total price for this line, priceks = price per unit
  • 💵 buy_price = purchase cost, buy_price_real = real purchase cost
  • 🏪 buy_sklad = warehouse code
  • 📅 Use date_from/date_to for date range filtering
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders?domain=profi-parfemy.cz&limit=50"
Orders DataGET/orders/detail/{oid}

📦 Returns all line items for a specific order ID.

Interactive doc: https://admin.elpricing.com/api/orders/detail/{oid}?html=1

PathTypeRequiredDescriptionExample
oidstringyesOrder ID (e.g., PM4544521).PM4544521
  • 📦 Returns all products in a specific order
  • 🔗 Links to ordersmain for order header data
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders/detail/{oid}"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Orders DataGET/ordersmain

📋 Returns order header records from the ordersmain table. Each row represents one complete order.

Interactive doc: https://admin.elpricing.com/api/ordersmain?html=1

ParameterTypeRequiredDescriptionExample
domainstringnoFilter by domain.profi-parfemy.cz
oidstringnoFilter by order ID.PM4544521
statusintegernoFilter by order status (0, 1, 2, etc.).2
sourcestringnoFilter by payment source (e.g., WPJ_GoPay, WPJ_PayPal).WPJ_GoPay
closedstringnoFilter by closed status (Y/N).N
date_fromstringnoStart date for filtering (YYYY-MM-DD).2025-01-01
date_tostringnoEnd date for filtering (YYYY-MM-DD).2025-12-31
curstringnoFilter by currency.EUR
limitintegernoMaximum records (default 100, max 1000).100
pageintegernoPage number (1-indexed).1
sortstringnoSort column: datum, price, status, domain.datum
directionstringnoSort direction: asc or desc.desc
  • 📋 Returns order headers (one row per order)
  • 🔢 status: 0=new, 1=processing, 2=completed, etc.
  • 💳 source: payment method (WPJ_GoPay, WPJ_PayPal, WPJ_KreditKarte)
  • 🔒 closed: Y/N indicates if order is finalized
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/ordersmain?domain=profi-parfemy.cz&limit=50"
Orders DataGET/ordersmain/detail/{oid}

📋 Returns full order header with all line items.

Interactive doc: https://admin.elpricing.com/api/ordersmain/detail/{oid}?html=1

PathTypeRequiredDescriptionExample
oidstringyesOrder ID.PM4544521
ParameterTypeRequiredDescriptionExample
include_itemsbooleannoInclude order line items (default: true).true
  • 📋 Returns order header plus all line items
  • 🔗 Combines data from ordersmain and orders tables
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/ordersmain/detail/{oid}"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Orders DataGET/orders/stats

📊 Returns aggregated statistics for orders with optional currency conversion to a unified currency.

Interactive doc: https://admin.elpricing.com/api/orders/stats?html=1

ParameterTypeRequiredDescriptionExample
domainstringnoFilter by domain (or leave empty for all domains).profi-parfemy.cz
date_fromstringnoStart date (YYYY-MM-DD). Default: last 30 days.2025-01-01
date_tostringnoEnd date (YYYY-MM-DD). Default: today.2025-12-31
convert_tostringnoConvert all amounts to this currency (e.g., EUR, CZK). Uses CNB exchange rates.EUR
group_bystringnoGroup results: day, week, month, domain, product, partner.day
  • 📊 Returns aggregated order statistics
  • 💱 Use convert_to to unify all currencies to one
  • 📈 Includes: total_orders, total_items, total_revenue, avg_order_value, total_margin
  • 📅 group_by options: day, week, month, domain, product, partner
  • 💰 Currency conversion uses Czech National Bank rates
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders/stats?date_from=2025-01-01&convert_to=EUR&group_by=day"
Orders DataGET/orders/stats/by-domain

📊 Returns order statistics grouped by domain with currency conversion.

Interactive doc: https://admin.elpricing.com/api/orders/stats/by-domain?html=1

ParameterTypeRequiredDescriptionExample
date_fromstringnoStart date (YYYY-MM-DD). Default: last 30 days.2025-01-01
date_tostringnoEnd date (YYYY-MM-DD).2025-12-31
convert_tostringnoConvert all amounts to this currency. Default: EUR.EUR
  • 📊 Per-domain statistics with totals
  • 💱 All amounts converted to unified currency
  • 📈 Includes: order_count, item_count, revenue, margin, avg_order_value
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders/stats/by-domain?date_from=2025-01-01&convert_to=EUR"
Orders DataGET/orders/stats/by-product

📊 Returns top-selling products with order statistics.

Interactive doc: https://admin.elpricing.com/api/orders/stats/by-product?html=1

ParameterTypeRequiredDescriptionExample
domainstringnoFilter by domain.profi-parfemy.cz
date_fromstringnoStart date (YYYY-MM-DD).2025-01-01
date_tostringnoEnd date (YYYY-MM-DD).2025-12-31
convert_tostringnoConvert all amounts to this currency.EUR
limitintegernoNumber of top products to return (default 50).50
sortstringnoSort by: quantity, revenue, margin, orders.revenue
  • 📊 Top products by sales/revenue/margin
  • 🏷️ Includes product ID and aggregated stats
  • 💱 Optional currency conversion
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders/stats/by-product?domain=profi-parfemy.cz&limit=20&sort=revenue"
Orders DataGET/orders/currencies

💱 Returns list of all currencies present in orders with current exchange rates.

Interactive doc: https://admin.elpricing.com/api/orders/currencies?html=1

  • 💱 Lists all currencies found in orders
  • 📈 Includes CNB exchange rates to CZK
  • 🔢 Shows order count per currency
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders/currencies"

No parameters required. Use the buttons below to submit.

Orders DataGET/orders/domains

🌐 Returns list of all domains with order data.

Interactive doc: https://admin.elpricing.com/api/orders/domains?html=1

  • 🌐 Lists all domains with orders
  • 🔢 Includes order count per domain
  • 📅 Shows date range of orders per domain
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/orders/domains"

No parameters required. Use the buttons below to submit.

PLA Feeds

Admin InterfaceGET/pla-feeds/landing-pages

List all landing pages from PLA feeds with filtering by action column.

Interactive doc: https://admin.elpricing.com/api/pla-feeds/landing-pages?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum number of results to return (default: 50).50
pageintegernoPage number for pagination (default: 1).1
searchstringnoSearch term for filtering results across domain, action, and url fields.example.com
actionstringnoFilter results by specific action value (e.g., "create", "update", "delete").create
sortstringnoSort column (datum, domain, action, url).datum
directionstringnoSort direction (asc or desc).desc
  • GET returns landing pages data from the plalps table with pagination metadata.
  • Results include total count, current page info, and landing page records.
  • Use the "action" parameter to filter results by specific action values.
  • Use the "search" parameter to search across domain, action, and url fields.
  • Example with action filter: {"action": "create", "limit": 50}
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/pla-feeds/landing-pages?limit=50&page=1&sort=datum&direction=desc"

Product Data

Product DataGET/data/product/{productId}

Returns the cached JSON payload for a product from pricestest.products_cache.

Interactive doc: https://admin.elpricing.com/api/data/product/{productId}?html=1

PathTypeRequiredDescriptionExample
productIdstringyesInternal DynPricing product identifier.900258
ParameterTypeRequiredDescriptionExample
domainstringyesDomain that owns the cached product entry.profi-parfemy.cz
  • Reads a single row from the pricestest.products_cache table and returns the decoded JSON payload.
  • Useful for debugging the prepared data that will be used during repricing.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/data/product/{productId}?domain=profi-parfemy.cz"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Product DataGET/overview/product-website

Returns count of active products in product_website table grouped by domain. Shows how many products are currently active per domain.

Interactive doc: https://admin.elpricing.com/api/overview/product-website?html=1

  • 📊 Returns product counts grouped by domain from product_website table
  • 🔢 Shows total number of active products per domain
  • 📈 Useful for monitoring product availability across domains
  • ⚡ Fast query - uses GROUP BY for aggregation
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/overview/product-website"

No parameters required. Use the buttons below to submit.

Product DataGET/overview/product-website-by-id

Returns product_website records for a specific Abra product ID, showing all domains where the product is active along with timestamps.

Interactive doc: https://admin.elpricing.com/api/overview/product-website-by-id?html=1

ParameterTypeRequiredDescriptionExample
idstringyesAbra product ID to look up.912016
  • 🔍 Looks up specific product by Abra ID in product_website table
  • 📋 Returns all domains where the product is active
  • ⏰ Includes datum (timestamp) when information was received
  • 📊 Useful for checking product availability across all shops
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/overview/product-website-by-id?id=912016"

Queue Management

MonitoringGET/queue/status

Get RabbitMQ queue status including message count, connection status, and queue analysis.

Interactive doc: https://admin.elpricing.com/api/queue/status?html=1

  • Returns queue connection status and message counts.
  • Shows breakdown by message type (prepare_data, reprice, save).
  • Useful for monitoring queue health before processing.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/queue/status"

No parameters required. Use the buttons below to submit.

MonitoringPOST/queue/process

Process pending messages in the repricing queue.

Interactive doc: https://admin.elpricing.com/api/queue/process?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum number of messages to process (default: 10, max: 100).10
  • Processes messages synchronously and returns results.
  • Default limit is 10 messages, maximum is 100.
  • Each message goes through: prepare_data -> reprice -> save workflow.
  • Results are saved to MySQL changes table and BigQuery.
curl -X POST https://admin.elpricing.com/api/queue/process
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"limit":10}'

Raw Data

Raw DataGET | POST/external-data/marketplaces

📊 **GET**: Retrieve paginated marketplace records from pricestest.raw_js table. No mandatory fields - use optional query filters (domain, src, mark, dataid, search, sort, direction) to refine results. Returns competitive intelligence data for analysis and debugging. **POST**: Insert a new marketplace capture record. Requires 5 mandatory fields (domain, src, dataid, price, currency). All other fields are optional.

Interactive doc: https://admin.elpricing.com/api/external-data/marketplaces?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum number of rows to return per page (default 200).100
pageintegerno1-indexed page when used together with limit.2
offsetintegernoExplicit row offset (overrides page).0
searchstringnoCase-insensitive search across domain, source, LP ID, URL, and mark.heureka
domainstringnoFilter rows captured for a specific domain.example-shop.cz
srcstringnoFilter by collection source (e.g. heureka, google).heureka
markstringnoFilter by integration mark or label.promo
dataidintegernoExact numeric identifier from the raw data row.123456
urlstringnoFilter rows whose URL contains the provided substring./product/123
sortstringnoSort column (datum, domain, src, price, shipping).datum
directionstringnoSort direction asc or desc.desc
datumstringnoTimestamp for POST/PUT payloads (defaults to current time when omitted).2025-09-26 10:30:00
lpidstringnoMarketplace LP identifier. Required when creating or updating a row.987654
exiturlstringnoLanding page the crawler exited to. Required for POST/PUT.https://example-shop.cz/cart
lpstringnoLogical landing page identifier (required for POST/PUT).default
titlestringnoCaptured product title (required for POST/PUT).Test Product 250 ml
pricenumbernoCaptured price including currency (required for POST/PUT).199.9
shippingnumbernoShipping fee that accompanied the offer (required for POST/PUT).0
  • 📊 **GET OPERATION**: View-only. No mandatory fields. Optional filters: domain, src, mark, dataid, search, sort, direction, limit, page, offset.
  • ✏️ **POST OPERATION**: Creates new record. Mandatory fields: domain, src, dataid, price, currency. Optional: datum, lpid, url, exiturl, lp, title, shipping, mark, price_sale.
  • 🔑 Required POST fields: domain, src, dataid, price, currency
  • 📝 Example POST: {"domain":"example-shop.cz","src":"heureka","dataid":123456,"price":199.9,"currency":"CZK"}
  • 💡 For bulk imports, use POST /external-data/marketplaces-bulk instead.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/marketplaces?limit=50&domain=example-shop.cz&src=heureka"
Raw DataPOST/external-data/marketplaces-bulk

Bulk insert multiple marketplace capture records in a single API call. Accepts an array of marketplace records and inserts them all at once, significantly improving performance for large data imports. This endpoint processes each record with the same validation as the single POST endpoint but in batch mode. Ideal for crawler jobs, scheduled imports, or data migrations where hundreds or thousands of marketplace records need to be inserted efficiently.

Interactive doc: https://admin.elpricing.com/api/external-data/marketplaces-bulk?html=1

ParameterTypeRequiredDescriptionExample
recordsarrayyesArray of marketplace record objects. Each object must contain required fields: domain, src, dataid, price, currency. Optional: datum, lpid, url, exiturl, lp, title, shipping, mark, price_sale.[{"domain":"shop1.cz","src":"heureka","dataid":100,"price":299,"currency":"CZK","url":"https://shop1.cz/product/100","price_sale":249},{"domain":"shop2.cz","src":"heureka","dataid":200,"price":499,"currency":"EUR","url":"https://shop2.cz/item/200"}]
  • 📦 **POST OPERATION ONLY**: Bulk insert multiple marketplace records in a single transaction.
  • 🚀 Performance: Faster than calling POST /external-data/marketplaces multiple times.
  • 🔑 Required fields per record: domain, src, dataid, price, currency
  • 📝 Optional fields per record: datum, lpid, url (IURL), exiturl, lp, title, shipping, mark, price_sale
  • 🔗 URL Field: Use "url" to store the product page URL (IURL) for each marketplace record
  • ⚠️ Validation: Each record is validated. If any fails validation, entire batch is rejected.
  • 💾 Database: All records inserted into pricestest.raw_js table.
  • 📊 Response: Returns count of inserted records plus any error details.
  • 🔄 Use Cases: Scheduled crawler imports, data migrations, batch competitive intelligence updates.
curl -X POST https://admin.elpricing.com/api/external-data/marketplaces-bulk
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"records":[{"domain":"shop1.cz","src":"heureka","dataid":100,"price":299,"currency":"CZK","url":"https://shop1.cz/product/100","price_sale":249},{"domain":"shop3.cz","src":"google","dataid":300,"price":199,"currency":"EUR","url":"https://shop3.cz/item/300"}]}'
Raw DataGET | PUT | DELETE/external-data/marketplaces/{id}

📊 **GET**: Retrieve a single marketplace record by ID (no mandatory fields). **PUT**: Update record with mandatory fields (domain, src, dataid, price, currency). **DELETE**: Remove the record.

Interactive doc: https://admin.elpricing.com/api/external-data/marketplaces/{id}?html=1

PathTypeRequiredDescriptionExample
idintegeryesNumeric identifier from pricestest.raw_js.123456
ParameterTypeRequiredDescriptionExample
datumstringnoTimestamp for the capture. Required when updating.2025-09-26 10:30:00
srcstringnoData source identifier (required for PUT).heureka
lpidstringnoMarketplace list/product ID (required for PUT).987654
urlstringnoProduct detail URL (required for PUT).https://example-shop.cz/product/123
domainstringnoOwning domain (required for PUT).example-shop.cz
exiturlstringnoExit URL captured by the crawler.https://example-shop.cz/cart
lpstringnoLanding page identifier.default
dataidintegernoNumeric identifier supplied by the marketplace.123456
titlestringnoCaptured product title.Test Product 250 ml
pricenumbernoCaptured price value.199.9
shippingnumbernoCaptured shipping fee.0
markstringnoIntegration mark flag.promo
  • GET returns the raw row including pricing metadata.
  • PUT expects the same JSON shape as POST to update the capture.
  • DELETE permanently removes the capture from pricestest.raw_js.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/marketplaces/{id}"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Raw DataGET | POST/external-data/priceean

List price captures by EAN or insert a new capture.

Interactive doc: https://admin.elpricing.com/api/external-data/priceean?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum number of rows per page (default 200).100
pageintegerno1-indexed page when using limit.1
offsetintegernoExplicit offset. Overrides page when supplied.0
searchstringnoFree-text search across domain, URL, EAN, and partner ID.parfem
domainstringnoFilter captures for a specific domain.example-shop.cz
tagstringnoFilter by tag value.retail
eanstringnoFilter by exact EAN.8592331234567
instockstringnoAvailability flag captured from the source (required for POST/PUT).in_stock
partneridstringnoUpstream partner identifier (required for POST/PUT).SKU-123
sortstringnoSort column (datum, recrawled, domain, tag, ean, price, price_full, confidence, instock).datum
directionstringnoSort direction asc or desc.desc
datumstringnoTimestamp for the primary capture (auto-filled when omitted).2025-09-26 10:30:00
recrawledstringnoTimestamp of the latest recrawl (auto-filled when omitted).2025-09-26 11:00:00
domainbasestringnoNormalized domain base for grouping results.example-shop.cz
confidencenumbernoMatch confidence between 0 and 1 (required for POST/PUT).0.97
pricenumbernoDetected price (required for POST/PUT).249.9
price_fullnumbernoDetected full price before discounts (required for POST/PUT).279.9
curstringnoISO currency code (required for POST/PUT).CZK
urlstringnoOrigin URL of the capture (required for POST/PUT).https://example-shop.cz/product/123
  • GET returns data from pricestest.priceean including metadata and pagination info.
  • POST inserts a new capture. Example JSON body: {"datum":"2025-09-26 10:30:00","recrawled":"2025-09-26 11:00:00","domain":"example-shop.cz","domainbase":"example-shop.cz","tag":"retail","ean":"8592331234567","confidence":0.97,"price":249.9,"price_full":279.9,"cur":"CZK","url":"https://example-shop.cz/product/123","instock":"in_stock","partnerid":"SKU-123"}.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/priceean?limit=50&domain=example-shop.cz&tag=retail"
Raw DataGET | PUT | DELETE/external-data/priceean/{id}

Fetch, update, or delete a price capture by numeric ID.

Interactive doc: https://admin.elpricing.com/api/external-data/priceean/{id}?html=1

PathTypeRequiredDescriptionExample
idintegeryesIdentifier from the pricestest.priceean table.987654
ParameterTypeRequiredDescriptionExample
datumstringnoPrimary capture timestamp.2025-09-26 10:30:00
recrawledstringnoTimestamp of the recrawl.2025-09-26 11:00:00
domainstringnoOwning domain.example-shop.cz
domainbasestringnoNormalized domain base.example-shop.cz
tagstringnoTag supplied during capture.retail
eanstringnoEAN that uniquely identifies the product.8592331234567
confidencenumbernoMatch confidence score.0.97
pricenumbernoDetected price value.249.9
price_fullnumbernoDetected full price before discounts.279.9
curstringnoISO currency code.CZK
urlstringnoSource URL.https://example-shop.cz/product/123
instockstringnoAvailability flag.in_stock
partneridstringnoUpstream partner identifier.SKU-123
  • GET returns the stored price capture by ID.
  • PUT expects the same JSON structure produced by the list endpoint.
  • DELETE removes the capture from pricestest.priceean.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/priceean/{id}"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Raw DataGET/external-data/products-cache

List cached product data from pricestest.products_cache table.

Interactive doc: https://admin.elpricing.com/api/external-data/products-cache?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum number of rows per page (default 50).50
pageintegerno1-indexed page when using limit.1
offsetintegernoExplicit offset. Overrides page when supplied.0
domainstringnoFilter cached products for a specific domain.example-shop.cz
product_idstringnoFilter by product ID (supports partial matching).PROD123
age_hoursintegernoShow only cache entries newer than specified hours.24
sortstringnoSort column (cache_date, domain, product_id).cache_date
directionstringnoSort direction (asc, desc).desc
  • Returns paginated data from pricestest.products_cache table with filtering and sorting capabilities.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/products-cache?limit=20&domain=example-shop.cz&sort=cache_date&direction=desc"
Raw DataGET | POST/external-data/direct-sites

List direct site captures or insert a new observation.

Interactive doc: https://admin.elpricing.com/api/external-data/direct-sites?html=1

ParameterTypeRequiredDescriptionExample
limitintegernoMaximum rows per page (default 200).100
pageintegerno1-indexed page when limit is provided.1
offsetintegernoExplicit row offset.0
searchstringnoFilter by substring across domain, action, and URL.restock
domainstringnoFilter records for a specific domain.example-shop.cz
actionstringnoFilter by recorded action.restock
dataidintegernoFilter by numeric direct site identifier.3456
urlstringnoFilter by substring in the URL./stock/notification
sortstringnoSort column (datum, domain, action, dataid).datum
directionstringnoSort direction asc or desc.desc
datumstringnoTimestamp of the event (defaults to now when omitted).2025-09-26 12:00:00
  • GET lists entries from pricestest.plalps with pagination metadata.
  • POST inserts a new direct site entry. Example JSON body: {"datum":"2025-09-26 12:00:00","domain":"example-shop.cz","action":"restock","dataid":3456,"url":"https://example-shop.cz/stock/notification"}.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/direct-sites?limit=50&domain=example-shop.cz&action=restock"
Raw DataGET | PUT | DELETE/external-data/direct-sites/{id}

Fetch, update, or delete a direct site event by ID.

Interactive doc: https://admin.elpricing.com/api/external-data/direct-sites/{id}?html=1

PathTypeRequiredDescriptionExample
idintegeryesIdentifier from the pricestest.plalps table.3456
ParameterTypeRequiredDescriptionExample
datumstringnoTimestamp of the capture.2025-09-26 12:00:00
domainstringnoOwning domain.example-shop.cz
actionstringnoRecorded action.restock
dataidintegernoNumeric data identifier.3456
urlstringnoSource URL.https://example-shop.cz/stock/notification
  • GET returns the raw direct site row by ID.
  • PUT updates the row; provide the same JSON structure as POST.
  • DELETE removes the entry from pricestest.plalps.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/external-data/direct-sites/{id}"

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Reference Data

Reference DataGET/product-attributes

Get complete product attributes catalog with product ID, name (nazev), and registry number (regcis) from product_attributes1 table. Includes external_data (e.g., elnino_id) merged directly into each product. Returns ~89,000 records.

Interactive doc: https://admin.elpricing.com/api/product-attributes?html=1

  • 📦 Returns complete product catalog (~89,000 records)
  • 📊 Data sources: product_attributes1 + external_data (testing_data database)
  • 🔑 Base columns: product (ID), nazev (name), regcis (registry number)
  • � External data merged directly: elnino_id and other external keys
  • 🎯 Filter by external data: Use <code>?need=elnino_id</code> to return only products with that key
  • 💡 Example: <code>/api/product-attributes?need=elnino_id</code> returns ~24,000 products
  • 📝 Multiple filters: <code>?need=key_name</code> works with any external_data key
  • 🔢 Limit results: Use <code>?limit=100</code> to get only first 100 products
  • ⚡ Fast testing: <code>/api/product-attributes?limit=10</code> for quick API tests
  • 🔀 Combine params: <code>?need=elnino_id&limit=50</code> for filtered + limited results
  • �💾 Response size: ~5-10 MB JSON (full), ~2-3 MB (filtered)
  • ⚡ Consider caching the response if called frequently
  • 🔐 Requires API Key authentication
  • 📖 Use for product lookups, data synchronization, and external system mapping
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/product-attributes"

No parameters required. Use the buttons below to submit.

Repricing

RepricingGET/reprice/rules_for_product

Lists all strategies and rules that evaluate a product for a domain, including inactive records.

Interactive doc: https://admin.elpricing.com/api/reprice/rules_for_product?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to evaluate.profi-parfemy.cz
idstringyesProduct ID to evaluate.900258
include_inactivebooleannoSet to false to hide inactive strategies and rules (defaults to true).true
preparedatabooleannoSet to true to refresh cache before loading data (ensures fresh strategy/rule names).true
  • Mirrors the rule evaluation performed by the `go.php reprice` CLI command for a single product.
  • Evaluates rule filters against the product data and reports whether each rule would apply.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/reprice/rules_for_product?domain=profi-parfemy.cz&id=900258"
RepricingPOST/test-dsl-rule

Test a DSL rule with custom expression against a specific product without saving to database.

Interactive doc: https://admin.elpricing.com/api/test-dsl-rule?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to test against.profi-parfemy.cz
product_idintegeryesProduct ID to test the rule against.24
dsl_expressionjsonyesJSON DSL expression to test.{"rule": {"action": {"base_strategy": "cost_plus", "calculation": {"factor": 1.20}}}}
warehouse_idstringnoOptional warehouse ID (defaults to first available warehouse).01101000
  • Tests DSL expression without modifying database.
  • Returns calculated price, margin, and detailed execution log.
  • Useful for debugging and testing new DSL rules before deployment.
curl -X POST https://admin.elpricing.com/api/test-dsl-rule
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","product_id":24,"dsl_expression":{"rule":{"action":{"base_strategy":"cost_plus","calculation":{"factor":1.2}}}}}'
RepricingGET | POST/go_price

Universal repricing endpoint that accepts domain + strategy/rule/dsl and returns structured pricing data with execution trace.

Interactive doc: https://admin.elpricing.com/api/go_price?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to reprice (required).profi-parfemy.cz
strategy_idintegernoReprice all rules within this strategy.5
rule_idintegernoReprice specific rule (auto-detects strategy).42
dsljsonnoDirect DSL expression (requires product_id).{"rule":{"action":{"base_strategy":"cost_plus","calculation":{"factor":1.20}}}}
product_idstringnoProduct ID to reprice (required when using DSL, optional otherwise).900258
idstringnoAlias for product_id.900258
  • Returns structured JSON with: intro, data_used (DSL cache), processing_steps, dsl_used, final_price (with/without VAT).
  • Supports three modes: strategy_id (all rules), rule_id (single rule), dsl (direct DSL).
  • Used by both CLI reprice.php and /admin/debug for unified repricing logic.
  • Output includes complete execution trace and final prices in CZK with VAT.
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/go_price?domain=profi-parfemy.cz&strategy_id=5&product_id=900258"
RepricingGET | POST/go_price_v2

Engine V2 repricing endpoint with cached preparedata (24h TTL) and fresh DSL rules (never cached).

Interactive doc: https://admin.elpricing.com/api/go_price_v2?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain to reprice (required).parfumsetmoi.fr
product_idstringyesProduct ID to reprice.23155
strategy_idintegernoStrategy ID (uses domain default if not provided).19
forcebooleannoForce refresh of cached preparedata.false
debugbooleannoInclude debug information.false
  • Engine V2 architecture: preparedata cached 24h, DSL rules always fresh.
  • Use force=1 to bypass preparedata cache.
  • Returns cache_info with cache status and age.
  • Faster than V1 for cached products (~100ms vs ~2s).
curl -H "Authorization: ApiKey YOUR_API_KEY" "https://admin.elpricing.com/api/go_price_v2?domain=parfumsetmoi.fr&product_id=23155&strategy_id=19"
RepricingPOST/reprice_simulate

Simulates repricing using custom JSON data instead of database. Bypasses prepare_data entirely - you provide the product data directly and get the full repricing result with execution log.

Interactive doc: https://admin.elpricing.com/api/reprice_simulate?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain name or project ID to use for strategy/rule lookup.profi-parfemy.cz
datajsonyesComplete product data in the same format as prepare_data output. Use dsl_data for DSL variables, basic_data for product info, and competition for competitor prices.{"product_id":"900258","dsl_data":{"price_buy":450,"price_rrp":890,"current_price":699,"stock":15,"brand":"Calvin Klein","category":"parfemy","competition_count":3,"competition_min":620,"competition_max":750,"competition_avg":680},"basic_data":{"nazev_produktu":"CK One EDT 200ml","price_buy":450,"price_rrp":890},"competition":{"count":3,"products":[{"price":620,"shop":"parfemy.cz"},{"price":680,"shop":"notino.cz"},{"price":750,"shop":"elnino.cz"}]}}
strategy_idintegernoOptional: Test only specific strategy (default: all project strategies).5
rule_idintegernoOptional: Test only specific rule (default: all matching rules).42
  • Bypasses prepare_data and database entirely - uses provided JSON data directly.
  • DSL variables: price_buy, price_rrp, current_price, stock, brand, category, warehouse_cnt, competition_count/min/max/avg.
  • Competition array: include actual competitor prices for competition-based rules.
  • Returns complete execution log with all DSL evaluations and guardrail checks.
  • Does NOT save results to database or logs - pure simulation.
  • Useful for testing repricing logic with custom/hypothetical data.
curl -X POST https://admin.elpricing.com/api/reprice_simulate
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","data":{"product_id":"900258","dsl_data":{"price_buy":450,"price_rrp":890,"current_price":699,"stock":15,"brand":"Calvin Klein","category":"parfemy","warehouse_cnt":2,"competition_count":3,"competition_min":620,"competition_max":750,"competition_avg":680},"basic_data":{"nazev_produktu":"CK One EDT 200ml","price_buy":450,"price_rrp":890,"stock":15},"competition":{"count":3,"products":[{"price":620,"shop":"parfemy.cz"},{"price":680,"shop":"notino.cz"},{"price":750,"shop":"elnino.cz"}]}}}'
RepricingPOST/reprice_direct

Reprices a product using a text-based prompt OR direct DSL rules. Prompt is converted to DSL via N8N AI and cached. Returns pricing explanation and DSL validation results.

Interactive doc: https://admin.elpricing.com/api/reprice_direct?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain name or project ID.profi-parfemy.cz
datajsonyesComplete product data in the same format as prepare_data output.{"product_id":"900258","dsl_data":{"price_buy":450,"price_rrp":890,"current_price":699,"stock":15,"competition_count":3,"competition_min":620,"competition_max":750,"competition_avg":680}}
promptstringnoText description of the pricing rule. Either prompt OR rules is required.be cheapest on the market but maintain minimum 20% margin
rulesjsonnoDirect DSL rules as JSON. Use this instead of prompt to skip AI generation.["max", ["-", ["var", "dsl.competition.min_price"], 1], ["*", ["var", "dsl.price_buy"], 1.2]]
force_regeneratebooleannoSet to true to bypass cache and regenerate DSL from prompt.false
  • Use either "prompt" (AI generates DSL) OR "rules" (direct DSL) - one is required.
  • Response includes: generated_dsl, dsl_validation, pricing_explanation.
  • Generated DSL rules are cached for 7 days based on prompt hash.
  • Use force_regenerate=true to bypass cache and get fresh DSL.
  • DSL variables: dsl.price_buy, dsl.competition.min_price, dsl.competition.median_price, etc.
curl -X POST https://admin.elpricing.com/api/reprice_direct
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","prompt":"be cheapest on the market but maintain minimum 20% margin","data":{"product_id":"900258","dsl_data":{"price_buy":450,"price_rrp":890,"current_price":699,"stock":15,"competition_count":3,"competition_min":620,"competition_max":750,"competition_avg":680},"competition":{"count":3,"products":[{"price":620,"shop":"parfemy.cz"},{"price":680,"shop":"notino.cz"},{"price":750,"shop":"elnino.cz"}]}}}'
RepricingPOST/reprice-direct-bulk

Submit 100-10,000 products and get calculated prices in one call. Uses AI-generated DSL from text prompt OR direct rules. Returns JSON or CSV format with prices, DSL validation, and pricing explanations for all products.

Interactive doc: https://admin.elpricing.com/api/reprice-direct-bulk?html=1

ParameterTypeRequiredDescriptionExample
domainstringyesDomain name or project ID.profi-parfemy.cz
productsjsonyesArray of product data objects (100-10,000 items). Each product follows the same format as /reprice_direct data field.[{"product_id":"P001","dsl_data":{"price_buy":100,"competition_min":150,"price_rrp":200}},{"product_id":"P002","dsl_data":{"price_buy":200,"competition_min":280,"price_rrp":400}}]
promptstringnoText description of the pricing rule. Either prompt OR rules is required.be cheapest on the market but maintain minimum 20% margin
rulesjsonnoDirect DSL rules as JSON. Use this instead of prompt to skip AI generation.["max", ["-", ["var", "dsl.competition.min_price"], 1], ["*", ["var", "dsl.price_buy"], 1.2]]
formatstringnoResponse format: "json" (default) or "csv" for downloadable file.json
force_regeneratebooleannoSet to true to bypass DSL cache and regenerate from prompt.false
  • Use either "prompt" (AI generates DSL) OR "rules" (direct DSL) - one is required.
  • Response includes: generated_dsl, dsl_validation, pricing_reason for each product.
  • DSL is generated/validated once and applied to all products.
  • CSV includes pricing_reason column explaining each price.
  • Processing time: ~1-2 seconds per 1000 products.
  • Memory limit: 512MB, Time limit: 10 minutes.
curl -X POST https://admin.elpricing.com/api/reprice-direct-bulk
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","prompt":"be cheapest on the market but maintain minimum 20% margin","format":"json","products":[{"product_id":"P001","dsl_data":{"price_buy":100,"price_rrp":200,"current_price":180,"competition_count":3,"competition_min":150,"competition_avg":170}},{"product_id":"P002","dsl_data":{"price_buy":200,"price_rrp":400,"current_price":350,"competition_count":2,"competition_min":280,"competition_avg":320}},{"product_id":"P003","dsl_data":{"price_buy":50,"price_rrp":100,"current_price":89,"competition_count":5,"competition_min":75,"competition_avg":85}}]}'
RepricingPOST | GET/products/{productId}/reprice

Trigger repricing for a single product and send to all pricing routes (same as CLI command). Supports both GET and POST methods.

Interactive doc: https://admin.elpricing.com/api/products/{productId}/reprice?html=1

PathTypeRequiredDescriptionExample
productIdintegeryesProduct ID to reprice.24
ParameterTypeRequiredDescriptionExample
domainstringyesDomain name as configured in DynPricing.profi-parfemy.cz
forcebooleannoForce cache refresh before repricing (default: false).true
strategy_idintegernoOptional specific strategy ID to use.1
  • Queues prepare_data, reprice, and save operations via RabbitMQ.
  • Same workflow as CLI: php go.php reprice --domain=X --id=Y
  • Results are saved to MySQL changes table and BigQuery.
  • Price is sent to all configured pricing routes.
  • Supports both GET and POST methods for maximum compatibility.
curl -X POST https://admin.elpricing.com/api/products/{productId}/reprice
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"domain":"profi-parfemy.cz","force":true}'

Path parameters

Note: This endpoint uses path parameters. Use the "Open API Endpoint" button above to test it properly.

Rule Builder

RulesPOST/rules/build

Converts natural language pricing rule descriptions into structured DSL. For users who don't want to write DSL directly - simply describe what you want in plain text.

Interactive doc: https://admin.elpricing.com/admin/rules-builder.html

ParameterTypeRequiredDescriptionExample
descriptionstringyesNatural language description of the pricing rule you want to create.Match cheapest competitor minus 5 CZK, but keep at least 20% margin, never below 500 CZK
use_aibooleannoWhether to use AI for generation. Default: true. Set to false to use only pattern matching.true
force_regeneratebooleannoSet to true to bypass cache and regenerate DSL.false
  • Returns both structured DSL (conditions/action/guardrails) and JsonLogic DSL array.
  • AI generation is used by default, with pattern matching as fallback.
  • Results are cached for 7 days based on description hash.
  • Supported patterns: margins, offsets, floor/ceiling prices, competitor targeting.
  • Example patterns: "be 10% below competition", "min 25% margin", "never below 200 CZK".
curl -X POST https://admin.elpricing.com/api/rules/build
  -H "Authorization: ApiKey YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{"description":"Match cheapest competitor minus 5 CZK, but keep at least 20% margin, never below 500 CZK"}'