Guides · FAQ · API

Everything you need
to get started,
in plain language.

Four guides for the four surfaces you will touch most, every live endpoint the public API ships today, and the six questions we get asked every week.

Public API · /api/v14 routes live
POST /auth/signup // 201 POST /auth/login // 200 POST /account/logout // 204 GET /account/profile // 200 // more routes lands onto this list // as they ship, on the changelog.
Guides

Four short walkthroughs.

Each guide is one sitting and one outcome. Scroll top to bottom or jump to the one that matches the surface you are about to touch.

Day zero

Write a contract in under five minutes.

Pick a type, set a rate, pick a currency, fill the scope, send it. The four types cover most work people actually do.

POST /api/v1/contracts201 Created · 48 ms
// request body { "type": "hourly", "rate": "85", "currency": "USD", "weeklyHoursLimit": 30, "contractorOrgId": "ORG 0042" } // → contract.draft saved · status: "draft"
The loop

From draft to paid, cleanly.

The contractor writes line items and a due date. The client reviews, approves, pays. PaidAt gets stamped the moment funds settle.

invoice.status · lifecycle6 states
draft contractor writes lines sent delivered to client org approved pendingBalance earmarked paid paidAt set, funds cleared // exit states overdue dueDate < now and not paid cancelled pulled from the queue
The money

Balance versus pending balance.

Balance is spendable right now. Pending balance is earmarked by approved invoices but not yet cleared. Multiple wallets per org when the cycle calls for it.

WalletAccount · schemaone org · many wallets
{ "id": "wallet_usd_01", "orgId": "ORG 0042", "currency": "USD", "balance": "42180.00", "pendingBalance": "6420.00", "createdAt": "2026-02-11" }
The roles

Owner, admin, member, accountant.

Each member carries a role and a status. Owner sees everything. Admin runs day to day. Member does the work. Accountant sees the money.

MemberShip · role + statuspivot · users · orgs
// roles owner everything, irrevocable admin day to day operations member contract work, own invoices accountant wallets, withdrawals, reports // status flow invited active suspended
API reference

Four live endpoints, today.

Everything below is wired to the backend right now. The data model is broader than the API surface. The rest ships route by route onto this list as it lands.

POST
/api/v1/auth/signupCreate a user, a first organization, and a bearer token in one round trip.
Public
REQUEST
{
  "email": "you@example.com",
  "password": "••••••••",
  "fullName": "Your Name",
  "orgName": "Helia Studio"
}
RESPONSE
{
  "token": "vct_••••••••••••••",
  "user": { "id": "USR 0001", "email": "you@example.com" },
  "org":  { "id": "ORG 0001", "name": "Helia Studio" }
}
POST
/api/v1/auth/loginExchange email and password for a bearer token used by every authenticated route.
Public
REQUEST
{
  "email": "you@example.com",
  "password": "••••••••"
}
RESPONSE
{
  "token": "vct_••••••••••••••",
  "expiresAt": "2027-01-12T09:41:00Z"
}
POST
/api/v1/account/logoutRevoke the bearer token attached to the current session.
Bearer
RESPONSE
// 204 No Content
GET
/api/v1/account/profileRead the signed in user, their profile, and the organizations they belong to.
Bearer
RESPONSE
{
  "user":    { "id": "USR 0001", "email": "you@example.com" },
  "profile": { "firstName": "Lucas", "country": "HU", "timezone": "Europe/Budapest" },
  "memberships": [
    { "orgId": "ORG 0001", "role": "owner", "status": "active" }
  ]
}
FAQ

The six we actually get.

Written by the people who built the thing. Updated when we change our minds.

Which contract types do you support today?+
Four. Fixed for a total amount on a deliverable, hourly with an optional weekly cap, milestone for phased work, and payroll for recurring cycles. Every contract has a currency, a rate, a scope field, and a status that walks through draft, sent, active, paused, completed, and cancelled.
How does invoice approval actually work?+
The contractor raises a draft, sends it, the client org reviews and approves it. On approval the total moves out of the client wallet into the contractor wallet. On payment the status flips to paid and paidAt is written. Overdue and cancelled are the two exit states.
Can I pay in any currency?+
Yes. The currency field on contracts, invoices, and wallets is a free text string. If you can spell the code, we can store it. FX is not executed in product today, so the currency you write is the currency you move.
How do withdrawals work?+
Request a withdrawal from a wallet. We store the method, the bank details payload, a reference string, the requester, and a status. On failure we write the reason to failureReason. On success we set processedAt.
Do you handle taxes?+
Not yet. The tax field on an invoice is a number you compute, not one we file. No VAT handling, no income tax handling, no payroll tax engine. That work stays with your accountant until we say otherwise on the changelog.
What roles can team members have?+
Four. Owner sees everything, admin runs the day to day, member does the work, accountant sees the money. Status on a membership moves through invited, active, and suspended. A user can belong to more than one organization.