This guide helps you migrate from 1NCE’s Management API to Hologram’s REST API. It covers authentication, endpoint paths, parameter names, identifier schemes, status values, and features that differ between the two platforms.
Clarification: Both Hologram and 1NCE APIs return SIM-level information, even for device endpoints. For purposes of this guide, we will use the term “SIM” in all cases, even for device endpoints.
One of the most important difference between 1NCE and Hologram is SIM structure. Both platforms have the concept of a SIM wrapped by a “device”, and the device effectively is a 1:1 with the SIM in API endpoints.1NCE identifies the SIM by its ICCID and offers single-profile SIMs only.Hologram SIMs can have multiple installed profiles and are identified by the SIM ID, Device ID, or the EID (eUICCID). ICCIDs are profile-level identifiers and can change if profiles are added, removed, or fall back on a SIM. In the Hologram v1 API, profiles are represented by link objects in the links.cellular[] array. If you use Conductor or over-the-air eUICC updates, you may run into cases where the ICCID printed on a physical SIM card is no longer present on the SIM.
1NCE ID
Hologram equivalent
Notes
SIM / Device
SIM / Device
Hologram’s primary entity in the v1 API is a customer “device”, which wraps the SIM but is effectively a 1:1 with the SIM in API endpoints
ICCID
ICCID, the sim field inside links.cellular[]
Hologram SIMs are addressed by integer device IDs, not ICCIDs. ICCID is a profile-level value, and SIMs can have multiple installed profiles
All Hologram API endpoints in this guide are relative to the base URL https://dashboard.hologram.io/api/1. Full reference documentation is at docs.hologram.io/api/v1. An MCP reference of the Hologram API is available at https://docs.hologram.io/mcp.The 1NCE paths shown (e.g. /v1/sims) are relative to https://api.1nce.com/management-api; 1NCE OS paths (e.g. /v1/integrate/..., /v1/locate/...) live under the same base. These are provided for orientation — always confirm against 1NCE’s API reference, as 1NCE controls and may change them.
1NCE uses OAuth 2.0 client credentials. You first exchange your credentials for a Bearer token, then pass that token on every subsequent request. The token request itself is authenticated with HTTP Basic — the base64 of client_id:client_secret — so it’s easy to omit that header and get a 401.
# Step 1: Get a token (Basic auth = base64(client_id:client_secret))curl -X POST https://api.1nce.com/management-api/oauth/token \ -H "Authorization: Basic BASE64_CLIENT_ID_AND_SECRET" \ -H "Content-Type: application/json" \ -d '{ "grant_type": "client_credentials" }'# Step 2: Use the returned access_tokenAuthorization: Bearer YOUR_ACCESS_TOKEN
Tokens expire (the response includes expires_in, currently 3600 seconds). Monitor it and refresh proactively.
Hologram uses HTTP Basic Auth with a static API key — no token exchange, no expiry. You can also base64 encode apikey:YOUR_API_KEY and include it in the Authorization header.
curl --verbose GET \ 'https://dashboard.hologram.io/api/1/users/me' \ --header "Authorization: Basic BASE64_ENCODED_CREDENTIALS"
curl --verbose GET \ 'https://dashboard.hologram.io/api/1/users/me' \ -u apikey:YOUR_API_KEY
Your API key is available in the Hologram Dashboard under Settings → My account.
1NCE and Hologram use different status and state terminology. Read a full breakdown of Hologram SIM statuses and states. The two platforms model this differently: 1NCE’s SIM status field has only two values (Enabled and Disabled); everything else (expiry, deletion) is a lifecycle outcome, not a status.Hologram exposes a richer set of statuses and states, and does not have the concept of a SIM “lifetime.” Once SIMs are activated they remain active until you choose to deactivate them.
1NCE
Hologram status and state
Notes
Enabled (status)
Ready LIVE
SIM is active and can pass data
Disabled (status)
Paused by user PAUSED-USER
Manually disabled. SIM is billed monthly but cannot use data
no equivalent
Paused by system PAUSED-SYS
Paused by Hologram (e.g., balance issue); cannot be resumed by the API
no equivalent
In testing TEST-ACTIVATE
SIM is configured with Test Mode and free data, not yet active
Expired / deleted SIM (lifecycle, irreversible)
Deactivated DEAD
Permanent, irreversible — SIM is off the network
1NCE’s status field returns only Enabled or Disabled. A 1NCE SIM does not become permanently “deleted” through a status change — deletion is what happens once a SIM’s activation period (10-year IoT Lifetime Flat) ends. You can extend a SIM’s lifetime before it expires with POST /v1/sims/{iccid}/extend.
Caution: Hologram’s Deactivated (DEAD) status is permanent and irreversible, but is an action you take manually. Do not deactivate SIMs unless you intend to retire them permanently. 1NCE SIMs have a set lifecycle with an expiration date that you can extend, but are automatically deactivated at the end of the lifecycle.
1NCE identifies each SIM in the path by its ICCID.
GET /v1/sims?page=1&pageSize=100
Pagination uses page and pageSize query params (max pageSize is 100). Response headers X-Total-Count, X-Total-Pages, X-Count-Per-Page, and X-Current-Page describe the result set.Each SIM object returns fields including: iccid, imsi, msisdn, status, label, ip_address, quota_status, and activation_date. (Quota expiry is returned by the quota endpoint, not on the SIM object — see Get data usage / quota.)
GET /devices?orgid=YOUR_ORG_ID&limit=100
Pagination is cursor-based. Use limit and startafter (the lastid from the previous response). The response body includes a links.next URL for the next page.Each device object returns: id, name, orgid, imei, phonenumber, is_hyper, and a links.cellular[] array where each entry has sim (ICCID), imsi, msisdn, state, overagelimit, whencreated.Filtering: use states, sim, imsi, imei, tagid, or tagname query params.Hologram returns an integer id (the device ID), and identifies SIMs by the device ID and the SIM ID since Hologram SIMs can have multiple installed profiles, returned within the links object on a device object. To find a Hologram device by ICCID:
Returns SIM detail including status, label, quota information, IP address, activation/expiry dates.
GET /devices/:deviceId
Returns device detail including all links.cellular[] profiles. The ICCID is at links.cellular[0].sim.To look up by ICCID instead of device ID:
GET /devices?sim=89882806660000123456
This returns the matching device(s) — use data[0].id as your device ID going forward.
Key difference: 1NCE’s SIM status, quota, and connectivity are available on the single-SIM endpoint. In Hologram, the device object includes state and link info. Data quota/usage requires a separate call to /usage/data/.
POST /devices/batch/state{ "state": "pause", # or "live" to resume "deviceids": [123, 456]}
The state field accepts pause, live, or deactivate. This always operates as a batch — pass one or many device IDs. The response returns a jobid; use GET /devices/batch/state?orgid=YOUR_ORG_ID to check job status for large batches.
Key difference: 1NCE has per-SIM PUT endpoints and a bulk POST. Hologram uses a single bulk endpoint for all state changes. Always pass deviceids, even for a single device.
SIMs ship pre-associated with your account on the IoT Lifetime Flat plan. Activation is managed through the portal or the order flow — there is no “activate by ICCID” endpoint in the management API.
Also accepts eidrange for eUICC SIMs. Maximum 2,500 SIMs per request. plan and zone are required for live activations.
Key difference: Hologram requires explicit activation via the API or Dashboard, and requires a data plan and zone. You can pre-stage SIMs in Test Mode (preflight) without activating them, which is the equivalent of 1NCE’s unactivated inventory.
Returns a volume field (remaining data in the lifetime quota, in MB), total_volume, and expiry_date.
1NCE reports quota volume in megabytes, while Hologram’s overagelimit and all usage figures are in bytes. Convert when you port quota logic — multiply 1NCE MB values by 1,048,576 to get the Hologram byte equivalent.
# Historical usageGET /v1/sims/:iccid/usage
Hologram does not have a pre-paid quota bucket. Instead, you query actual session data:
linkid is links.cellular[0].id from the device object.To see the current data limit (the cap, not remaining): it’s in links.cellular[0].overagelimit on the device object. -1 means unlimited.
Key difference: 1NCE’s quota model has a finite bucket that counts down. Hologram charges per-session with a configurable overage cap. There is no “remaining quota” concept — instead you check usage against the cap you set.
# Get account-wide limitsGET /v1/sims/limits# Set account-wide limitsPOST /v1/sims/limits# Get the selectable limits for a service (e.g. data, sms)GET /v1/sims/:service/limits
POST /devices/batch/usagelimit{ "deviceids": [123, 456], "overagelimit": 10485760, # bytes; -1 for unlimited "smslimit": -1}
Limits are set in bytes. -1 disables the limit. Updates apply to all profiles on the SIM.
POST /v1/sims/:iccid/sms{ "payload": "Hello device", "dcs": 0}
The message text is payload. Encoding is controlled by dcs (Data Coding Scheme): 0 for 7-bit GSM (default), 8 for UCS-2. Optional fields include source_address, udh, and expiry_date. There is no payload_encoding field.
POST /sms/incoming{ "deviceid": 123456, "body": "Hello device"}
You can also target by phone number using the phonenumber field.
Terminology difference: 1NCE calls the message a payload. Hologram calls it body. Both accept plain text; Hologram also accepts base64body for binary content.
GET /v1/sims/:iccid/sms # list MT and MO messagesGET /v1/sims/:iccid/sms/:sms_id # single message detailDELETE /v1/sims/:iccid/sms/:sms_id # cancel pending SMS
Inbound SMS messages from devices are delivered as cloud messaging events. There is no dedicated SMS history endpoint; messages appear in the event stream. See cloud messaging.
# Cloud/data messages from devicesGET /csr/data/?orgid=YOUR_ORG_ID
Use base64data for binary/base64-encoded content, or data for plain text — send one, not both. protocol accepts TCP or UDP, port must be 1–65535, and the maximum payload is 10 KB. Messages are delivered over the device’s active cellular session.
Key difference: Hologram’s cloud messaging is a first-class feature of the base connectivity API. 1NCE’s equivalent is part of the separate 1NCE OS add-on and is protocol-specific (CoAP, LwM2M, UDP).
To rename a single device, PUT the device and set name:
PUT /devices/123456{ "name": "sensor-unit-42"}
To rename many devices at once, use POST /devices/names. This endpoint is prefix-based — prefix is required, and Hologram appends the last 5 digits of each device’s ICCID in parentheses (e.g. sensor-unit-(12345)) unless you pass "skipPostfix": true:
POST /devices/names{ "deviceids": [123456, 789012], "prefix": "sensor-unit-"}
POST /devices/names does not accept a single fixed name; it always builds names from prefix. Use PUT /devices/{deviceId} when you need to set an exact, unique name.
Forces the SIM to drop its current network attachment and re-register.
This is not yet supported natively in the Hologram API or dashboard, but we’re working on it. Contact support to perform a network refresh / location update. To submit a formal feature request, please use the Support menu in your dashboard and Send feedback to request this as a feature.
# Single SIMPOST /v1/sims/:iccid/topup# Multiple SIMsPOST /v1/sims/topup[{ "iccid": "...", "volume": 500 }, ...]# Auto top-upPOST /v1/sims/:iccid/topup/auto
Adds data volume to the lifetime flat quota.
No equivalent. Hologram does not use a prepaid quota model. Your SIMs draw from your account balance on a pay as you go basis for data usage at per MB rates. You can optionally set an overage limit to prevent your SIMs from exceeding a certain amount of data usage by setting it in the UI or using the overagelimit parameter in the API.
POST /devices/batch/usagelimit{ "deviceids": [123456], "overagelimit": 104857600 # 100 MB in bytes}
Account balance is managed separately in the Dashboard or billed via invoice.
POST /devices/transfer{ "deviceids": [123456], "orgid": TARGET_ORG_ID}
The orgid field is the target organization that will receive the devices. Transfers devices between organizations within Hologram; the target organization must exist in your account. All devices in a single request must share the same source org, and a maximum of 3,000 devices can be transferred per request.
Location is available through 1NCE OS (separate add-on):
GET /os/v1/devices/:iccid/positionsGET /os/v1/devices/positions/latest
Uses cell tower triangulation and resolution.
GET /devices/locations?orgid=YOUR_ORG_ID
Returns the most recent approximate location for each device based on cell tower data — no add-on required. Location is also embedded in usage records when getlocationinfo=true:
GET /usage/data/?linkid=LINK_ID&getlocationinfo=true