Spaces:
Running
Running
Add examples/: connector docs, OpenAPI for new endpoints, Hub listing copy, Stripe test script
387d030 verified | # RevAI β Hub Listing copy (paste into RapidAPI description / endpoint docs) | |
| > Explainable churn prediction & lead scoring. Send your customer data β by | |
| > spreadsheet, raw JSON, or a one-click Stripe connect β and get a risk score | |
| > **with the reasons behind it**, plus optional custom models trained on your | |
| > own data. | |
| ## Quick start (most users): /v1/predict/smart | |
| Send rows with **whatever column names you already have** β we auto-map them. | |
| All POSTs require `Content-Type: application/json`. | |
| ``` | |
| POST /v1/predict/smart | |
| Content-Type: application/json | |
| {"data":[ | |
| {"account_id":"ACME","signup_date":"2024-01-10","last_seen":"2026-05-10", | |
| "plan":"Monthly","missed_payments":3,"nps":2} | |
| ],"model_type":"churn"} | |
| ``` | |
| Returns each row scored (0β100), a risk level, the **reasons**, and a | |
| `field_mapping` report showing which of your columns mapped to which signal. | |
| ## Upload a spreadsheet: /v1/predict/csv (multipart) | |
| ``` | |
| POST /v1/predict/csv (multipart/form-data) | |
| file=@customers.csv model_type=churn | |
| ``` | |
| ## Connect Stripe: /v1/connect/stripe | |
| Paste a **restricted, read-only** Stripe key; we derive churn signals from | |
| billing (tenure, payment delays, subscription status). Key is never stored. | |
| ``` | |
| POST /v1/connect/stripe | |
| Content-Type: application/json | |
| {"stripe_key":"rk_live_...","limit":100,"model_type":"churn"} | |
| ``` | |
| ## Classic (exact fields): /v1/predict/churn and /v1/predict/lead | |
| ``` | |
| POST /v1/predict/churn | |
| Content-Type: application/json | |
| {"data":[{"customer_id":"C1","tenure_days":45,"days_since_last_login":18, | |
| "login_frequency_7d":1,"payment_delays_90d":2,"support_tickets_last_30d":4, | |
| "contract_type":"Month-to-Month","nps_score":3,"feature_adoption_score":45, | |
| "avg_session_minutes":8}]} | |
| ``` | |
| ``` | |
| POST /v1/predict/lead | |
| Content-Type: application/json | |
| {"data":[{"lead_id":"L1","demo_requested":1,"budget_confirmed":1, | |
| "engagement_score":80,"source":"referral"}]} | |
| ``` | |
| ## Train a custom model: /v1/train (β₯50 labeled rows) | |
| ``` | |
| POST /v1/train | |
| Content-Type: application/json | |
| {"data":[ /* β₯50 rows, each with features + a 0/1 label */ ], | |
| "target_column":"churned","model_type":"churn","model_name":"my-model"} | |
| ``` | |
| Then pass the returned `model_id` to any predict endpoint to use your model. | |
| ## Analyze a support call: /v1/analyze/call (multipart) | |
| ``` | |
| POST /v1/analyze/call (multipart/form-data) | |
| file=@call.mp3 openai_api_key=sk-... # you supply your own OpenAI key | |
| ``` | |
| --- | |
| **Common mistake:** a POST with no body returns `422 Field required`. That's | |
| expected β the API needs your data. Always send the JSON body (and the | |
| `Content-Type: application/json` header). | |