from retab import MIMEData, Retab
client = Retab()
document = MIMEData(
filename="document.pdf",
url="https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
)
parse = client.parses.create(
document=document,
model="retab-small",
table_parsing_format="markdown",
)
print(f"Parse ID: {parse.id}")
print(f"Filename: {parse.file.filename}")
print(f"Full text: {parse.output.text}")
for i, page in enumerate(parse.output.pages):
print(f"Page {i + 1}: {page}")
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const document = {
filename: "document.pdf",
url: "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
};
const parse = await client.parses.create(document, "retab-small", "markdown");
console.log(`Parse ID: ${parse.id}`);
console.log(`Filename: ${parse.file.filename}`);
console.log(`Full text: ${parse.output.text}`);
parse.output.pages.forEach((page, index) => {
console.log(`Page ${index + 1}: ${page}`);
});
package main
import (
"context"
"fmt"
"log"
retab "github.com/retab-dev/retab/clients/go"
)
func ptr[T any](v T) *T { return &v }
func main() {
ctx := context.Background()
client, err := retab.NewClient("")
if err != nil {
log.Fatal(err)
}
document := retab.MIMEData{
Filename: "document.pdf",
URL: "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
}
parse, err := client.Parses.Create(ctx, &retab.ParsesCreateParams{
Document: document,
Model: ptr("retab-small"),
TableParsingFormat: ptr(retab.ParseRequestTableParsingFormatMarkdown),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Parse ID: %s\n", parse.ID)
fmt.Printf("Full text: %s\n", parse.Output.Text)
for i, page := range parse.Output.Pages {
fmt.Printf("Page %d: %s\n", i+1, page)
}
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
document = {
filename: 'document.pdf',
url: 'https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf',
}
parse = client.parses.create(
document: document,
model: 'retab-small',
table_parsing_format: 'markdown',
)
puts "Parse ID: #{parse.id}"
puts "Filename: #{parse.file.filename}"
puts "Full text: #{parse.output.text}"
parse.output.pages.each_with_index do |page, i|
puts "Page #{i + 1}: #{page}"
end
use retab::enums::ParseRequestTableParsingFormat;
use retab::resources::parses::CreateParams;
use retab::{MimeData, Retab};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
let document = MimeData::new(
"document.pdf",
"https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
);
let mut params = CreateParams::new(document);
params.body.model = Some("retab-small".into());
params.body.table_parsing_format = Some(ParseRequestTableParsingFormat::Markdown);
let parse = client.parses().create(params).await?;
println!("Parse ID: {}", parse.id);
println!("Filename: {}", parse.file.filename);
println!("Full text: {}", parse.output.text);
for (i, page) in parse.output.pages.iter().enumerate() {
println!("Page {}: {}", i + 1, page);
}
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->parses()->create(
document: [
'filename' => 'document.pdf',
'url' => 'https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf',
],
);
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
var document = MimeData.FromUrl(
new Uri("https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"));
var result = await client.Parses.CreateAsync(new ParsesCreateOptions
{
Document = document,
Model = "retab-small",
TableParsingFormat = ParseRequestTableParsingFormat.Markdown,
});
Console.WriteLine(result);
import com.retab.RetabClient;
import com.retab.models.MimeData;
import com.retab.types.ParseRequestTableParsingFormat;
import java.net.URI;
public final class Example {
public static void main(String[] args) throws Exception {
RetabClient client = new RetabClient(System.getenv("RETAB_API_KEY"));
MimeData document = MimeData.fromUrl(
URI.create("https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"));
var result =
client
.parses()
.create(
document,
"retab-small",
ParseRequestTableParsingFormat.MARKDOWN,
null,
null,
null);
System.out.println(result);
}
}
curl -X POST \
'https://api.retab.com/v1/parses' \
-H "Authorization: Bearer $RETAB_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"document": {
"filename": "document.pdf",
"url": "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"
},
"model": "retab-small",
"table_parsing_format": "markdown"
}'
{
"id": "parse_01G34H8J2K",
"file": {
"id": "file_6dd6eb00688ad8d1",
"filename": "document.pdf",
"mime_type": "application/pdf"
},
"model": "retab-small",
"table_parsing_format": "markdown",
"output": {
"pages": [
"# Document Title\n\nFirst page content with a markdown table...",
"Second page content continues here...",
"Third and final page content..."
],
"text": "# Document Title\n\nFirst page content with a markdown table...\n\nSecond page content continues here...\n\nThird and final page content..."
},
"usage": {
"page_count": 3,
"credits": 1.5
},
"created_at": "2024-03-15T10:30:00Z"
}
Create Parse
Create a parse.
Extracts the full text of a document into per-page and concatenated text using
the chosen model. Tables are rendered in the requested table_parsing_format, and
optional instructions steer the parse. Returns the stored Parse with its output
and usage, and responds with 201.
from retab import MIMEData, Retab
client = Retab()
document = MIMEData(
filename="document.pdf",
url="https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
)
parse = client.parses.create(
document=document,
model="retab-small",
table_parsing_format="markdown",
)
print(f"Parse ID: {parse.id}")
print(f"Filename: {parse.file.filename}")
print(f"Full text: {parse.output.text}")
for i, page in enumerate(parse.output.pages):
print(f"Page {i + 1}: {page}")
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const document = {
filename: "document.pdf",
url: "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
};
const parse = await client.parses.create(document, "retab-small", "markdown");
console.log(`Parse ID: ${parse.id}`);
console.log(`Filename: ${parse.file.filename}`);
console.log(`Full text: ${parse.output.text}`);
parse.output.pages.forEach((page, index) => {
console.log(`Page ${index + 1}: ${page}`);
});
package main
import (
"context"
"fmt"
"log"
retab "github.com/retab-dev/retab/clients/go"
)
func ptr[T any](v T) *T { return &v }
func main() {
ctx := context.Background()
client, err := retab.NewClient("")
if err != nil {
log.Fatal(err)
}
document := retab.MIMEData{
Filename: "document.pdf",
URL: "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
}
parse, err := client.Parses.Create(ctx, &retab.ParsesCreateParams{
Document: document,
Model: ptr("retab-small"),
TableParsingFormat: ptr(retab.ParseRequestTableParsingFormatMarkdown),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Parse ID: %s\n", parse.ID)
fmt.Printf("Full text: %s\n", parse.Output.Text)
for i, page := range parse.Output.Pages {
fmt.Printf("Page %d: %s\n", i+1, page)
}
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
document = {
filename: 'document.pdf',
url: 'https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf',
}
parse = client.parses.create(
document: document,
model: 'retab-small',
table_parsing_format: 'markdown',
)
puts "Parse ID: #{parse.id}"
puts "Filename: #{parse.file.filename}"
puts "Full text: #{parse.output.text}"
parse.output.pages.each_with_index do |page, i|
puts "Page #{i + 1}: #{page}"
end
use retab::enums::ParseRequestTableParsingFormat;
use retab::resources::parses::CreateParams;
use retab::{MimeData, Retab};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
let document = MimeData::new(
"document.pdf",
"https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
);
let mut params = CreateParams::new(document);
params.body.model = Some("retab-small".into());
params.body.table_parsing_format = Some(ParseRequestTableParsingFormat::Markdown);
let parse = client.parses().create(params).await?;
println!("Parse ID: {}", parse.id);
println!("Filename: {}", parse.file.filename);
println!("Full text: {}", parse.output.text);
for (i, page) in parse.output.pages.iter().enumerate() {
println!("Page {}: {}", i + 1, page);
}
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->parses()->create(
document: [
'filename' => 'document.pdf',
'url' => 'https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf',
],
);
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
var document = MimeData.FromUrl(
new Uri("https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"));
var result = await client.Parses.CreateAsync(new ParsesCreateOptions
{
Document = document,
Model = "retab-small",
TableParsingFormat = ParseRequestTableParsingFormat.Markdown,
});
Console.WriteLine(result);
import com.retab.RetabClient;
import com.retab.models.MimeData;
import com.retab.types.ParseRequestTableParsingFormat;
import java.net.URI;
public final class Example {
public static void main(String[] args) throws Exception {
RetabClient client = new RetabClient(System.getenv("RETAB_API_KEY"));
MimeData document = MimeData.fromUrl(
URI.create("https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"));
var result =
client
.parses()
.create(
document,
"retab-small",
ParseRequestTableParsingFormat.MARKDOWN,
null,
null,
null);
System.out.println(result);
}
}
curl -X POST \
'https://api.retab.com/v1/parses' \
-H "Authorization: Bearer $RETAB_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"document": {
"filename": "document.pdf",
"url": "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"
},
"model": "retab-small",
"table_parsing_format": "markdown"
}'
{
"id": "parse_01G34H8J2K",
"file": {
"id": "file_6dd6eb00688ad8d1",
"filename": "document.pdf",
"mime_type": "application/pdf"
},
"model": "retab-small",
"table_parsing_format": "markdown",
"output": {
"pages": [
"# Document Title\n\nFirst page content with a markdown table...",
"Second page content continues here...",
"Third and final page content..."
],
"text": "# Document Title\n\nFirst page content with a markdown table...\n\nSecond page content continues here...\n\nThird and final page content..."
},
"usage": {
"page_count": 3,
"credits": 1.5
},
"created_at": "2024-03-15T10:30:00Z"
}
Parse resource that can later be retrieved via GET /v1/parses/{parse_id} or listed via GET /v1/parses.
from retab import MIMEData, Retab
client = Retab()
document = MIMEData(
filename="document.pdf",
url="https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
)
parse = client.parses.create(
document=document,
model="retab-small",
table_parsing_format="markdown",
)
print(f"Parse ID: {parse.id}")
print(f"Filename: {parse.file.filename}")
print(f"Full text: {parse.output.text}")
for i, page in enumerate(parse.output.pages):
print(f"Page {i + 1}: {page}")
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const document = {
filename: "document.pdf",
url: "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
};
const parse = await client.parses.create(document, "retab-small", "markdown");
console.log(`Parse ID: ${parse.id}`);
console.log(`Filename: ${parse.file.filename}`);
console.log(`Full text: ${parse.output.text}`);
parse.output.pages.forEach((page, index) => {
console.log(`Page ${index + 1}: ${page}`);
});
package main
import (
"context"
"fmt"
"log"
retab "github.com/retab-dev/retab/clients/go"
)
func ptr[T any](v T) *T { return &v }
func main() {
ctx := context.Background()
client, err := retab.NewClient("")
if err != nil {
log.Fatal(err)
}
document := retab.MIMEData{
Filename: "document.pdf",
URL: "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
}
parse, err := client.Parses.Create(ctx, &retab.ParsesCreateParams{
Document: document,
Model: ptr("retab-small"),
TableParsingFormat: ptr(retab.ParseRequestTableParsingFormatMarkdown),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Parse ID: %s\n", parse.ID)
fmt.Printf("Full text: %s\n", parse.Output.Text)
for i, page := range parse.Output.Pages {
fmt.Printf("Page %d: %s\n", i+1, page)
}
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
document = {
filename: 'document.pdf',
url: 'https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf',
}
parse = client.parses.create(
document: document,
model: 'retab-small',
table_parsing_format: 'markdown',
)
puts "Parse ID: #{parse.id}"
puts "Filename: #{parse.file.filename}"
puts "Full text: #{parse.output.text}"
parse.output.pages.each_with_index do |page, i|
puts "Page #{i + 1}: #{page}"
end
use retab::enums::ParseRequestTableParsingFormat;
use retab::resources::parses::CreateParams;
use retab::{MimeData, Retab};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
let document = MimeData::new(
"document.pdf",
"https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf",
);
let mut params = CreateParams::new(document);
params.body.model = Some("retab-small".into());
params.body.table_parsing_format = Some(ParseRequestTableParsingFormat::Markdown);
let parse = client.parses().create(params).await?;
println!("Parse ID: {}", parse.id);
println!("Filename: {}", parse.file.filename);
println!("Full text: {}", parse.output.text);
for (i, page) in parse.output.pages.iter().enumerate() {
println!("Page {}: {}", i + 1, page);
}
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->parses()->create(
document: [
'filename' => 'document.pdf',
'url' => 'https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf',
],
);
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
var document = MimeData.FromUrl(
new Uri("https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"));
var result = await client.Parses.CreateAsync(new ParsesCreateOptions
{
Document = document,
Model = "retab-small",
TableParsingFormat = ParseRequestTableParsingFormat.Markdown,
});
Console.WriteLine(result);
import com.retab.RetabClient;
import com.retab.models.MimeData;
import com.retab.types.ParseRequestTableParsingFormat;
import java.net.URI;
public final class Example {
public static void main(String[] args) throws Exception {
RetabClient client = new RetabClient(System.getenv("RETAB_API_KEY"));
MimeData document = MimeData.fromUrl(
URI.create("https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"));
var result =
client
.parses()
.create(
document,
"retab-small",
ParseRequestTableParsingFormat.MARKDOWN,
null,
null,
null);
System.out.println(result);
}
}
curl -X POST \
'https://api.retab.com/v1/parses' \
-H "Authorization: Bearer $RETAB_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"document": {
"filename": "document.pdf",
"url": "https://my-bucket.s3.us-east-1.amazonaws.com/documents/document.pdf"
},
"model": "retab-small",
"table_parsing_format": "markdown"
}'
{
"id": "parse_01G34H8J2K",
"file": {
"id": "file_6dd6eb00688ad8d1",
"filename": "document.pdf",
"mime_type": "application/pdf"
},
"model": "retab-small",
"table_parsing_format": "markdown",
"output": {
"pages": [
"# Document Title\n\nFirst page content with a markdown table...",
"Second page content continues here...",
"Third and final page content..."
],
"text": "# Document Title\n\nFirst page content with a markdown table...\n\nSecond page content continues here...\n\nThird and final page content..."
},
"usage": {
"page_count": 3,
"credits": 1.5
},
"created_at": "2024-03-15T10:30:00Z"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Public create-parse request body.
The document to parse
Show child attributes
Show child attributes
The model to use for parsing
Format used to render tables extracted from the document
markdown, yaml, html, json Free-form instructions appended to the system prompt to steer the parse.
If true, skip the LLM cache and force a fresh completion
If true, run asynchronously: returns immediately with status 'queued' and an empty output. Poll GET /v1//{id} until status is terminal. Mutually exclusive with stream.
Response
Successful Response
A parse result: the per-page and full-document text extracted from a document.
Unique identifier of the parse
Information about the parsed file
Show child attributes
Show child attributes
Model used for parsing
Format used to render tables extracted from the document
markdown, yaml, html, json The parsed document content
Show child attributes
Show child attributes
Free-form instructions supplied with the parse request.
Lifecycle status. The synchronous path returns 'completed'. Background runs progress pending -> queued -> in_progress -> completed | failed | cancelled.
pending, queued, in_progress, completed, failed, cancelled Error details when a background run fails; null otherwise. Always present so consumers can read it without an existence check.
Show child attributes
Show child attributes
Usage information for the parse operation
Show child attributes
Show child attributes