{"info":{"name":"Grovia API","description":"Read and write your Grovia leads, clients, invoices and payments, and receive webhooks when they change. Create a key in Grovia → Settings → API & Webhooks. Each key belongs to one company account and only sees that account's data.\n\nSet the apiKey variable to your key (gro_live_…).","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiKey}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://groviaos.com/api/v1"},{"key":"apiKey","value":""}],"item":[{"name":"Account","item":[{"name":"Check a key","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me","host":["{{baseUrl}}"],"path":["me"]},"description":"Which account the key belongs to and its scopes. Works with any valid key."}}]},{"name":"Leads","item":[{"name":"List leads","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/leads","host":["{{baseUrl}}"],"path":["leads"],"query":[{"key":"status","value":"","disabled":true},{"key":"updated_since","value":"","disabled":true},{"key":"limit","value":"","disabled":true},{"key":"starting_after","value":"","disabled":true}]},"description":"Newest first. Scope: leads:read."}},{"name":"Create a lead","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/leads","host":["{{baseUrl}}"],"path":["leads"]},"body":{"mode":"raw","raw":"{\n  \"name\": \"Asha Verma\",\n  \"phone\": \"+919800000000\",\n  \"email\": \"asha@example.com\",\n  \"message\": \"Need a quote for 20 units\",\n  \"source\": \"Website form\",\n  \"external_id\": \"form-1042\"\n}"},"description":"Goes through the same path as every other enquiry: a repeat from the same phone or email within 30 days is added to the open lead (200 + duplicate:true) instead of making a twin. Send external_id to make retries safe. Scope: leads:write."}},{"name":"Get a lead","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/leads/:id","host":["{{baseUrl}}"],"path":["leads",":id"],"variable":[{"key":"id","value":""}]},"description":"Scope: leads:read."}},{"name":"Update a lead","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/leads/:id","host":["{{baseUrl}}"],"path":["leads",":id"],"variable":[{"key":"id","value":""}]},"body":{"mode":"raw","raw":"{\n  \"status\": \"contacted\"\n}"},"description":"Change stage, notes, value or owner. Moving to won stamps won_at and fires lead.won. Scope: leads:write."}}]},{"name":"Clients","item":[{"name":"List clients","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/clients","host":["{{baseUrl}}"],"path":["clients"],"query":[{"key":"email","value":"","disabled":true},{"key":"updated_since","value":"","disabled":true},{"key":"limit","value":"","disabled":true},{"key":"starting_after","value":"","disabled":true}]},"description":"Newest first. Scope: clients:read."}},{"name":"Create (or find) a client","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/clients","host":["{{baseUrl}}"],"path":["clients"]},"body":{"mode":"raw","raw":"{\n  \"name\": \"Asha Verma\",\n  \"email\": \"asha@example.com\",\n  \"company\": \"Verma Traders\",\n  \"city\": \"Pune\",\n  \"state\": \"Maharashtra\"\n}"},"description":"One client per email per account: if the email exists you get that client back with duplicate:true. Scope: clients:write."}},{"name":"Get a client","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/clients/:id","host":["{{baseUrl}}"],"path":["clients",":id"],"variable":[{"key":"id","value":""}]},"description":"Scope: clients:read."}}]},{"name":"Invoices","item":[{"name":"List invoices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/invoices","host":["{{baseUrl}}"],"path":["invoices"],"query":[{"key":"status","value":"","disabled":true},{"key":"client_id","value":"","disabled":true},{"key":"updated_since","value":"","disabled":true},{"key":"limit","value":"","disabled":true},{"key":"starting_after","value":"","disabled":true}]},"description":"Newest first. Scope: invoices:read."}},{"name":"Get an invoice","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/invoices/:id","host":["{{baseUrl}}"],"path":["invoices",":id"],"variable":[{"key":"id","value":""}]},"description":"Scope: invoices:read."}}]},{"name":"Payments","item":[{"name":"List payments received","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/payments","host":["{{baseUrl}}"],"path":["payments"],"query":[{"key":"invoice_id","value":"","disabled":true},{"key":"since","value":"","disabled":true},{"key":"limit","value":"","disabled":true},{"key":"starting_after","value":"","disabled":true}]},"description":"Newest first. Scope: invoices:read."}}]},{"name":"Tally","item":[{"name":"Export TallyPrime XML","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tally/export","host":["{{baseUrl}}"],"path":["tally","export"],"query":[{"key":"type","value":"","disabled":true},{"key":"from","value":"","disabled":true},{"key":"to","value":"","disabled":true}]},"description":"The same file as Grovia → Tally Export, for pushing into TallyPrime (used by the Grovia Tally Connector). Indian GST accounts only. Scope: accounting:read. At most 366 days per request."}}]},{"name":"Webhooks","item":[{"name":"List webhooks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/webhooks","host":["{{baseUrl}}"],"path":["webhooks"]},"description":"This account's webhooks, including ones switched off. Secrets are never returned. Any valid key."}},{"name":"Subscribe a webhook","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/webhooks","host":["{{baseUrl}}"],"path":["webhooks"]},"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com/grovia-webhook\",\n  \"events\": [\n    \"lead.created\"\n  ],\n  \"description\": \"My automation\"\n}"},"description":"For automation platforms (REST hooks): register an https address for some events. The key needs the read scope of each event's data (lead.* → leads:read, client.created → clients:read, invoice.* and payment.received → invoices:read). The signing secret is returned once. Up to 25 webhooks can be switched on per account."}},{"name":"Get a webhook","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/webhooks/:id","host":["{{baseUrl}}"],"path":["webhooks",":id"],"variable":[{"key":"id","value":""}]},"description":"Any valid key."}},{"name":"Unsubscribe a webhook","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/webhooks/:id","host":["{{baseUrl}}"],"path":["webhooks",":id"],"variable":[{"key":"id","value":""}]},"description":"Switches the webhook off; its delivery history is kept. Calling it again is harmless."}}]}]}