Logo

NCAT API Portal


Login

NEW The NCAT API framework is a RESTful, JSON-based service providing pre-built functionality through standardized interfaces, enabling developers to seamlessly integrate and extend NCAT data and capabilities within organization-specific workflows and business logic.

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 Info

User ID:

Email:


Usage Statistics

Calls this Minute: 0 / 0

Calls this Month: 0 / 0

API Tester




Request preview - Click 'Call API' to send to the NCAT server


    
  

Response


    
  

Log

API Documentation

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.

Notes:


Getting Started

API Access Key & Authentication

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.


Keep Your API Key Secure

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.


256-bit HTTPS Encryption

All connections to the NCAT API use industry-standard 256-bit HTTPS (SSL) encryption to ensure secure data transmission.


Example API Request

NCAT API endpoint

https://api.ncat.site/v1/shells

POST request example

{
    "url": "https://api.ncat.site/v1/shells",
    "method": "POST",
    "headers": {
      "Content-Type": "application/json",
      "x-api-key": "YOUR_API_KEY"
    },
    "body": {
      "ShellID": 1
    }
}
 

API Errors

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.

Example Request

{
  "url": "http://api.ncat.site/v1/shells",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "x-api-key": "YOUR_API_KEY"
  },
  "body": {
    "ShellID": 1000
  }
}

Example Error Response

{
  "message": "Shell ID: 1000 not found"
}

API Endpoints

Shells

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

Example of API request

{
  "url": "http://api.ncat.site/v1/shells",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "x-api-key": "YOUR_API_KEY"
  },
  "body": {
    "ShellID": 1
  }
}

Example API Response

{
  "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"
    }
  ]
}

Gateways

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

Example of API request

{
  "url": "http://api.ncat.site/v1/gateways",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "x-api-key": "YOUR_API_KEY"
  },
  "body": {
    "GatewayID": 1
  }
}

Example API Response

{
  "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
    }
  ]
}

TLEs

This end point provides the latest TLE set for the selected shell ID if available in the NCAT database

Example of API request

{
  "url": "http://api.ncat.site/v1/tles",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "x-api-key": "YOUR_API_KEY"
  },
  "body": {
    "ShellID": 13
  }
}

Example API Response

{
  "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"
      ]
    }
  ]
}

Generate TLEs

This end point generates custom TLE sets based on orbital definitions

Example of API request

{
  "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
  }
}

Example API Response (truncated)

{
  "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"
      ]
    }
  ]
}

Generate ephemerides data

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"
        ]
      }
    ]

Example of API request

{
  "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": []
  }
}

Example API Response (truncated)

{
  "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
      }
    }
  ]
}

Calculate visibility data

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
      }
  ]

Example of API request

{
  "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
      }
    ]
  }
}

Example API Response (truncated)

{
  "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
        }
      ]
    }
  ]
}

Change Password

Regenerate API Key

Once regenerated copy the new key and save it since it will not be shown again

New API Key: