This documentation page assumes that you already have a SeekTable account. Create your free account by signing up.

Direct Web API Integration

SeekTable provides secure web API for accessing reports that are saved in your SeekTable account. This API is available both on cloud and self-hosted versions, and you can use it directly to automate reports generation without need to use 3rd party services like Zapier or MS Flow.

If you're familiar with a command line, reports may be generated on a schedule with help of curl and Task Scheduler (Windows) / cron (Linux). Generated reports may be saved into the local file and handled as you want, for example:

Also SeekTable report may be delivered by email with a single Share by Email API action.

Base API URL and Authorization

Base URL for web API endpoints is https://www.seektable.com/ (cloud, in case of self-hosted version use your installation base URL). All requests should include HTTP header Authorization with a value from Manage AccountGet API Key dialog.

Important: on self-hosted SeekTable API access is disabled by default. To enable web API on your installation please add these lines to the docker-compose.seektable.env file:

SeekTable_ST__Api__Jwt__ValidIssuer=seektable.com
SeekTable_ST__Api__Jwt__ValidateIssuer=true
SeekTable_ST__Api__Jwt__ValidateAudience=false
SeekTable_ST__Api__Jwt__ValidateLifetime=false
SeekTable_ST__Api__Jwt__ValidateIssuerSigningKey=true
SeekTable_ST__Api__Jwt__IssuerSigningKeyString=test123456789xyz
Important: to apply changes in the .env file seektable/seektable container should be re-created. This is performed automatically if you use docker compose up to start the containers.

It is recommended to use your an unique secret value instead of test123456789xyz (it should have at least 16 chars).

Action: Generate Report

GET POST {SeekTable_BaseUrl}/api/report/{report_id}/export?format={format}
report_id (required) GUID of the report in your SeekTable account. You can get it from the browser's address bar when report is opened inside SeekTable.
format (required) Possible values: html, pdf, csv, excel, excelpivottable (only for pivot table reports), json, png
html_inline_style (optional) Enables inline-styles rendering for the HTML output. This is useful if you want to include this HTML directly into email body. Possible values: true/yes/1 or false/no/0.
chart_only (optional) Render only chart (without table) if format is pdf or png. Possible values: true/yes/1 or false/no/0.
report_parameters (optional) JSON object with report parameters like {"param_name": "value"}.
Note: "Advanced publishing" subscription is needed for this capability.
Response Body Report content according to the requested format.
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/report/edb1ee25d81c4acd96d2c9d0f819afde/export?format=pdf --output export.pdf
This API key is for demo account; report_id refers to Superstore Sales → Total by Year.

This API allows you to export saved report 'as-is' (identical to the Export initiated from the web interface). For advanced automated reports generation scenarious you may consider to use an alternative approach based on report public links (requires "Advanced publishing" subscription):

Action: Share Report By Email

POST {SeekTable_BaseUrl}/api/report/{report_id}/share/email
report_id (required) GUID of the report saved in your SeekTable account.
to (required) an email address of the recipient.
subject (required) an email subject.
message (optional) an additional text content that is included into the email body.
include_report_html (optional) flag (boolean) that determines whether the report's HTML is placed directly into the email body (goes after the 'message'). If the chart is enabled for the report it is included as an image.
Default value is True. This API recognizes 0 and no as False.
attach_export (optional) a list of comma-separated types of exports that should be attached to the email.
Possible export types are: pdf, csv, excel, excelpivottable (this one works only for pivot table reports).
report_parameters (optional) JSON object with report parameters like {"param_name": "value"}.
Note: "Advanced publishing" subscription is needed for this capability.
Response HTTP/200 (OK) if email with an email with a report was sent successfully.

Important: to use this API on self-hosted SeekTable SMTP settings should be configured.

curl -k -H "Authorization: YOUR_SEEKTABLE_ACCOUNT_API_KEY" -F to=TO_EMAIL_ADDRESS -F "subject=Report Test" -F "message=This is report comment" -F include_report_html=true -F "attach_export=pdf,csv" https://www.seektable.com/api/report/REPORT_ID/share/email

