UC Partner data API: leads, invoices and credits
Urban Company Partner (listed on Play as UC Partner) is the Android app Urban Company — the Delhi-founded home-services marketplace formerly called UrbanClap — gives independent professionals so they can take and finish customer jobs. Beauticians, salon and spa specialists, cleaners, pest-control technicians and appliance-repair partners sign in with a phone OTP, choose a live profile, then work from a home board of new and ongoing requests, a booking calendar for availability and leave, an invoice screen that splits service charge from parts, a job-history list of completed bookings, and a credit-wallet recharge flow that settles through Paytm, Razorpay or Juspay. The app is the supply-side counterpart of Urban Company's consumer booking app and is used by partners in India plus the UAE and Saudi Arabia, sitting in the same home-services aggregator slot as Housejoy and other local marketplace tools for independent technicians.
Lead-credit wallets expose currentCredits and is_paytm_active next to the job invoice that splits _serviceCharge from _materialCost. New-request cards add leadId, formattedBookingTime and a budgetModel with ucQuote, minBudget and leadValue; calendar days list totalJobs beside leave rows that hold leaveSlots.
Partner-ops dashboards can reconcile open jobs against invoice _total and job-history totalAmount / invoiceAmount rows. Lending stacks can size float from currentCredits and Paytm balance. KYC bots can pull grouped finance sections typed bank_account, pan and gst. openData Studio turns those partner objects into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Generate partner OTP
POST
/v1/partner/otposintSends a one-time code to the partner phone for the selected country_id and isd_code; isMasterLogin flags a master-account login.
Auth: Unauthenticated. Device headers x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- phone
- signup
- resend
- country_id
- isd_code
- isMasterLogin
POST /v1/partner/otp HTTP/1.1 x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "phone": "9876543210", "signup": false, "resend": false, "country_id": "IN", "isd_code": "91" }{ "isMasterLogin": false }Verify partner OTP
POST
/v1/partner/sessionosintConfirms the OTP and returns the session token plus profiles[] with providerId, credits, newLeadCount and ongoingLeadCount used on the profile picker.
Auth: Unauthenticated OTP exchange. Response token is stored as otpToken and later prefixed Bearer by the session store.
- phone
- otp
- country_id
- isd_code
- device
- name
- android_id
- gcm_id
- application_type
- resolution
- token
- create_allowed
- is_test_login
- newSignUpEnabled
- leadId
- title
- profiles
- providerId
- category
- address
- isLive
- credits
- newLeadCount
- ongoingLeadCount
- countryId
- isdCode
- profilePhoto
- status
POST /v1/partner/session HTTP/1.1 x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "phone": "9876543210", "otp": "123456", "country_id": "IN", "isd_code": "91", "device": { "name": "android", "android_id": "a1b2c3d4e5f6", "gcm_id": "fcm-token", "application_type": "android" }, "resolution": "thumb" }{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "create_allowed": true, "is_test_login": false, "newSignUpEnabled": false, "leadId": "pl_9f21", "title": "Select a profile", "profiles": [ { "providerId": "pr_4412", "name": "R. Sharma", "category": "Salon at home", "address": "Andheri West, Mumbai", "isLive": true, "credits": 42, "newLeadCount": 3, "ongoingLeadCount": 1, "countryId": "IN", "isdCode": "91", "profilePhoto": { "url": "https://cdn.example/p.jpg" }, "status": { "text": "Active" } } ] }Discover new leads
POST
/v1/jobs/inboxopendataPages the new-lead board: unviewed count, missed-lead cursor, header_data and lead_details cards the partner can buy.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type; x-minion-id when a helper is selected.
- page_number
- missed_leads_shown
- minion_id
- new_lead_not_viewed
- header_data
- no_more_leads
- lead_details
- leadId
- name
- location
POST /v1/jobs/inbox HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "page_number": 0, "missed_leads_shown": 0, "minion_id": "" }{ "new_lead_not_viewed": 2, "missed_leads_shown": 0, "no_more_leads": false, "header_data": { "title": "New leads" }, "lead_details": [ { "leadId": "ld_8821", "name": "A. Khan", "location": "Koramangala" } ] }List ongoing leads
POST
/v1/jobs/activeopendataPages the ongoing-job list with filter/sort, count, insights and is_no_more_leads / is_load_more cursors.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type; x-minion-id when a helper is selected.
- filter
- sort
- page_number
- nocaching
- ondemand
- minion_id
- timestamp
- count
- insights
- is_no_more_leads
- is_load_more
POST /v1/jobs/active HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "filter": "all", "sort": [ "booking_time" ], "page_number": 0, "nocaching": false, "ondemand": false, "minion_id": "", "timestamp": 0 }{ "count": 4, "page_number": 1, "timestamp": 1759420800, "is_no_more_leads": false, "is_load_more": true, "insights": { "label": "On time" } }Get unified lead detail
POST
/v1/jobs/cardopendataOpens one request_id into LeadMetaData (leadId, formattedBookingTime, location) and the budgetModel quote window the partner sees on the job card.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type; x-minion-id when a helper is selected.
- request_id
- minion_id
- lead_meta_model
- leadId
- _id
- name
- leadOpen
- location
- formattedBookingTime
- lostLead
- leadDetailVersion
- isLeadBuyingAllowed
- isScanEnabled
- cardNotOpenMessage
- close
- isBlockAbleLead
- budgetModel
- ucQuote
- ucQuoteText
- ucBudget
- minBudget
- maxBudget
- budgetMessage
- leadValue
- orignalLeadValue
- priceNegotiable
- unit
- discount
- lead_card_template
- another_job_not_allowed_msg
- blocker_dialog_model
POST /v1/jobs/card HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "request_id": "ld_8821", "minion_id": "" }{ "lead_meta_model": { "leadId": "ld_8821", "_id": "req_8821", "name": "A. Khan", "leadOpen": true, "location": "Koramangala", "formattedBookingTime": "2 Oct, 11:00 AM", "lostLead": false, "leadDetailVersion": "V3", "isLeadBuyingAllowed": true, "isScanEnabled": false, "cardNotOpenMessage": "", "close": false, "isBlockAbleLead": false, "budgetModel": { "ucQuote": "1299", "ucQuoteText": "UC quote", "ucBudget": "1500", "minBudget": 999, "maxBudget": 1999, "budgetMessage": "Quote within range", "leadValue": 12, "orignalLeadValue": 12, "priceNegotiable": true, "unit": "job", "discount": "0" } }, "lead_card_template": {}, "another_job_not_allowed_msg": "", "blocker_dialog_model": {} }Respond on a lead
POST
/v1/jobs/quoteopendataAccepts or quotes on a request_id with budget_model.unit and refreshes the partner creditsInfo wallet after the buy.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- request_id
- budget_model
- unit
- creditsInfo
- credits
POST /v1/jobs/quote HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "request_id": "ld_8821", "budget_model": { "unit": "job" } }{ "creditsInfo": { "credits": 30 } }Fulfill lead payment
POST
/v1/jobs/collectopenfinanceMarks the job paid or frozen: state_key / state_option, GST flag and optional feedback, then returns lead_detail plus a reorder flag.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- request_id
- is_freeze
- state_key
- state_option
- is_gst_enabled
- feedback
- option_key
- token
- lead_detail
- reorder
POST /v1/jobs/collect HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "request_id": "ld_8821", "is_freeze": false, "state_key": "collect_payment", "state_option": "cash", "is_gst_enabled": true, "feedback": { "option_key": "job_done", "token": "fb_token" } }{ "lead_detail": { "leadId": "ld_8821" }, "reorder": false }Booking calendar summary
POST
/v1/calendar/monthopendataLoads the partner calendar for a yyyy/mm: per-day totalJobs and events, leaveSlots, legends and the bottom_link_text_stack.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- yyyy
- mm
- current_date
- days
- date
- totalJobs
- events
- leaves
- leaveSlots
- legends
- bottom_link_text_stack
POST /v1/calendar/month HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "yyyy": 2026, "mm": 10 }{ "current_date": "2026-10-02", "days": [ { "date": "2026-10-02", "totalJobs": 3, "events": [ "salon" ] } ], "leaves": [ { "date": "2026-10-05", "leaveSlots": [ "AM" ] } ], "legends": [ { "key": "job" } ], "bottom_link_text_stack": [ { "text": "Manage leave" } ] }Invoice summary for a job
POST
/v1/jobs/invoiceopenfinanceBuilds the on-job invoice for a requestId: service charge, material cost, cash advance, user-paid and the summary _total.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- requestId
- planId
- invoiceComponents
- spareParts
- invoiceType
- bookingInvoice
- invoiceSections
- invoiceDetail
- _serviceCharge
- _materialCost
- _cashAdvance
- _userPaid
- summary
- _total
- items
- noWorkDoneMsg
- visitationChargeModel
- errorMsg
POST /v1/jobs/invoice HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "requestId": "ld_8821", "planId": "plan_basic", "invoiceComponents": [], "spareParts": [] }{ "data": { "invoiceType": "standard", "bookingInvoice": {}, "invoiceComponents": [], "invoiceSections": [], "invoiceDetail": { "_serviceCharge": 899, "_materialCost": 250, "_cashAdvance": 0, "_userPaid": 1149 }, "summary": { "_total": 1149, "items": [], "noWorkDoneMsg": "" }, "visitationChargeModel": {}, "errorMsg": "" } }Job payment history
GET
/v1/earnings/jobs/{page}openfinancePages completed-job payment rows: customerName, location, totalAmount, invoiceAmount and onlineReceived grouped by year.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- jobHistories
- requestId
- customerName
- location
- totalAmount
- bookingTime
- status
- type
- invoiceAmount
- onlineReceived
- date
- year
GET /v1/earnings/jobs/0 HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en{ "jobHistories": [ { "requestId": "ld_7701", "customerName": "S. Patel", "location": "Bandra", "totalAmount": "1499", "bookingTime": 1759334400, "status": "completed", "type": "salon", "invoiceAmount": "1499", "onlineReceived": "1499", "date": "01 Oct 2026", "year": "2026" } ] }Grouped finance details
POST
/v1/payout/kycopenfinanceReads KYC finance sections typed bank_account, pan or gst, plus gateway_service_name for the payout rail.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- sectionType
- bank_account
- pan
- gst
- gateway_service_name
- sections
- key
- title
- filled_status
POST /v1/payout/kyc HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "sectionType": [ "bank_account", "pan", "gst" ] }{ "gateway_service_name": "razorpay", "sections": [ { "key": "bank_account", "title": "Bank account", "filled_status": "filled" }, { "key": "pan", "title": "PAN", "filled_status": "filled" }, { "key": "gst", "title": "GSTIN", "filled_status": "pending" } ] }Paytm wallet balance
GET
/v1/partner/walletopenbankingChecks whether the partner Paytm wallet is linked (is_paytm_active) and returns the current balance.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- is_paytm_active
- balance
GET /v1/partner/wallet HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en{ "is_paytm_active": true, "balance": 1280.5 }Lead-credit recharge packages
GET
/v1/wallet/packsopenfinanceLoads the credit-wallet recharge screen: currentCredits, unitPrice, gateway and packages with credits / freeCredits.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- currency
- currentBalanceText
- currentCredits
- customAmountEnabled
- unitPrice
- gateway
- gatewayId
- gatewayKey
- rechargeMessage
- packages
- credits
- freeCredits
- couponCode
- type
- descriptionText
GET /v1/wallet/packs HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en{ "data": { "currency": "INR", "currentBalanceText": "42 credits", "currentCredits": 42, "customAmountEnabled": true, "unitPrice": 12.0, "gateway": "paytm", "gatewayId": 1, "gatewayKey": "paytm_pg", "rechargeMessage": "Credits expire in 365 days", "packages": [ { "credits": "50", "freeCredits": "5", "couponCode": "", "type": "standard", "descriptionText": "50 + 5 free" } ] } }Provider profile sections
POST
/v1/partner/profileosintLoads the partner public profile at thumb resolution: profile_sections, contact_details, business_categories and web_profile_link.
Auth: Authorization: Bearer <token> from partner OTP verify, plus x-device-os, x-device-id, X-version-name, X-version-code, x-preferred-language, x-application-type.
- resolution
- profile_sections
- contact_details
- business_categories
- web_profile_link
POST /v1/partner/profile HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... x-device-os: android x-device-id: a1b2c3d4e5f6 X-version-name: 7.2.22 X-version-code: 10857 x-preferred-language: en Content-Type: application/json { "resolution": "thumb" }{ "profile_sections": [ { "key": "about", "title": "About", "filled_status": "filled" } ], "contact_details": { "phone": "9876543210" }, "business_categories": [ "salon" ], "web_profile_link": "https://cdn.example/p/pr_4412" }
Data categories
- leads
- bookings
- invoices
- earnings
- wallet-credits
- identity
Where teams use this data
Partner-ops job and invoice recon
An ops dashboard joins ongoing lead cards (leadId, formattedBookingTime) with invoice _serviceCharge / _materialCost / _total and job-history totalAmount rows so a city manager can see which bookings are still open versus already collected.
Credit-wallet float underwriting
A working-capital lender reads currentCredits plus is_paytm_active and Paytm balance to size a short float against the partner's lead-buy wallet instead of waiting on weekly settlements.
KYC onboarding for payouts
A compliance bot pulls grouped finance sections typed bank_account, pan and gst, then matches gateway_service_name and filled_status before enabling payouts.
Marketplace capacity analytics
A supply-planning job uses calendar totalJobs and leaveSlots with new_lead_not_viewed / ongoing count to forecast how many partners are free on a given day.
Frequently asked questions
What partner objects sit behind Urban Company Partner?
The surface covers new and ongoing leads (leadId, formattedBookingTime, budgetModel), booking-calendar days (totalJobs, leaveSlots), on-job invoices (_serviceCharge, _materialCost, _total), job-history payment rows (totalAmount, invoiceAmount), a lead-credit wallet (currentCredits) and a linked Paytm balance.
How does a partner authenticate?
A phone OTP is generated and verified; the verify call returns a token that later requests send as Authorization: Bearer, together with device and app-version headers. A helper profile may also send x-minion-id.
Which markets does this partner app serve?
The login country list used here covers India, the United Arab Emirates and Saudi Arabia — Urban Company's core home-services markets for independent professionals.
Is this a public Urban Company developer API?
No. These are first-party endpoints the partner app calls after login. They are documented here as a data surface, not as a supported public SDK.
Apps similar to Urban Company Partner
- Justlife Partner — Justlife Partner is the crew-side Android app for Justlife, a home-services marketplace in the UAE and Saudi Arabia that books cleaning, salon, pest-control and AC jobs.
- Housejoy — Housejoy is a Bengaluru-headquartered Indian company that markets home construction, renovation, painting, maintenance and at-home beauty and salon services under the Zalon name.
- Sulekha — Sulekha is an Indian digital platform that matches consumers with verified local professionals across home categories such as cleaning, pest control, appliance repair and domestic help.
- Justdial — Justdial is an Indian local-search company that lists businesses and services through its phone line, website and JD Android app, covering restaurants, doctors, hotels and other local providers.
- TaskRabbit — TaskRabbit is an IKEA-owned marketplace that matches freelance Taskers with local jobs such as furniture assembly, moving, cleaning and handyman work in the United States, Canada, the UK and several EU countries.
- Thumbtack for Professionals — Thumbtack for Professionals is the provider app of the US home-services marketplace Thumbtack, where local handymen, cleaners and other trades find and convert customer requests.
- Helpling Partner — Helpling Partner is the provider app for Helpling, a Berlin-based platform for home cleaning and household services, used to accept cleaning job offers and manage bookings.
- Handy — Handy is an Angi-owned marketplace for booking residential cleaning, installation and handyman visits in the United States, United Kingdom and Canada.
Topics
- urban company partner api
- uc partner leads
- urbanclap provider
- home services invoice
- partner credit wallet
- paytm partner balance
- urban company ksa uae
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use