Technical reference
API environments
The Navixy IoT Logic API is available on multiple regional platforms to optimize performance and comply with data residency requirements.
Base URLs
Europe
https://api.eu.navixy.com
European data centers
Americas
https://api.us.navixy.com
US-based data centers
Environment selection
Choose the environment that:
Is geographically closest to your operations (to minimize latency)
Complies with your data residency requirements
Matches your existing Navixy platform subscription
Both environments offer identical API functionality, but may differ in:
Response times based on your geographic location
Data storage location (important for compliance with regulations like GDPR)
Maintenance windows and update schedules
Authentication
Authentication for the Navixy IoT Logic API uses API keys or user session hashes. For detailed information about authentication methods, obtaining API keys, and best practices, please refer to the Authentication documentation.
API rate limiting
To ensure system stability for all customers, the platform limits API requests to 50 requests per second per user and per IP address (for applications serving multiple users). These limits are applied based on user session hash and API keys.
To avoid rate limiting issues:
Implement exponential backoff for retries
Batch operations where possible
Cache frequently accessed data
Distribute non-urgent requests over time
Request formats
HTTP methods
GET
Retrieving information
Flow listing, flow details
POST
Creating, updating, deleting resources
Creating, updating and deleting flows and nodes
Some read operations use POST requests with a request body instead of GET with query parameters. Always check the endpoint documentation for the correct method.
Content type
All requests and responses use JSON format:
Content-Type: application/jsonAll request bodies must be valid JSON objects. The API will return a 400 Bad Request response for malformed JSON.
Date and time formats
All timestamps in the API use ISO 8601 format in UTC timezone:
YYYY-MM-DDThh:mm:ssZExample: 2025-04-08T14:30:00Z represents April 8, 2025, at 2:30 PM UTC.
Response structure
All API responses follow a consistent JSON format.
Success responses
Success responses always include a success: true field and may include additional data:
{
"success": true,
"value": {
// Requested data or resource
}
}For list operations:
{
"success": true,
"list": [
// Array of requested items
]
}Error responses
Error responses include success: false and a status object with details, for example:
{
"success": false,
"status": {
"code": 292,
"description": "IoT Flow Invalid"
},
"errors": [
{
"node_ids": [2],
"message": "Node #2 is missing, but has a link from edge"
},
{
"node_ids": [1],
"message": "Data source node \"New Data Source\" (#1) must be at the start of flow"
}
]
}Response Fields:
success: Alwaysfalsefor error responsesstatus.code: Internal error code (see tables below)status.description: Human-readable error categoryerrors: Array of detailed validation errors (present only for HTTP 400 responses)node_ids: Array of affected node IDs (optional)message: Human-readable error description
Common error codes
400
292
IoT Flow Invalid
Flow validation failed
400
293
IoT Endpoint Invalid
Endpoint validation failed
400
294
IoT Node Invalid
Node validation failed
401
14
Invalid session
Authentication required or session expired
403
7
Access denied
Insufficient permissions
404
201
Not found
Requested resource doesn't exist
500
1
Database error
Internal server error
Validation errors (HTTP 400)
All validation errors return HTTP status 400 and include a detailed errors array. The following table lists all possible validation error messages:
Flow Structure
Node #${node_id} is missing, but has a link from edge
Referenced node doesn't exist in the flow
Data source node "${title}" (#${node_id}) must be at the start of flow
Data source node has incoming connections
Output endpoint node #${node_id} must be at the end of flow
Output endpoint node has outgoing connections
A flow starting from data source node #${node_id} must have an output endpoint node
Flow path doesn't terminate with an output endpoint
Graph topology
The flow's graph cannot contain cycles
Circular references detected in flow
The flow's graph can't contain self-loops
Node connects to itself
Node #${node_id} is involved in the message processing twice
Node is reachable through multiple paths
Connections
Nodes #${node_id1} and #${node_id2} have a duplicate connection
Multiple edges exist between the same nodes
Logic node #${node_id} does not contain at least one relationship
Logic node has no outgoing connections
Logic node #${node_id} contains invalid link types, only Then or Else is allowed
Logic node has non-conditional connection types
Node content
Node #${node_id} has incorrect content
Node configuration data is invalid
Duplicate Switch Output #${output_number} action in Nodes: #${node_id1}, #${node_id2}
Same output number controlled by multiple action nodes
Resource limits
The total number of attributes in a flow must not exceed ${max_amount}
Flow contains too many attributes (limit: 200)
The node identifier must be unique within the flow: non-unique ID is #${node_id}
Multiple nodes have the same ID
Output nodes
Nodes #${node_id1} and #${node_id2} are duplicated as output nodes
Multiple output endpoints in the same processing subgraph
Flow architecture
Flows in Navixy IoT Logic follow a directed graph architecture with specific requirements and constraints.
Basic requirements
Input nodes
Every flow must have at least one data source node
Output nodes
Every flow must have at least one output endpoint node
Node IDs
Each node has a unique ID within its flow (not globally unique)
Connections
Edges define directional data flow between nodes
Multiple connections
Nodes can have multiple incoming and outgoing connections
No cycles
Circular references are not supported
Flow validation
When creating or updating flows, the API performs several validation checks:
Node IDs must be unique within a flow
Each edge must reference valid node IDs
The flow must be acyclic (no circular references)
All nodes must be reachable from data sources
All required fields must be present for each node type
Flow states
enabled: true
Active flow
The flow processes data in real-time
enabled: false
Inactive flow
Data is not processed by this flow
Individual nodes can also be enabled or disabled, allowing for partial flow activation.
Node positioning
The view property in nodes is used for visual representation in UI tools:
"view": {
"position": {
"x": 150,
"y": 50
}
}While optional for API functionality, including this data helps maintain visual layout when editing flows later.
Node reference
Nodes are actual building bricks for your IoT Logic data flows. Each node has its destinctive purpose and capabilities. Now the following nodes are available:
Data Source node - defines where data comes from.
Initiate Attribute node - allows custom calculations to enrich ar standardize data.
Logic node - allows validating logical conditins and routing data based on the outcome.
Action node - enables the automation of sending commands to devices based on the context.
Output endpoint node - Defines the destination of data running trough the flow.
For detailed Node reference with object schemas and parameters, see Nodes.
API rendpoint reference
See OpenAPI specification in API reference.
Best practices
Troubleshooting
Flow not processing data
Check that both flow and all nodes have enabled: true
MQTT connection failing
Verify credentials, domain, port, and SSL settings
Data transformations not working
Test expressions in isolation to identify issues
Missing data in output
Ensure all required attributes are being processed
API errors
Double-check JSON syntax and required fields
Flow validation errors
Ensure node IDs are unique and edges connect valid nodes
Unexpected data format
Verify the calculation expressions in processing nodes
Missing fields in response
Check if you have all required permissions
Last updated
Was this helpful?