This guide walks through the complete process to obtain an active, transmitting spectrum grant using WINNF-TS-0016 protocols.
cbsdIdgrantIdKey Bridge SAS Tip: Always include measurements (optional but requested) + grouping for best results. Full CBRS band requests work well.
POST /cbsd/api/v1.2/registration
{
"registrationRequest": [{
"userId": "user@example.com",
"fccId": "ABC123",
"cbsdSerialNumber": "SN456789",
"measCapability": ["RECEIVED_POWER_WITHOUT_GRANT", "RECEIVED_POWER_WITH_GRANT"],
"installationParam": {
"latitude": 38.95,
"longitude": -77.1,
"height": 10,
"heightType": "AGL",
"indoorDeployment": false,
"antennaAzimuth": 0,
"antennaDowntilt": 0,
"antennaGain": 15.0,
"eirpCapability": 37.0
},
"groupingParam": [{
"groupType": "INTERFERENCE_COORDINATION",
"groupId": "MyNetwork-Site1"
}]
}]
}
Success: Store cbsdId (e.g., "SAS123/CBSD-001")
Query full band for best options:
POST /cbsd/api/v1.2/spectrumInquiry
{
"spectrumInquiryRequest": {
"cbsdId": "SAS123/CBSD-001",
"lowPowerIndicator": false,
"operationParam": {
"operationFrequencyRange": {
"lowFrequency": 3550000000,
"highFrequency": 3700000000
},
"maxEirp": 37.0
},
"measReport": {
"rcvdPowerMeasReports": [{
"measFrequency": 3550000000,
"measBandwidth": 50000000,
"measRcvdPower": -60.0
}]
}
}
}
Success: Note top availableChannel (e.g., 3620-3630 MHz @ 30 dBm)
Tip: Full band request + measurements = highest approval chance.
Use full band or narrow to preferred from inquiry:
POST /cbsd/api/v1.2/grant
{
"grantRequest": [{
"cbsdId": "SAS123/CBSD-001",
"operationParam": {
"operationFrequencyRange": {
"lowFrequency": 3550000000,
"highFrequency": 3700000000 // SAS picks best
},
"maxEirp": 37.0
},
"measReport": {
"rcvdPowerMeasReports": [{
"measFrequency": 3620000000,
"measBandwidth": 10000000,
"measRcvdPower": -55.2
}]
}
}]
}
Success: Receive grantId (e.g., "GRANT-789"), operationParam, grantExpireTime
Handle 400 GRANT_FAILURE: Lower maxEirp by 3-6 dB, narrow range, retry.
Critical: Do NOT transmit until this succeeds!
POST /cbsd/api/v1.2/heartbeat
{
"heartbeatRequest": [{
"cbsdId": "SAS123/CBSD-001",
"grantId": "GRANT-789",
"grantRenew": true,
"operationState": "GRANTED"
}]
}
Success: Receive transmitExpireTime (future timestamp) + heartbeatInterval (e.g., 60s)
Now you can transmit on granted params until transmitExpireTime.
Every heartbeatInterval (± jitter):
{
"heartbeatRequest": [{
"cbsdId": "SAS123/CBSD-001",
"grantId": "GRANT-789",
"grantRenew": true,
"operationState": "AUTHORIZED",
"transmitExpireTime": "2026-01-07T14:30:00Z", // Your current TX end
"measReport": { /* optional ongoing measurements */ }
}]
}
Monitor:
transmitExpireTime ← Stop TX immediately if pastoperationParam ← Adjust power/range instantly| Technique | Benefit |
|---|---|
| Full CBRS band request | SAS finds best channel automatically |
| Always send measurements | Higher EIRP, fewer denials, interference help |
| Use grouping | Coordinated power boost within your network |
| Heartbeat 5-10s early + jitter | Avoid synchronized failures |
| Multi-grant (2-3 channels) | Redundancy if one terminates |
Grant Denied (400) → Lower EIRP → Retry (3x)
↓
Heartbeat Suspend (500) → Stop TX → Continue HB
↓
Terminate (501) → Relinquish → Back to Step 2
T0: Register → cbsdId
T+2s: Inquiry → 3 channels available
T+3s: Grant Req → GRANT-789 (3620-3630 MHz, 30dBm)
T+4s: 1st HB → AUTHORIZED until 14:05
T+4s: **START TRANSMIT**
T+59s: 2nd HB → Renewed until 14:06
... (repeat every 60s)
T+5min: HB 500 → **STOP TX** (DPA), continue HB
T+7min: HB 0 → **RESUME TX**
Test First: Health endpoint → Sandbox SAS → Production
Pages