Connect any utilisation source
Bring allocations, unavailability and capacity from your PSA, ERP or resource planning tool into MuchSkills. Your team publishes a read-only API with the records on this page, and MuchSkills reads it on a schedule. The set-up is part of your MuchSkills implementation.
- Who
- Your system's technical team, with our CTO
- How it connects
- Custom set-up, part of your implementation
- Sync
- MuchSkills reads your API on a schedule we agree
- Access
- Read-only
How to
How it works
Organisations calculate utilisation in different ways: in hours or percentages, per day or per period, with different capacity rules. So your team publishes the records it already has, in one of three shapes, and MuchSkills reads them on a schedule. A technical session between your team and our CTO confirms the mapping before anything goes live.
If you only need absence, you do not need this page. Absence can come from your HR system, from MuchSkills itself, or through the MuchSkills API.
Before you start
- A technical contact who can publish a secured HTTPS API from your system.
- Read-only credentials for that API: an API key, OAuth 2.0 client credentials, or a service user and password.
- Hours or percentages. Pick one value type for every record.
- Your capacity rule. One standard week for everyone, or capacity per person.
- Check email addresses. Each record names the person by email. It must be the address they sign in to MuchSkills with.
Steps
In your system
- List the records you have. MuchSkills uses three record types: Allocation (time on a project), Unavailability (time someone cannot take new work, such as leave, training days or public holidays) and Capacity (the most time a person can work in a period). The fields each type needs are in the table under Important to know.
- Choose a structure. Pick the shape your system produces most easily: A, B or C, described under Important to know.
- Decide how capacity arrives. Either one organisation-wide value that we set once, or Capacity records per person.
- Publish the API. Make the endpoint or endpoints available over HTTPS with read-only credentials. If you limit access by IP address, allow
13.51.77.53and16.170.107.61.
With MuchSkills
- Send us the details. The endpoint addresses, your chosen structure, a sample response, your capacity rule and the credentials, through a secure channel we agree.
- Join the technical session. Your technical contact and our CTO confirm the field mapping, the data format and authentication. You also agree how often MuchSkills reads, how far back and forward each read looks, the time zone for dates, paging, and how corrected past records are returned.
- Check a first read. We read a test dataset or a few people and projects. You check utilisation and availability in MuchSkills.
- Switch it on. From then on, MuchSkills reads your API on the agreed schedule.
Check it worked
- Team/Org › Reports shows utilisation per person and per project for the period you sent.
- Unavailability shows in each person's availability, for example in My Circle.
- Candidates in Team Builder show their current allocation when you staff a team.
Benefits
What you get
- One view of skills and workload. See who has the skills and who has the time, in the same place.
- No double entry. Allocations stay in the tool your delivery teams already use.
- Better staffing calls. Spot who is over-booked, who is on the bench and who rolls off soon before you assign people.
Important to know
Important to know
Fields per record type. Field names are up to you. We map them in the technical session.
| Field | Format | Allocation | Unavailability | Capacity |
|---|---|---|---|---|
| Record type | Allocation, Unavailability or Capacity | Required | Required | Required |
| User email | Text | Required | Required | Required |
| Date or date range | ISO 8601 date, or a start and end date. Daily detail is best | Required | Required | Required |
| Value | Decimal | Required | Required | Required |
| Value type | hours or percentage, the same in every record | Required | Required | Required |
| Project ID | Text or number, unique in your system | Required | Not used | Not used |
| Project name | Text, for display | Required | Not used | Not used |
| Task ID and task name | Text | Optional | Not used | Not used |
The three structures.
- A. Project-first. Endpoint 1 lists projects. Each project has its Project ID, Project name and users, and each user has their email and Allocation records (date or range, value, value type). Unavailability and Capacity have no project, so they come from endpoint 2: a list of people, each with their email and their Unavailability and Capacity records.
- B. People-first, with a projects list. Endpoint 1 lists projects (Project ID, Project name). Endpoint 2 lists people. Each person has their email and their records, and every record carries its record type, date or range, value and value type. Allocation records also carry the Project ID and, optionally, a Task ID.
- C. Flat records. One endpoint returns every record in one list, each carrying all its fields. This is the simplest to produce.
An example of structure C, in hours:
[
{"recordType": "Allocation", "userEmail": "anna@yourcompany.com", "projectId": "P-1042", "projectName": "Website relaunch", "start": "2026-11-02", "end": "2026-11-06", "value": 20, "valueType": "hours"},
{"recordType": "Unavailability", "userEmail": "anna@yourcompany.com", "date": "2026-11-09", "value": 7.5, "valueType": "hours"},
{"recordType": "Capacity", "userEmail": "anna@yourcompany.com", "start": "2026-11-02", "end": "2026-11-08", "value": 30, "valueType": "hours"}
]
MuchSkills reads from you. There is no MuchSkills endpoint for sending allocations. MuchSkills calls your API on the agreed schedule.
Absence from one place only. If your HR system already syncs absence to MuchSkills, leave Unavailability for leave out of this API, or tell us which source wins. When an HR integration manages absence, the MuchSkills API refuses to overwrite it. Sending absence through the API with PUT /api/v2/profile/{email}/pto replaces all of that person's absences each time.
No reasons, no health data. Send dates and amounts of time only. These are blocked when data arrives and never stored: age or date of birth, salary or other compensation data, performance ratings, and political, religious or health data.
Read-only. MuchSkills never writes back to your system through this connection.
Our IP addresses. MuchSkills always connects from the same two addresses: 13.51.77.53 and 16.170.107.61. If your system or network limits access by IP address, add both to the allow list.
Common errors
Troubleshooting
| What you see | Why | What to do |
|---|---|---|
| Some people have no utilisation | Their email in your system differs from the address they sign in to MuchSkills with | Align the email addresses |
| Utilisation looks too high or too low | Capacity is missing for some people, or records mix hours and percentages | Send capacity for everyone, or confirm the organisation-wide value, and use one value type |
| Unavailability does not show | The records are attached to a project, or have no date | Send them as Unavailability records with a date or range and no project |
| A change to a past allocation does not show | The change is outside the period MuchSkills reads | Agree a longer history window with us |
| Absence appears twice | Your HR system and this API both send it | Send absence from one source only |
| The reads stopped | The credentials expired or were changed | Send us new credentials through the agreed secure channel |
Frequently asked questions
Which tools can we connect this way?
Any system that can publish a secured HTTPS API with the records on this page: PSA tools, ERPs, resource planning tools, or your own database behind an API. Jira with Tempo and Dynamics 365 Business Central have their own connectors.
Can we push allocations into MuchSkills instead?
Not today. The MuchSkills API has no endpoint for project allocations, so MuchSkills reads them from an API on your side.
Should we send hours or percentages?
Either. Choose one and use it for every record, so utilisation is calculated the same way for everyone.
Do we have to send capacity for every person?
Only if it varies, for example for part-time staff or different contracts. If everyone works the same standard week, give us one value, such as 37.5 hours per week, and we set it once.
How often does MuchSkills read our API?
On a schedule we agree in the technical session, together with how far back and forward each read looks.
Can absence come from somewhere else?
Yes. Absence can come from your HR system sync, be entered in MuchSkills by the person's manager or an Owner or Admin, or be sent to the MuchSkills API with PUT /api/v2/profile/{email}/pto. Send it from one place only.
Do you need the reason for an absence?
No. Send the dates and the amount of time only. Never send health information such as sick leave as a reason.
How do we send the credentials safely?
Through a secure channel we agree with you in advance, such as a password manager share. Never by plain email.