Quickstart Guide
Prerequisites
- A Point One Navigation account (sign up for free trial)
- A personal access token
export APITOKEN="your-token-here"
Verify Your Connection
Test that your token works:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "query { myDevices(limit: 1) { totalElements } }"
}'
Expected response:
{
"data": {
"myDevices": {
"totalElements": 1
}
}
}
List Your Devices
Your first device was automatically created during signup. List all devices:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "query { myDevices(limit: 50) { content { id label enabled createdAt } totalElements } }"
}'
Response:
{
"data": {
"myDevices": {
"content": [
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"label": "Trial Device",
"enabled": true,
"createdAt": "2025-03-04T17:58:26.000Z"
}
],
"totalElements": 1
}
}
}
Copy your device ID for the next steps.
Query Device Details
Get device information including NTRIP credentials:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "query GetDevice($id: ID!) { device(id: $id) { id label services { rtk { enabled connectionStatus ntrip { login password casterUrl mountPoint } } } } }",
"variables": {
"id": "YOUR ID HERE"
}
}'
Response:
{
"data": {
"device": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"label": "Trial Device",
"services": {
"rtk": {
"enabled": true,
"connectionStatus": "NO_CONNECTION",
"ntrip": {
"login": "**********",
"password": "**********",
"casterUrl": null,
"mountPoint": null
}
}
}
}
}
}
Update Device Label
Rename your device:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "mutation UpdateDevice($device: DeviceInput!) { updateDevice(device: $device) { id label updatedAt } }",
"variables": {
"device": {
"id": "YOUR ID HERE",
"label": "Production Rover 1"
}
}
}'
Response:
{
"data": {
"updateDevice": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"label": "Production Rover 1",
"updatedAt": "2025-11-22T03:20:35.000Z"
}
}
}
Add Tags to Devices
Tags are arbitrary key-value pairs, that allow you to organize and query devices by your own criteria. For example, if you operate robotic lawn mowers, you could tag devices with customer IDs and serial numbers.
Add a customer ID tag:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "mutation SetTag($input: TagInput!) { setDeviceTag(input: $input) { key value createdAt } }",
"variables": {
"input": {
"key": "customer_id",
"value": "CUST-12345",
"ids": ["XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"]
}
}
}'
Response:
{
"data": {
"setDeviceTag": {
"key": "customer_id",
"value": "CUST-12345",
"createdAt": "2025-11-22T03:21:07.000Z"
}
}
}
Add a serial number tag:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "mutation SetTag($input: TagInput!) { setDeviceTag(input: $input) { key value } }",
"variables": {
"input": {
"key": "serial_number",
"value": "SN-78910",
"ids": ["XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"]
}
}
}'
Response:
{
"data": {
"setDeviceTag": {
"key": "serial_number",
"value": "SN-78910"
}
}
}
Query Devices by Tags
Find all devices for a specific customer:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "query DevicesByCustomer($customerId: String!) { myDevices(filter: { tag: { key: \"customer_id\", value: { eq: $customerId } } }) { content { id label tags { key value } } totalElements } }",
"variables": {
"customerId": "CUST-12345"
}
}'
Query by serial number:
curl -X POST https://graphql.pointonenav.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $APITOKEN" \
-d '{
"query": "query DeviceBySerial($serialNumber: String!) { myDevices(filter: { tag: { key: \"serial_number\", value: { eq: $serialNumber } } }) { content { id label services { rtk { connectionStatus } } } } }",
"variables": {
"serialNumber": "SN-78910"
}
}'
Response:
{
"data": {
"myDevices": {
"content": [
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"label": "Production Rover 1",
"services": {
"rtk": {
"connectionStatus": "NO_CONNECTION"
}
}
}
]
}
}
}
Troubleshooting
401 Unauthorized
- Verify your token is correct and not expired
- Check the
Authorization: Bearerheader format - Tokens expire after the configured period (default 365 days)
GraphQL errors
- Check that field names match the schema exactly (case-sensitive)
- Ensure required variables are provided
Device not found
- Confirm the device ID exists using the
myDevicesquery - Verify the device belongs to your account
Next Steps
- Explore the full API Reference.