Action: Upload CSV file

POST {SeekTable_BaseUrl}/api/cube/import/csv?cubeId={cubeId}&filename={filename}
cubeId (optional) GUID of an existing CSV cube to refresh. If not specified new cube is created.
filename (optional) Explicitely specified name of the CSV file. This parameter is useful if CSV content goes directly in the request body (not as multipart/form-data). If file is compressed it should have either ".gz" or ".zip" extension.
Request Body (required) CSV data. File content may be as "multipart/form-data" file.
Response HTTP/200 (OK) + JSON metadata of the created/refreshed cube in case of successful upload.
curl -k -F "file=@sales.csv" -H "Authorization: YOUR_SEEKTABLE_ACCOUNT_API_KEY" https://www.seektable.com/api/cube/import/csv?cubeId=CUBE_ID_TO_REFRESH

Action: Get Report Info

GET {SeekTable_BaseUrl}/api/report/{report_id}
report_id (required) GUID of the report saved in your SeekTable account.
Response Body report metadata JSON, for example:
{
  "Id": "edb1ee25d81c4acd96d2c9d0f819afde",
  "Name": "Total by Year",
  "ReportType" : "pivot",  // or "table"
  "Config" : "{report_JSON_config}"
}
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/report/edb1ee25d81c4acd96d2c9d0f819afde
API key is for demo account, report_id refers to Superstore Sales → Total by Year.

Action: Get List of Reports

GET {SeekTable_BaseUrl}/api/report
Response Body JSON data (array) with metadata for all reports saved in your SeekTable account.
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/report
this API key is for demo account.

Action: Get Cube Info

GET {SeekTable_BaseUrl}/api/cube/{cube_id}
cube_id (required) GUID of the cube in your SeekTable account. You can get it from the report metadata or browser's address bar when cube page is viewed inside SeekTable.
Response Body cube metadata JSON, for example:
{
  "Id": "7f74de2546804cf9b12da34d7e5af382",
  "Name": "Superstore Sales",
  "SourceType":"File (CSV)",
  "SourceTypeId":"file-csv",
  "SourceFile":"Superstore Sales.zip",  // only for CSV cubes
  "CreateDate":"2017-10-19T08:14:50.736952"
}
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/cube/7f74de2546804cf9b12da34d7e5af382
this API key is for demo account; cube_id refers to Superstore Sales.

Action: Get List of Cubes

GET {SeekTable_BaseUrl}/api/cube
Response Body JSON data (array) with metadata for all cubes in your SeekTable account.
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/cube
this API key is for demo account.

Action: Generate Dashboard Export only if dashboards are enabled

GET POST {SeekTable_BaseUrl}/api/dashboard/{dashboard_id}/export?format={format}
dashboard_id (required) GUID of the dashboard in your SeekTable account. You can get it from the browser's address bar when dashboard is opened inside SeekTable.
format (required) Possible values: excel, pdf
Note: appropriate export should be enabled for this concrete dashboard.
report_parameters (optional) JSON object with report parameters like {"param_name": "value"}.
Note:Your account should have "Advanced publishing" to specify dashboard parameters in API call.
Response Body Dashboard export content according to the requested format.
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/dashboard/00f7e942fe7e420694bf478ae659ea58/export?format=excel --output export.xlsx
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/dashboard/00f7e942fe7e420694bf478ae659ea58/export?format=pdf --output export.pdf
This API key is for demo account; dashboard_id refers to Northwind Orders dashboard.

Action: Get List of Dashboards only if dashboards are enabled

GET {SeekTable_BaseUrl}/api/dashboard
Response Body JSON data (array) with metadata for all dashboards that are accessible in your SeekTable account.
curl -k -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmJmIjoxNTg0NzkwNzg1LCJleHAiOjMxNjI2Mjc1ODUsImlhdCI6MTU4NDc5MDc4NSwiaXNzIjoic2Vla3RhYmxlLmNvbSJ9.aZBhNOmjZMjOmSDrXIZk01gpQCF_hjoBoT10pwiPjkw" https://www.seektable.com/api/dashboard
this API key is for demo account.