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 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 Account → Get 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=test123456789xyzImportant: 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).
{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 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):
<report_public_link>/export/<format>
URLreport_parameters
in the query string as described here{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
{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
{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
{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
{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
{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
{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
{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