Handee HQ API

Version 1. Read and write the CRM from other systems.

Getting in

  • Base URL: https://crm.handee.co.za/api/v1
  • Authentication: an API key in the header Authorization: Bearer sl_…. Keys are made by a Handee HQ admin under Settings → API, with read or read-and-write access.
  • Machine-readable reference (OpenAPI 3): https://crm.handee.co.za/openapi.json
  • Lists page with limit (up to 100) and cursor, returning { items, nextCursor, total }. Writes accept an Idempotency-Key header. Errors are always { "error": { "code", "message" } }.
curl -H "Authorization: Bearer sl_…" "https://crm.handee.co.za/api/v1/me"
curl -H "Authorization: Bearer sl_…" "https://crm.handee.co.za/api/v1/contacts?q=absa&limit=20"
curl -X POST -H "Authorization: Bearer sl_…" -H "Content-Type: application/json" \
  -d '{"companyId":"<id>","fullName":"Jane Dlamini","email":"jane@acme.co.za"}' "https://crm.handee.co.za/api/v1/contacts"

MCP (Claude and other agents)

The same operations are available as MCP tools over streamable HTTP at https://crm.handee.co.za/mcp. Claude connects with OAuth (it sends you to Handee HQ to sign in and approve); other clients can send a Handee HQ API key as a bearer token. Discovery documents: /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server.

Endpoints

MethodPathWhat it doesNeeds
GET/api/v1/healthLiveness and versionNothing
GET/api/v1/meWho this key or session isRead key
GET/api/v1/searchFind companies or people by name, email, domain or job titleRead key
GET/api/v1/companiesList companiesRead key
POST/api/v1/companiesCreate a companyRead and write key
GET/api/v1/companies/{id}One company in full: team, contracts, deals, recent activityRead key
GET/api/v1/contactsList contactsRead key
POST/api/v1/contactsCreate a contact (returns the existing one if the email is already known)Read and write key
GET/api/v1/contacts/{id}One contact in fullRead key
PATCH/api/v1/contacts/{id}Update fields on a contactRead and write key
POST/api/v1/contacts/{id}/outreachSet a contact's outreach statusRead and write key
GET/api/v1/opportunitiesList opportunities (deals)Read key
POST/api/v1/opportunitiesCreate an opportunity (deal)Read and write key
GET/api/v1/opportunities/{id}One deal with its contact, contracts and documentsRead key
PATCH/api/v1/opportunities/{id}Update a deal: value, dates, status (onboarding/won/lost/on_hold), descriptionRead and write key
GET/api/v1/contractsList contracts (retainers and ad hoc jobs)Read key
POST/api/v1/contractsCreate a contract (retainer or ad hoc job) for a company; a proposed, active or paused one makes the company an active client (relationship Client), as in Handee HQRead and write key
GET/api/v1/contracts/{id}One contract with its documentsRead key
PATCH/api/v1/contracts/{id}Update a contract: status, dates, fee, hourly rates, account manager, the deal it came fromRead and write key
GET/api/v1/employeesList employees with current ratesRead key
GET/api/v1/employees/{id}One employee with rates and documentsRead key
GET/api/v1/documentsList documents on a company, deal, contract or employee, oldest first (sort by docDate for the latest)Read key
POST/api/v1/documentsAttach a document: text rendered to DOCX/PDF, a base64 file, or a link; named by the standard conventionRead and write key
GET/api/v1/documents/{id}One document's details (its bytes are at /documents/{id}/file)Read key
DELETE/api/v1/documents/{id}Remove a document and its fileRead and write key
POST/api/v1/documents/{id}/send-for-signatureSend a document to e-sign: a client's services schedule, NDA, terms or contract to a contact, or an employee's contract, NDA or review to the employee (Handee countersigns); the signed PDF replaces the document when done. Proposals are not signed.Read and write key
GET/api/v1/documents/{id}/signatureWhere a document's signature request standsRead key
POST/api/v1/documents/{id}/signature/remindSend the signing email again to whoever has not signedRead and write key
DELETE/api/v1/documents/{id}/signatureWithdraw an open signature request (one already signed or declined in Documenso is filed as that instead; check the status returned)Read and write key
GET/api/v1/canvasFiles waiting on the Canvas to be filedRead key
POST/api/v1/canvasDrop a file on the Canvas to be filed later: text rendered to DOCX/PDF, a base64 file, or a link, with a note and hintsRead and write key
POST/api/v1/canvas/{id}/fileFile a Canvas item onto a company, deal, contract or employee as a kind of documentRead and write key
DELETE/api/v1/canvas/{id}Discard a Canvas itemRead and write key
GET/api/v1/moneyMoney summary for a yearRead key
GET/api/v1/dueWhat needs attention: contracts and employee agreements ending within 60 days (or past their end while still open), and documents sent for signature waiting 7 days or moreRead key
POST/api/v1/activitiesLog an activity (note, email, call, meeting, linkedin) against a contact or companyRead and write key