Download the contract PDF
version=signed (409 DOCUMENT_NOT_SIGNED until completed), version=original (404 ORIGINAL_NOT_AVAILABLE when not retained), default: signed when completed else the current file. Headers X-Document-Version and X-Document-Sha256.
API key cl_live_… or OAuth access token eco_at_… in Authorization: Bearer. Public operations (x-econtract-auth: public) need no credential.
In: header
Path Parameters
Query Parameters
Default: signed when completed, else the current file
"signed" | "original"Contract file id (multi-file contracts; default: the primary file)
Response Body
curl -X GET "https://api.econtract.online/api/v1/contracts/string/document"Code Examples
curl -X GET "https://api.econtract.online/api/v1/contracts/abc123/document" \
-H "Authorization: Bearer cl_live_your_key_here"const res = await fetch("https://api.econtract.online/api/v1/contracts/abc123/document", {
headers: { "Authorization": "Bearer cl_live_your_key_here" },
}).then(r => r.json());
console.log(res);import requests
res = requests.get(
"https://api.econtract.online/api/v1/contracts/abc123/document",
headers={"Authorization": "Bearer cl_live_your_key_here"},
).json()
print(res)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.econtract.online/api/v1/contracts/abc123/document", nil)
req.Header.Set("Authorization", "Bearer cl_live_your_key_here")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.econtract.online/api/v1/contracts/abc123/document");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer cl_live_your_key_here",
"Content-Type: application/json",
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.econtract.online/api/v1/contracts/abc123/document"))
.header("Authorization", "Bearer cl_live_your_key_here")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer cl_live_your_key_here");
var response = await client.GetAsync("https://api.econtract.online/api/v1/contracts/abc123/document");
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);Get signing links for the signers (no email is sent)
Mints a fresh token for every external signer who has not signed or declined (older links stay valid). Internal signers get the dashboard link. 409 unless the contract is pending or in signing.
Audit trail: signers, events, hash-chain check and document hash
Next Page