Organizations and resources
How calls chain together, from your user to your organizations and from an organization to its modules, stations and operators.
Here you will see which resources the API has, which call each id comes from, and how to work with an account that belongs to several organizations.
The path
user (your token)
└── organizations
├── modules (módulos)
│ └── stations (puestos)
└── operators (operarios)A token is personal: it acts as your user and reaches every organization you
belong to. There is no default organization: every route names its own in the
path, as organizationId.
Where each id comes from
| Resource | What it is | Its id comes from | It is used as |
|---|---|---|---|
| Organization | A plant, a workshop (taller) or a brand's account | GET /me → organizations[].id, GET /organizations → items[].id | organizationId in the path |
| Module (módulo) | A production line | GET …/modules → [].id, GET …/floor → modules[].id | moduleId in the path or as a filter |
| Station (puesto) | A numbered station of a module | GET …/modules/{moduleId}/stations → [].id, GET …/stations → items[].id, GET …/floor → modules[].stations[].id | stationId in the path, operationId as a filter |
| Operator (operario) | The person who registers their own output at a station | GET …/operators → [].id, a station's operator.id field | operatorId in the path or as a filter |
A station's id has two names. In the path it is stationId. In the report
filters it is operationId, and in their rows it comes as operation.id. It
is the same number.
Each operator carries in station the station they are seated at, or null
when they are at none. Each station carries in operator the seated operator,
or null when it is empty.
A chained example
# 1. Your organizations → organizationId
curl https://api.fluenta.io/v1/external/organizations \
-H "Authorization: Bearer $FLUENTA_TOKEN"
# 2. The modules of organization 42 → moduleId
curl https://api.fluenta.io/v1/external/organizations/42/modules \
-H "Authorization: Bearer $FLUENTA_TOKEN"
# 3. The stations of module 7 → stationId
curl https://api.fluenta.io/v1/external/organizations/42/modules/7/stations \
-H "Authorization: Bearer $FLUENTA_TOKEN"
# 4. Station 311, as the board reads it now
curl https://api.fluenta.io/v1/external/organizations/42/stations/311 \
-H "Authorization: Bearer $FLUENTA_TOKEN"
# 5. That station's efficiency over a range: the same id, as operationId
curl "https://api.fluenta.io/v1/external/organizations/42/analytics/efficiency?from=2026-11-03&to=2026-11-07&operationId=311" \
-H "Authorization: Bearer $FLUENTA_TOKEN"Steps 1 to 4 answer on every plan. Step 5 follows the plan: see Plans.
GET …/floor answers the modules with their stations in one call. Use it when
you need the whole plant, not to read one station: it counts against a lower
rate limit.
Accounts with several organizations
A person can belong to several organizations: a brand and its workshops (talleres), or someone who works for two plants. The same token reaches all of them.
GET /mecarries the first 50, by name, and the total inorganizationsTotal.GET /organizationspages them 50 at a time withpageand searches them by name withsearch.- Each organization answers according to its own plan.
connectorEnabledsays whether that organization answers your credential. - Each organization has its own rate limit, and there is one more for the token across all of them: see Rate limits.
- Each organization has its own clock. The days and hours in its answers are
in its time zone:
timezoneandtodayinGET /organizations/{organizationId}. - Your role and your permissions in one organization are in
GET /organizations/{organizationId}/access.
To walk a brand and its workshops, list the organizations and repeat the same
calls with each organizationId.
What is not yours answers 404
An organization you do not belong to answers the same as one that does not exist:
{
"statusCode": 404,
"code": "ORGANIZATION_NOT_FOUND",
"message": "Organización no encontrada"
}It never answers 403. The same holds inside an organization: a module, a
station or an operator of another organization answers 404 with
MODULE_NOT_FOUND, OPERATION_NOT_FOUND or OPERATOR_NOT_FOUND, the same as
an id that does not exist.
Always use ids that came from an API answer. Do not build them or guess them. Errors has the rest of the codes.