SPICE Files#
The IMAP SDC provides two REST API endpoints for accessing SPICE kernel data:
/spice-query for querying kernel metadata and /metakernel for retrieving
a ready-to-use metakernel (or a list of kernel filenames) that covers a
requested time range.
Both endpoints are accessible from the base URL: https://api.imap-mission.com
SPICE Query#
The /spice-query endpoint returns metadata for SPICE kernels stored in the
SDC database. Results can be filtered by kernel type, time range, ingestion
date, or filename.
SPICE Query#
- GET /spice-query#
Query for SPICE kernel metadata
- Query Parameters:
file_name (string) – The name of a specific SPICE kernel file (e.g.
naif0012.tls).start_time (string) – Coverage start time in TDB seconds since J2000. Returns kernels whose coverage ends on or after this time.
end_time (string) – Coverage end time in TDB seconds since J2000. Returns kernels whose coverage begins on or before this time.
type (string) – The SPICE kernel type to filter by. Accepted values are:
leapseconds,planetary_constants,imap_frames,science_frames,spacecraft_clock,earth_attitude,planetary_ephemeris,ephemeris_reconstructed,ephemeris_nominal,ephemeris_predicted,ephemeris_90days,ephemeris_long,ephemeris_launch,attitude_history,attitude_predict,pointing_attitude.latest (string) – If
True, only return the latest version of each kernel matching the other query parameters.start_ingest_date (string) – Filter results to kernels ingested on or after this date, in the format
YYYYMMDD.end_ingest_date (string) – Filter results to kernels ingested on or before this date, in the format
YYYYMMDD.
- Status Codes:
200 OK – Successful query — returns a list of SPICE kernel metadata objects
400 Bad Request – Invalid query parameter or parameter value
Example Usage:
# Query for all attitude_history kernels covering a time range
curl -X GET -H "Accept: application/json" \
"https://api.imap-mission.com/spice-query?start_time=315576066&end_time=4575787269&type=attitude_history"
# Query for a specific kernel by filename
curl -X GET -H "Accept: application/json" \
"https://api.imap-mission.com/spice-query?file_name=naif0012.tls"
# Query for the latest version of the spacecraft_clock kernel
curl -X GET -H "Accept: application/json" \
"https://api.imap-mission.com/spice-query?type=spacecraft_clock&latest=True"
Possible Responses:
[
{
"file_name": "ck/imap_2025_274_2025_276_001.ah.bc",
"file_root": "imap_2025_274_2025_276_.ah.bc",
"kernel_type": "attitude_history",
"version": 1,
"min_date_j2000": 812631669.2765242,
"max_date_j2000": 812725268.1910387,
"file_intervals_j2000": [
[
812631669.2765242,
812725268.1910387
]
],
"min_date_datetime": "2025-10-01, 23:00:00",
"max_date_datetime": "2025-10-03, 00:59:59",
"file_intervals_datetime": [
[
"2025-10-01T23:00:00.094178+00:00",
"2025-10-03T00:59:59.008694+00:00"
]
],
"min_date_sclk": "1/0497055600:00000",
"max_date_sclk": "1/0497149199:00000",
"file_intervals_sclk": [
[
"1/0497055600:00000",
"1/0497149199:00000"
]
],
"sclk_kernel": "/tmp/naif0012.tls",
"lsk_kernel": "/tmp/imap_sclk_0147.tsc",
"ingestion_date": "2026-04-06, 23:57:54",
"timestamp": 1775519874
},
]
{"statusCode": 400, "body": "<param> is not a valid query parameter. Valid query parameters are: ['file_name', 'start_time', 'end_time', 'type', 'latest', 'start_ingest_date', 'end_ingest_date']"}
Metakernel#
The /metakernel endpoint builds and returns a SPICE metakernel covering a
requested time range. By default the response is a .tm metakernel file that
can be loaded directly with spiceypy.furnsh(). Passing list_files=True
returns a JSON list of kernel filenames instead.
SPICE Query#
- GET /metakernel#
Retrieve a metakernel or list of SPICE kernel filenames for a time range
- Query Parameters:
start_time (string) – Coverage start time. Accepts either TDB seconds since J2000 or a date string in the format
YYYYMMDD. (Required)end_time (string) – Coverage end time. Accepts either TDB seconds since J2000 or a date string in the format
YYYYMMDD. (Required)spice_path (string) – Root path for the SPICE directory. This path is prepended to all kernel file locations in the returned metakernel. If omitted the paths are left relative. Only applicable if
list_files`isFalse.list_files (string) – If
True, return only a list of kernel filenames instead of a full metakernel file.require_coverage (string) – If
True, the request will fail with a HTTP422status if there are any gaps in coverage for the requested time range.file_types (string) – Comma-separated list of kernel types to include. If omitted, all available kernel types are included. Accepted values are:
leapseconds,planetary_constants,imap_frames,science_frames,spacecraft_clock,earth_attitude,planetary_ephemeris,ephemeris_reconstructed,ephemeris_nominal,ephemeris_predicted,ephemeris_90days,ephemeris_long,ephemeris_launch,attitude_history,attitude_predict,pointing_attitude.
- Status Codes:
200 OK – Successful response. Returns a metakernel file (text/plain) when
list_filesisFalse(default), or a JSON array of kernel filenames whenlist_filesisTrue.404 Not Found – No kernel files found for the requested time range
422 Unprocessable Entity – Coverage gaps detected when
require_coverage=True. The response body contains a list of the gap intervals.
Example Usage:
# Retrieve a metakernel covering a time range for selected kernel types
curl -X GET -H "Accept: application/json" \
"https://api.imap-mission.com/metakernel?start_time=797949057&end_time=798035454&file_types=leapseconds,attitude_history"
# Get only a list of kernel filenames (no metakernel wrapper)
curl -X GET -H "Accept: application/json" \
"https://api.imap-mission.com/metakernel?start_time=797949057&end_time=798035454&file_types=leapseconds,spacecraft_clock&list_files=True"
# Retrieve a metakernel with a custom spice_path prefix in the output
curl -X GET -H "Accept: application/json" \
"https://api.imap-mission.com/metakernel?start_time=797949057&end_time=798035454&spice_path=/my/path/imap"
Possible Responses:
Metakernel file (default, list_files omitted or False):
\begintext
This is the most up to date Metakernel as of
2026-04-13 18:19:21.912444+00:00.
This attempts to cover data from
797949057 to 798035454
seconds since J2000.
\begindata
KERNELS_TO_LOAD = ( 'lsk/naif0012.tls',
'fk/imap_130.tf',
'fk/imap_science_120.tf',
'sclk/imap_sclk_0147.tsc',
'spk/de440.bsp'
)
\begintext
List of filenames (list_files=True):
["naif0012.tls", "imap_130.tf", "imap_science_120.tf", "imap_sclk_0147.tsc", "de440.bsp"]
Coverage gap error (require_coverage=True and gaps exist):
{
"statusCode": 422,
"body": {
"leapseconds_category": [],
"planetary_constants_category": [],
"imap_frames_category": [],
"science_frames_category": [],
"spacecraft_clock_category": [],
"earth_attitude_category": [],
"planetary_ephemeris_category": [],
"spacecraft_ephemeris_category": [[797990001, 798035454]],
"spacecraft_attitude_category": [[797949057, 797990000]],
"pointing_attitude_category": []
}
}
Each key is a SPICE kernel category. Empty lists indicate full coverage; non-empty
lists contain one or more [start_time, end_time] intervals (in TDB seconds
since J2000) where no kernel was found.
No files found:
{"statusCode": 404, "body": "No files found."}
Kernel Types#
The following kernel type values are accepted by both the type parameter of
/spice-query and the file_types parameter of /metakernel:
Kernel Type |
Description |
|---|---|
|
Leapseconds kernel (LSK) |
|
Planetary constants kernel (PCK) |
|
IMAP spacecraft frames kernel (FK) |
|
Science instrument frames kernel (FK) |
|
Spacecraft clock kernel (SCLK) |
|
Earth attitude kernel |
|
Planetary ephemeris kernel (SPK) |
|
Reconstructed spacecraft ephemeris (SPK) |
|
Nominal spacecraft ephemeris (SPK) |
|
Predicted spacecraft ephemeris (SPK) |
|
90-day spacecraft ephemeris (SPK) |
|
Long-term spacecraft ephemeris (SPK) |
|
Launch ephemeris (SPK) |
|
Historical spacecraft attitude kernel (CK) |
|
Predicted spacecraft attitude kernel (CK) |
|
Pointing attitude kernel (CK) |