Dashboard Overview
Welcome back! Here's your visual search usage summary.
Usage Quota
Quick Actions
Product Management
Manage your indexed products for visual search
Indexed Products
0 products| Image | Product ID | Name | Quality | Category | Price | Actions |
|---|---|---|---|---|---|---|
Search Demo
Test your visual search with images or text
Drop an image here or click to upload
Supports JPEG, PNG, WebPUpload Multiple Images (up to 10)
Add image URLs to search with multiple images simultaneously
Search History
View and manage your recent searches
Saved Searches
Recent Searches
0 searches| Type | Query | Results | Time | Date | Actions |
|---|---|---|---|---|---|
Duplicate Detection
Find and manage near-duplicate products that may hurt search accuracy
Scan for Duplicates
Click "Scan Now" to find near-duplicate products with >95% visual similarity
Photo Quality Audit
Which product images are hurting conversion — and what to fix about each one. Computed from the same quality signals we index at upload time: resolution, sharpness, brightness, contrast.
Distribution
Most common problems
Lowest-quality products
0API Logs
View recent API requests and download archived logs
Recent Requests
| Time | Method | Endpoint | Status | Latency | IP |
|---|---|---|---|---|---|
| Loading logs... | |||||
Archived Logs
Older logs are archived to downloadable files (JSONL format). Files are kept for 3 months.
Click Refresh to check for archived logs.
Analytics
Detailed usage statistics and insights
API Requests Over Time
Request Breakdown
Top Performing
Daily Usage
| Date | Total Requests | Image Searches | Text Searches | Products Indexed |
|---|---|---|---|---|
Conversion Attribution
Revenue tied to search queries via/v1/search/feedback action=purchase
Top queries by revenue
| Query | Revenue | Orders | Units | AOV |
|---|---|---|---|---|
Filter usage
Trending queries (24h)
Zero-result queries
Demand-signal report — queries returning no products, grouped case-insensitively. Fix via synonyms or new inventory.| Query | Times run | Last seen |
|---|---|---|
Demand gaps
Popular queries whose results are frequently empty. Each row is a merchandising prompt: add synonyms, index more stock, or stock-order.| Query | Searches | Empty % | Last seen |
|---|---|---|---|
Rising searches
Queries whose last-7-day rate exceeds the prior baseline.NEW = no prior activity. Useful for inventory planning and homepage features.
| Query | 7d | Prior | Trend |
|---|---|---|---|
Conversion by search mode
Revenue, orders, AOV and conversion rate broken out by which kind of search surfaced the result — text, image, multipart upload, NL, or the widget variants. Drives where to invest in search relevance. Powered by/v1/search/analytics/conversion-by-mode; numbers update only
after merchants fire action=purchase feedback (with
order_value) tied to a search_id.
| Search mode | Searches | Orders | Conv. rate | Revenue | AOV |
|---|---|---|---|---|---|
API Keys & Credentials
Two ways to authenticate — pick one
Two ways to authenticate
Your backend can authenticate to the Trooply API two different ways. Pick one — you don't need both. The two credential types live on this page but are not interchangeable: an API key cannot be used as a client secret, and a client secret cannot be used as a Bearer token.
- Method 1 — API Key (recommended). A long-lived
sk_…token you put inAuthorization: Bearerheaders. Simpler. Scopable. Revocable. - Method 2 — OAuth client_credentials. Exchange a
client_id+sk_live_…secret for a short-lived JWT, then use the JWT. Use only if your SDK / framework requires it.
Not sure which to pick? Read API key or OAuth: which one do you actually need? — full comparison, decision tree, and the typo that locks people out.
Keep credentials server-side — for browser / storefront embeds use a public widget key from Widget → Public keys. Want to lock down your portal account? Turn on two-factor authentication.
Method 1 — API Keys
Long-lived sk_… tokens for direct Bearer auth. Recommended.
| Name | Key Prefix | Scopes | Created | Expires | Actions |
|---|---|---|---|---|---|
Keys are shown only once at creation. Lost it? Revoke and create a new one.
curl -H "Authorization: Bearer sk_YOUR_API_KEY" \
<BASE_URL>/v1/products/stats
Method 2 — OAuth client_credentials
Exchange these for a JWT at /oauth/token. Use only if your SDK requires OAuth 2.0.
—
—
starts with sk_live_ — stored hashed, only shown once at generate time
curl -X POST <BASE_URL>/oauth/token \
-d grant_type=client_credentials \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=sk_live_YOUR_SECRET
# → { "access_token": "eyJ…", "expires_in": 3600 }
# then:
curl -H "Authorization: Bearer eyJ…" <BASE_URL>/v1/products/stats
Heads-up: the client_secret starts with sk_live_ (Method 2). An API key from Method 1 starts with just sk_ — the two are not interchangeable.
Webhooks
Receive real-time notifications when events happen
Available Events
product.indexed
product.deleted
product.duplicate_detected
product.updated
bulk.completed
Team Management
Developer Portal
Team members with the Developer group can log in to test APIs, view docs, and integrate.
Team Members
Active members
| Name | Role | Last active | Actions | |
|---|---|---|---|---|
Billing & Subscription
Manage your plan, usage, and payment details
Free
Monthly API Usage
Plan Features
Invoice History
| Date | Amount | Status | Invoice |
|---|---|---|---|
Cancel Subscription
Your plan will downgrade to Free at the end of the current period.
Search Widget
Add visual search to your storefront with a single script tag
Customize
Use {product_id} as placeholder
Live Preview
Embed Code
Paste before </body> on your website:
Public keys
0 keys
Public keys (pk_live_…) are safe to embed in page source. They only work from an allow-listed origin, and only permit search reads — no indexing / admin. Replace the legacy data-client-secret embed with data-public-key as soon as you've created one.
| Name | Public key | Allowed origins | Rate limit | Active | Last used | Actions |
|---|---|---|---|---|---|---|
How It Works
1. Paste Code
Add the script tag before </body>
2. Users Search
Click the button to search by image or text
3. Find Products
AI results link to your product pages
Custom Fields
Define extra metadata columns for your catalog (vendor, season, SKU group, …). Any field marked Filterable shows up as a search filter for shoppers in the demo UI and API.
| Field key | Display name | Type | Enum values | Filterable | Required | Actions |
|---|---|---|---|---|---|---|
Send values with your indexing call, for example
{"product_id":"SKU-1","image_url":"…","metadata":{"vendor":"Samsung","season":"SS26"}}.
Then filter on them via POST /v1/search/url body
{"image_url":"…","filters":{"vendor":"Samsung"}}.
Merchandising Rules
Pin products to the top, boost them, or bury them from search results — per-query, per-category, or globally. Rules apply to every search path (image / text / voice).
| Type | When | Products | Effect | Active | Priority | Actions |
|---|---|---|---|---|---|---|
Rules fire in this order every search: Bury (drop buried SKUs) → Boost (multiply score) → Pin (force to top). Tie-break is priority ascending, then created_at descending.
Promo Banners
Render merchant-configured callouts inside every search result set — pass a sale, announce a drop, highlight a collection. Banners are scope-filtered (query / category / time-bounded) and surfaced on the response as promo_banners.
| Title | When | Position | CTA | Active | Priority | Actions |
|---|---|---|---|---|---|---|
Up to 3 banners are returned per search. Matching rule is priority ascending, then created_at descending. Scope semantics match merchandising rules; category_match fires when at least one result has metadata.category equal to the scope value.
Content Moderation
Review image moderation decisions and enforce a policy once you're comfortable with the thresholds.
Policy
Changes apply on the next image scored. Leave in shadow for at least a week before enforcing.
Per-category thresholds
Lower values flag more images. Defaults are tuned against hand-labelled fixtures — change only after reviewing shadow-mode distributions below.
Shadow-mode summary (7 days)
Category flag counts
Recent events
Last 50 scans across all surfaces. would_block = true means enforce mode would have returned 403.
Profile
Account identity, security, branding, and danger-zone actions.
Identity
How your account shows up in invoices, audit log, and team dashboards.
Security
Password, two-factor auth, and active sessions.
Change password
Two-factor auth
Active sessions
Branding
Logo URL surfaced to the search widget chrome.
Danger zone
Export your catalog or permanently delete the account.
Export catalog
Downloads a JSON file containing your profile + every product (metadata only — vector embeddings are rebuildable from images).
Delete account
Deactivates your account and irreversibly deletes the Qdrant collection (all indexed products + their embeddings). Billing and audit logs are kept for compliance.
Settings
Manage your account and API credentials
Account Information
API Credentials
-
—
Plan Limits
Referral Program
Invite others and earn extra Premium days! Both you and your referral get 7 bonus days.
Share this link. When someone signs up, you both get 7 extra Premium days.
Multilingual Settings
Enable auto-translation to automatically generate multilingual metadata when products are indexed. Search queries in any language are already supported by CLIP.
Automatically translates product name, category, etc. when indexed
White-Label Branding
Customize the search widget and portal with your brand identity (Enterprise plan).
Search Ranking Weights
Adjust how search results are ranked. Weights must total 100%. Higher weight = more influence on result ordering.
How visually similar the product looks (CLIP embedding)
Whether the product is the same type (shoes, bag, etc.)
Boost products with more clicks and purchases
Prefer products from the same category
Prefer products with similar shape/proportions
Prefer products with similar color palette
Smart Threshold
Automatically calculate the optimal similarity threshold for your product catalog.
Search A/B Testing
Compare two search weight configurations. Traffic is split 50/50 between variants.
No active experiment. Click "New Experiment" to start.
Danger Zone
Remove all indexed products. This cannot be undone.