aventra.Developers

How the CRM fits together

Know which identifiers to use, what gets created and where your data appears.

CompanyStart with an org. number
ContactAdd the person behind it
ContextKeep the conversation
Follow-upGive someone the next step

Resources and identifiers

ResourceIdentifierWhere it appears
Userid (UUID), discoverable by emailA member of your workspace
Companyorgnr in company URLs; id (UUID) in relationshipsThe company's CRM profile
Contactid (UUID)Contacts and linked company profiles
Contact detailid (integer)Email, mobile, phone or another detail on the contact
Company linkid (integer)The contact's company relationships and roles
Taskid (UUID)Tasks, assigned to a workspace member
Offerid (UUID)The sales pipeline, linked to a company
Noteid (integer)The company's activity timeline

Organisation numbers are strings of nine digits. A company's organisation number and its CRM UUID are not interchangeable.

Companies start with register data

POST /companies imports basic company and contact details from Aventra's Norwegian company register. The organisation number must already be available there. If it is not, the API returns 422 company_unavailable; check the number or add the company in Aventra first.

You can set a CRM status and optional assignee/contact details on a new company. Existing companies are returned unchanged. Use PATCH for intentional updates. The API does not let an integration overwrite registered names, financial statements or credit assessments. Creating a company does not perform a credit assessment or import financial statements.

Supported statuses are lead, prospect, contacted, customer, inactive_customer, and supplier. Deleted companies are excluded from reads and cannot receive notes or new relationships. Archived companies remain accessible.

Contacts have separate details and relationships

A contact is a person. Its name and notes are on the contact itself. Email addresses and phone numbers are contact details. A company connection is a separate relationship, optionally carrying a role such as Daglig leder.

One contact can have multiple details and company relationships. The API doesn't merge people by name or email. Keep your own mapping between source-system IDs and Aventra UUIDs.

Contact creation, adding a detail and adding a relationship are independent requests. A failure in a later step does not undo earlier steps.

Tasks always have an assignee

user_id is required when creating a task. Use GET users with an email filter, or list your workspace directory, and pass the selected UUID. The assignee must belong to your workspace.

Task timestamps use ISO 8601 with an explicit UTC offset, for example 2026-10-05T09:00:00+02:00. Z is also accepted. For a date-only task, use has_time_specified: false and a timestamp on the intended date in your team's timezone.

Offers are pipeline records

Offers track commercial opportunities. A company and explicit owner (user_id) are required. Resolve the owner through the workspace user directory. Creating or updating an offer does not send an email, generate a quote document, or append a separate activity event.

  • Money: whole Norwegian kroner, excluding VAT. 15000 means NOK 15,000, not NOK 150.
  • Recurring revenue: the amount per monthly, quarterly, biannually or annually period.
  • Probability: weight, an integer from 0 to 100.
  • Status: new, sent, negotiating, accepted or rejected.

An accepted offer always has a 100% probability. Send status: "accepted"; Aventra sets weight: 100 automatically, including on creation. A lower weight is ignored while the offer remains accepted. Other statuses use the supplied or existing probability.

Partial updates

PATCH changes only supplied fields. An empty object or an unknown field is rejected. To clear a nullable value, send null:

PATCH /companies/923609016
{ "assigned_to": null, "phone_number": null }

Use an empty string to clear contact notes. Task assignees, offer owners and offer company IDs cannot be null.

On this page