Retrieving Your Results
This guide explains how to retrieve the JSON output files generated by the Agents and Workflows platform.
Introduction
Result files offer a structured summary of each processed submission and allow you to integrate Indico's document processing output into your downstream systems.
Retrieving Results Using the API
Results can be accessed through a submission's ResultsFile attribute, or you can use the Indico API to retrieve them programmatically. To learn more, read our article on Retrieving Submissions.
Results with SNS
If SNS (Simple Notification Service) is enabled and Review is disabled, Indico will send notifications with results files upon submission completion. In this case, you do not need to query the platform to retrieve the raw JSON results.
Example
For examples, please view code samples below:
from json import dump
from indico import IndicoClient, IndicoConfig
from indico.queries import RetrieveStorageObject, SubmissionResult
# Submission id to use
sub_id=1234
# Create client
HOST='mycluster.indico.io'
TOKEN='./indico-api-token.txt'
config = IndicoConfig(host=HOST, api_token_path=TOKEN)
client = IndicoClient(config=config)
# Create Submssion Result job
job = client.call(SubmissionResult(sub_id, wait=True))
# Retrieve result file
result = client.call(RetrieveStorageObject(job.result))
# Write output
with open(f"result_{sub_id}.json") as f:
dump(result, f)
using System;
using System.IO;
using System.Threading.Tasks;
using IndicoV2;
using Newtonsoft.Json.Linq;
namespace Examples
{
public class RetrieveSubmission
{
private static string GetToken() =>
File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"indico_api_token.txt"));
public static async Task Main()
{
var client = new IndicoClient(GetToken(), new Uri("https://mycluster.indico.io"));
int submissionId = 1;
var jobResult = await client.GetSubmissionResultAwaiter().WaitReady(submissionId);
Console.WriteLine(jobResult);
}
}
}
package com.indico;
import com.indico.query.GetSubmission;
import com.indico.query.Job;
import com.indico.storage.Blob;
import com.indico.storage.RetrieveBlob;
import com.indico.type.JobStatus;
import java.io.File;
import java.io.IOException;
import java.util.*;
import org.apache.commons.io.FileUtils;
import com.indico.entity.Submission;
import org.json.JSONObject;
public class main {
public IndicoClient client;
private static String token_path = "./indico_api_token.txt";
private static String host = "mycluster.indico.io"
private static Integer submission_id = 1;
public static void main(String args[]) throws Exception {
IndicoConfig config = new IndicoConfig.Builder().host(host)
.protocol("https")
.tokenPath(token_path)
.build();
client = new IndicoKtorClient(config);
Job job = client.submissionResult().submission(submission_id).execute();
/**
* each call to .status() executes a query.
*/
while (job.status() == JobStatus.PENDING) {
Thread.sleep(1000);
System.out.println("Job Status: " + job.status());
}
JSONObject obj = job.result();
String url = obj.getString("url");
RetrieveBlob retrieveBlob = client.retrieveBlob();
Blob blob = retrieveBlob.url(url).execute();
/**
* It is important to close blob storage objects to release the
* connections that may remain from reading the blob.
*/
blob.close();
System.out.println(blob.asString());
System.exit(0);
}
}After you retrieve the result file, it is saved in the JSON format.
To learn more about what the result files contain, check out our Interpreting Your JSON Results article.
Accessing ETL and OCR Output
In your result file, the value of etl_output will contain an Indico storage object (e.g., a file named indico-file:///storage/submission/####/9/9_etl_output.json).
For more details on downloading storage objects, see Download Storage Object.
Updated 7 days ago
