Skip to content

REST APIs

The Mantis platform exposes a set of REST APIs for integrating Mantis capabilities into your own workflows and applications.

All APIs are accessed over HTTPS at your customer API base URL:

https://api.<your-subdomain>.mantis-geophysics.io

Authentication

All API requests must be authenticated. See Authentication for details on obtaining tokens and API keys.

Include an access token in every request:

Authorization: Bearer <access_token>

Or, if using an API key:

x-api-key: <your-api-key>

Services

The API is organised into four services:

Service Base path Description
Projects /projects Create and manage projects and layers
Rock Physics /rock-physics Run rock physics models and fluid substitution
Reflectivity /reflectivity Calculate reflection coefficients and elastic tensors
Wave Modelling /wave-modelling Submit and manage 2D FD simulations

Projects API

List projects

GET /projects

Returns all projects belonging to your account.

Create a project

POST /projects

Request body:

{
  "name": "string",
  "description": "string",
  "gridSpacing": 5
}

Get a project

GET /projects/{projectId}

Delete a project

DELETE /projects/{projectId}

List layers

GET /projects/{projectId}/layers

Create a layer

POST /projects/{projectId}/layers

Request body:

{
  "formationName": "string",
  "topDepth": 0,
  "vp": 3.5,
  "vs": 1.7,
  "rho": 2.5
}

Update a layer

PUT /projects/{projectId}/layers/{layerId}

Delete a layer

DELETE /projects/{projectId}/layers/{layerId}

Import from CSV

POST /projects/import
Content-Type: multipart/form-data

Upload a CSV file to create a project from a well log. See CSV format for the required column specification.


Rock Physics API

Submit analytics

POST /rock-physics/{projectId}/layers/{layerId}/analytics

Runs the rock physics model and stores the results for use in reflectivity and wave modelling.

Request body:

{
  "porosity": 0.2,
  "saturation": 0.8,
  "mineralBulkModulus": 37.0,
  "mineralDensity": 2.65,
  "wettingFluid": {
    "bulkModulus": 2.2,
    "density": 1.0,
    "viscosity": 1.0
  },
  "nonWettingFluid": {
    "bulkModulus": 0.02,
    "density": 0.1,
    "viscosity": 0.01
  },
  "absolutePermeability": 100.0,
  "fractures": [
    { "name": "set1", "type": "isotropic_microcracks" }
  ]
}

Get analytics results

GET /rock-physics/{projectId}/layers/{layerId}/analytics

Reflectivity API

Calculate reflection coefficients

POST /reflectivity/{projectId}/reflection-coefficients

Request body:

{
  "upperLayerId": "string",
  "lowerLayerId": "string",
  "scenarioId": "string",
  "dominantFrequency": 35.0,
  "fractureTilt": 0.0,
  "fractureAzimuth": 0.0
}

Elastic tensor slowness surfaces

POST /reflectivity/elastic-tensor

Request body:

{
  "cij": [[...], ...],
  "rho": 2.5
}


Wave Modelling API

Submit a simulation

POST /wave-modelling/{projectId}/jobs

Request body:

{
  "jobName": "string",
  "sourceTimeFunction": "ricker",
  "peakFrequency": 35.0,
  "offsetVspArrays": 1,
  "layerScenarios": {
    "<layerId>": "<scenarioId>"
  }
}

List jobs

GET /wave-modelling/{projectId}/jobs

Get job status

GET /wave-modelling/{projectId}/jobs/{jobId}

Stop a job

POST /wave-modelling/{projectId}/jobs/{jobId}/stop

Delete a job

DELETE /wave-modelling/{projectId}/jobs/{jobId}

Download results

GET /wave-modelling/{projectId}/jobs/{jobId}/results

Returns pre-signed download URLs for seismograms, wavefield snapshots, and the parameter log.


Error responses

Code Meaning
200 Success
201 Resource created
400 Bad request — check request body or parameters
401 Unauthorised — missing or invalid token/key
403 Forbidden — insufficient permissions
404 Resource not found
429 Too many requests — rate limit exceeded
500 Internal server error

Error responses include a JSON body:

{
  "error": "string",
  "message": "string"
}