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

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

Action: Generate Report

GET {SeekTable_BaseUrl}/api/report/{report_id}/export?format={format}
report_id (required) GUID of the report saved in your SeekTable account. You can get it from the browser's address bar when report is viewed 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
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) email address of the recipient.
subject (required) email subject.
message (optional) Text content that is included into the email body.
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: on self-hosted SeekTable this action will work only if SMTP settings are configured.

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.

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
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
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
API key is for demo account.