Welcome to your NCAT API portal. Here you can monitor API usage, explore documentation, test endpoints, and manage your API keys. Use the dashboard to track call volume, review available endpoints, and update your credentials as needed.
If your subscription includes access to the API framework and you have not yet set it up, please contact your Analysys Mason representative to receive a temporary API key. You can regenerate your key at any time through this portal.
To take advantage of our integrated web application with a user-friendly interface, visit NCAT.site. If you are not yet an NCAT client, feel free to contact Analysys Mason for more information.
User ID:
Email:
Calls this Minute: 0 / 0
Calls this Month: 0 / 0
The NCAT API provides a simple and consistent way to access NCAT data, tools, and functionality for integration into internal workflows and applications. It also enables customers to leverage a comprehensive dataset of satellite constellations and related information.
The API follows a RESTful design, with requests submitted via HTTP POST and responses returned in JSON format. This documentation is language-agnostic and applies to all major programming languages, offering general integration guidance along with detailed explanations of available endpoints, request parameters, and response objects.
If you have any questions that are not addressed here, the NCAT support team is available to help.
After receiving your NCAT API access credentials, you can log in to the NCAT API portal to generate your unique API access key. Both the login credentials and the API key are issued per organization.
Unlike the NCAT web application (NCAT.site), where each user within an organization has individual login credentials, NCAT API access is granted on a per-client basis. As a result, each NCAT API account is assigned a single API access key.
To authenticate with the API, include your API key in the headers of each HTTPS POST request. An example is provided below. You can also use the API tester in the NCAT API portal to view the full structure of requests and responses.
To prevent unauthorized access to your NCAT account, always keep your API access key secure. If your key is ever compromised, you can generate a new one at any time through the API portal.
All connections to the NCAT API use industry-standard 256-bit HTTPS (SSL) encryption to ensure secure data transmission.
https://api.ncat.site/v1/shells
{
"url": "https://api.ncat.site/v1/shells",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 1
}
}
If a request to the NCAT API fails, the API returns a JSON error response containing an error code and a descriptive message indicating the nature of the issue. The API also uses standard HTTP status codes, returning 200 for successful requests and an appropriate error status code (for example, 404) when a request cannot be fulfilled.
When a validation error occurs—such as when a request parameter is missing, invalid, or references non-existent data—the response includes an additional message object that provides details about the validation failure.
Below is an example of an error response returned when requesting information for a constellation shell that does not exist in the NCAT database.
{
"url": "http://api.ncat.site/v1/shells",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 1000
}
}
{
"message": "Shell ID: 1000 not found"
}
This end point provides information about the shell based on the shell ID number in the NCAT database. Setting ShellID to 0 returns all shells in the database
{
"url": "http://api.ncat.site/v1/shells",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 1
}
}
{
"message": "Shell 1 data",
"data": [
{
"shellid": 1,
"systemname": "Amazon Kuiper",
"altitude": 590,
"orbitalinclination": 33,
"planes": 28,
"satsperplane": 28,
"minelanguser": 35,
"minelanggw": 15,
"notes": "SATLOA2019070400057 ",
"tles": null,
"isl": 4,
"satid": "amz",
"gwantid": "amzgw1",
"userantid": "amzut1",
"architecture": "remodulation"
}
]
}
This end point provides information about the gateway location based on the gateway ID number in the NCAT database. Setting GatewayID to 0 returns all gateways in the database
{
"url": "http://api.ncat.site/v1/gateways",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"GatewayID": 1
}
}
{
"message": "Data for Gateway 1 as recorded in the NCAT database",
"data": [
{
"operator": "Amazon",
"system": "Leo",
"gw_name": "AMZ - Montevideo Uruguay",
"lat": -34.84,
"lon": -56.18,
"antennas": 100,
"antenna_size": 2.4,
"source": "https://www.gub.uy/unidad-reguladora-servicios-comunicaciones/institucional/normativa/resolucion-n-408023-otorgar-amazon-kuiper-uruguay-srl-licencia",
"gwid": 1
}
]
}
This end point provides the latest TLE set for the selected shell ID if available in the NCAT database
{
"url": "http://api.ncat.site/v1/tles",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 13
}
}
{
"message": "6 in-orbit satellites recorded in the NCAT database, based on the latest TLE data",
"data": [
{
"name": "SPACEMOBILE-005",
"catalogNumber": "61046",
"epoch": "2026-03-18T12:25:05.242656",
"inclination": 52.9727,
"eccentricity": 0.00097855,
"meanMotion": 15.20988067,
"tle": [
"0 SPACEMOBILE-005",
"1 61046U 24163B 26077.51742179 .00008762 00000-0 40404-3 0 9999",
"2 61046 52.9727 6.3741 0009786 205.7021 154.3489 15.20988067 83965"
]
},
{
"name": "SPACEMOBILE-002",
"catalogNumber": "61048",
"epoch": "2026-03-18T11:58:15.945888",
"inclination": 52.9808,
"eccentricity": 0.00067046,
"meanMotion": 15.21096341,
"tle": [
"0 SPACEMOBILE-002",
"1 61048U 24163D 26077.49879567 .00008726 00000-0 40138-3 0 9994",
"2 61048 52.9808 6.2241 0006705 203.8722 156.1962 15.21096341 83968"
]
},
{
"name": "SPACEMOBILE-006",
"catalogNumber": "67232",
"epoch": "2026-03-18T06:27:53.972352",
"inclination": 52.9969,
"eccentricity": 0.00098850,
"meanMotion": 15.18082073,
"tle": [
"0 SPACEMOBILE-006",
"1 67232U 25309A 26077.26937468 .00003579 00000-0 18869-3 0 9995",
"2 67232 52.9969 27.9125 0009885 206.7824 153.2660 15.18082073 12783"
]
},
{
"name": "SPACEMOBILE-001",
"catalogNumber": "61047",
"epoch": "2026-03-18T02:55:44.828832",
"inclination": 52.9693,
"eccentricity": 0.00073717,
"meanMotion": 15.21030577,
"tle": [
"0 SPACEMOBILE-001",
"1 61047U 24163C 26077.12204663 .00001791 00000-0 94248-4 0 9999",
"2 61047 52.9693 7.9665 0007372 208.5875 151.4716 15.21030577 83907"
]
},
{
"name": "SPACEMOBILE-004",
"catalogNumber": "61049",
"epoch": "2026-03-18T02:08:13.550208",
"inclination": 52.9792,
"eccentricity": 0.00065927,
"meanMotion": 15.21106583,
"tle": [
"0 SPACEMOBILE-004",
"1 61049U 24163E 26077.08904572 .00018430 00000-0 83018-3 0 9992",
"2 61049 52.9792 7.9277 0006593 233.8507 126.1878 15.21106583 83904"
]
},
{
"name": "SPACEMOBILE-003",
"catalogNumber": "61045",
"epoch": "2026-03-18T00:10:04.371456",
"inclination": 52.9758,
"eccentricity": 0.00036269,
"meanMotion": 15.21019915,
"tle": [
"0 SPACEMOBILE-003",
"1 61045U 24163A 26077.00699504 -.00052551 00000-0 -23405-2 0 9993",
"2 61045 52.9758 8.8157 0003627 219.5707 140.5023 15.21019915 83899"
]
}
]
}
This end point generates custom TLE sets based on orbital definitions
{
"url": "http://api.ncat.site/v1/tles-generate",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 150,
"Name": "My_LEO_constellation",
"Altitude_km": 650,
"Inclination_deg": 49,
"Orbital_planes": 10,
"Sats_per_plane": 11,
"Type": "walker_star",
"RAAN_spacing": 5,
"True_anomaly_delta": 6
}
}
{
"message": "TLE sets generated for 110 satellites",
"data": [
{
"name": "My_LEO_constellation 650km 49deg p1-s1",
"tle": [
"0 My_LEO_constellation 650km 49deg p1-s1",
"1 00000U 19074A 26076.00000000 .00000000 00000-0 13976-2 0 9999",
"2 00000 0004900 000.0000 0000000 75.2962 000.0000 14.73000000000000"
]
},
{
"name": "My_LEO_constellation 650km 49deg p1-s2",
"tle": [
"0 My_LEO_constellation 650km 49deg p1-s2",
"1 00000U 19074A 26076.00000000 .00000000 00000-0 13976-2 0 9999",
"2 00000 0004900 000.0000 0000000 75.2962 032.7300 14.73000000000000"
]
},
.
.
{
"name": "My_LEO_constellation 650km 49deg p10-s11",
"tle": [
"0 My_LEO_constellation 650km 49deg p10-s11",
"1 00000U 19074A 26076.00000000 .00000000 00000-0 13976-2 0 9999",
"2 00000 0004900 324.0000 0000000 75.2962 381.2700 14.73000000000000"
]
}
]
}
This endpoint generates detailed ephemerides for a given UTC time. Satellite positions are propagated using SGP4 based on NCAT TLEs or provided TLEs.
Note: If you want to generate ephemerides data using your own set of TLEs, include them as an array under the TLEs field using the following JSON format:
[
{
"name": "IRIDIUM 154",
"tle": [
"0 IRIDIUM 154",
"1 43574U 18061F 25356.29863962 .00000111 00000-0 32417-4 0 9999",
"2 43574 86.3984 130.7677 0002054 93.4950 266.6481 14.34218406388055"
]
},
{
"name": "IRIDIUM 129",
"tle": [
"0 IRIDIUM 129",
"1 42958U 17061D 25356.29521873 .00000111 00000-0 32626-4 0 9997",
"2 42958 86.3976 99.2273 0001681 93.0944 267.0445 14.34216457429444"
]
}
]
{
"url": "http://api.ncat.site/v1/ephemerides",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 13,
"UTCtime": "2026-03-18T19:41:52",
"TLEs": []
}
}
{
"message": "Satellite data propagated for the specified date and time based on NCAT-recorded TLE sets using the SGP4 propagator",
"data": [
{
"satellite_name": "SPACEMOBILE-005",
"position_geodetic": {
"latitude": -32.400740609348354,
"longitude": 101.56182642992223,
"height": 506.40744720733164
},
"position_eci": {
"x": -4856.681779358104,
"y": -3203.3053809444236,
"z": -3669.386758255762
},
"velocity_eci": {
"x": 5.3626374566684145,
"y": -2.9568110768387195,
"z": -4.525257090489411
},
"position_ecf": {
"x": -1166.0636417056044,
"y": 5699.896389674883,
"z": -3669.386758255762
},
"orbital_mechanics": {
"inclination": 52.972699999999996,
"mean_motion": 3.8022369524204898,
"orbital_period": 94.68110601860974,
"revs_per_day": "15.21",
"eccentricity": 0.0009786
}
},
{
"satellite_name": "SPACEMOBILE-002",
"position_geodetic": {
"latitude": -28.125471896246342,
"longitude": -130.73450177233198,
"height": 513.1696927384655
},
"position_eci": {
"x": 5754.240783581839,
"y": -1968.8620997667238,
"z": -3230.685622852168
},
"velocity_eci": {
"x": 4.149571090089334,
"y": 4.059938706802666,
"z": 4.91397310533651
},
"position_ecf": {
"x": -3968.6763965524688,
"y": -4608.395883903822,
"z": -3230.685622852168
},
"orbital_mechanics": {
"inclination": 52.98080000000001,
"mean_motion": 3.802508680709168,
"orbital_period": 94.67434008141699,
"revs_per_day": "15.21",
"eccentricity": 0.0006705
}
},
{
"satellite_name": "SPACEMOBILE-006",
"position_geodetic": {
"latitude": 34.55472626224693,
"longitude": 62.46717809490322,
"height": 512.1711708474513
},
"position_eci": {
"x": -5652.458839261105,
"y": 562.9086459819076,
"z": 3887.7934552539423
},
"velocity_eci": {
"x": -3.477433243161265,
"y": -5.233724750504548,
"z": -4.298580827133476
},
"position_ecf": {
"x": 2625.8114052761807,
"y": 5037.089589950104,
"z": 3887.7934552539423
},
"orbital_mechanics": {
"inclination": 52.9969,
"mean_motion": 3.7949762227766737,
"orbital_period": 94.86225442977835,
"revs_per_day": "15.18",
"eccentricity": 0.0009885
}
},
{
"satellite_name": "SPACEMOBILE-001",
"position_geodetic": {
"latitude": -36.6620716043427,
"longitude": 106.85341287257971,
"height": 509.6596526158828
},
"position_eci": {
"x": -4316.855184333827,
"y": -3458.3417344494997,
"z": -4091.69166086314
},
"velocity_eci": {
"x": 5.902913480861378,
"y": -2.5774262170313613,
"z": -4.055737641622382
},
"position_ecf": {
"x": -1603.6595179429194,
"y": 5293.736146168989,
"z": -4091.69166086314
},
"orbital_mechanics": {
"inclination": 52.969300000000004,
"mean_motion": 3.8023427582663136,
"orbital_period": 94.67847137593213,
"revs_per_day": "15.21",
"eccentricity": 0.0007372
}
},
{
"satellite_name": "SPACEMOBILE-004",
"position_geodetic": {
"latitude": 37.240790364382505,
"longitude": -72.52763564594049,
"height": 509.92005169091044
},
"position_eci": {
"x": 4247.142429683399,
"y": 3478.4808090027514,
"z": 4147.28744761051
},
"velocity_eci": {
"x": -5.971979028466775,
"y": 2.5333120654303585,
"z": 3.9811239332781923
},
"position_ecf": {
"x": 1648.2930724175676,
"y": -5236.523417692095,
"z": 4147.28744761051
},
"orbital_mechanics": {
"inclination": 52.97919999999999,
"mean_motion": 3.8025340683715543,
"orbital_period": 94.67370798709793,
"revs_per_day": "15.21",
"eccentricity": 0.0006593
}
},
{
"satellite_name": "SPACEMOBILE-003",
"position_geodetic": {
"latitude": 32.23075012529347,
"longitude": 45.00330577589984,
"height": 504.79910636600835
},
"position_eci": {
"x": -5358.19309241548,
"y": 2291.1031774245016,
"z": 3651.3282773038572
},
"velocity_eci": {
"x": -4.747411628148479,
"y": -3.855740060132942,
"z": -4.538946871473902
},
"position_ecf": {
"x": 4120.40460985791,
"y": 4120.880104574179,
"z": 3651.3282773038572
},
"orbital_mechanics": {
"inclination": 52.9758,
"mean_motion": 3.8023169753179618,
"orbital_period": 94.67911337662628,
"revs_per_day": "15.21",
"eccentricity": 0.0003627
}
}
]
}
Retrieve detailed visibility data for ground stations at a given UTC time, listing satellites above a minimum elevation and excluding those within a configurable GEO arc range.
Note: Use the following JSON format to input up to 100 user terminal locations:
[
{
"name": "NYC",
"longitude": 40.78235,
"latitude":-73.96431,
"height":1},
{
"name": "SF",
"longitude": 37.77158,
"latitude":-122.45915,
"height":2
}
]
{
"url": "http://api.ncat.site/v1/visibility",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
},
"body": {
"ShellID": 45,
"UTCtime": "2026-03-18T21:15:29",
"TLEs": [],
"Min_elevation": 20,
"GEO_arc_exclusion_angle": 0,
"Terminals": [
{
"name": "NYC",
"longitude": 40.78235,
"latitude": -73.96431,
"height": 1
},
{
"name": "SF",
"longitude": 37.77158,
"latitude": -122.45915,
"height": 2
}
]
}
}
{
"message": "Satellite data propagated for the specified date and time based on NCAT-recorded TLE sets using the SGP4 propagator",
"data": [
{
"name": "NYC",
"longitude": 40.78235,
"latitude": -73.96431,
"height": 1,
"visible_sats": [
{
"sat_name": "IRIDIUM 173",
"position_geodetic": {
"latitude": -74.18460214582413,
"longitude": 88.74107729657429
},
"position_ecf": {
"x": 43.13810068325688,
"y": 1962.9746379069559,
"z": -6890.360241828365
},
"azimuth": 114.06,
"elevatiion": 21.44,
"range": 1715.63
},
{
"sat_name": "IRIDIUM 157",
"position_geodetic": {
"latitude": -76.6614140284457,
"longitude": 28.184650207358416
},
"position_ecf": {
"x": 1465.2027541257848,
"y": 785.1295062088702,
"z": -6969.260587954849
},
"azimuth": 223.85,
"elevatiion": 56.41,
"range": 945.8
}
]
},
{
"name": "SF",
"longitude": 37.77158,
"latitude": -122.45915,
"height": 2,
"visible_sats": [
{
"sat_name": "IRIDIUM 138",
"position_geodetic": {
"latitude": -55.259244421859535,
"longitude": -141.0488965013446
},
"position_ecf": {
"x": -3187.5983351233494,
"y": -2576.7651881192774,
"z": -5875.32573993825
},
"azimuth": 196.49,
"elevatiion": 69.47,
"range": 847.75
}
]
}
]
}
Once regenerated copy the new key and save it since it will not be shown again
New API Key: