Skip to content

Confirm a presigned upload

POST
/files/{id}/complete
curl --request POST \
--url https://api.sealpost.app/v1/files/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/complete \
--header 'Authorization: Bearer <token>'

Scope envelopes:write. Reads what was PUT, records its SHA-256 and page sizes, and marks the file ready. upload_incomplete (409) when nothing was uploaded yet; invalid_file (422) when the bytes are not a PDF. Idempotent once ready.

id
required
string format: uuid

The file, inspected.

Media typeapplication/json
object
id
required
string format: uuid
envelope_id

Null until the file is attached to an envelope.

string | null format: uuid
position

1-based order within the envelope.

integer | null
name
required
string
kind

The caller’s label for the document type, e.g. merchant_application; used to split a signed envelope back into its documents.

string | null
mime
required
string
bytes
required
integer
sha256

SHA-256 (hex) of the original bytes, exactly as uploaded. Null while pending.

string | null
pdf_version
string | null
page_count
integer | null
page_sizes
Array<object> | null

One page’s visual size in points (after /Rotate).

object
w
required
number
h
required
number
rotate
required
integer
Allowed values: 0 90 180 270
status
required
string
Allowed values: pending converting ready failed
error
string | null
upload_expires_at

When an unattached upload is swept (30 days). Null once attached.

string | null format: date-time
created_at
required
string format: date-time

Example

{
"page_sizes": [
{
"rotate": 0
}
],
"status": "pending"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

No key, an unknown key, or a revoked or expired key.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

The key is valid but lacks the scope, or a test key tried a live-only action.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

No such resource in this tenant. Another tenant’s resource is also a 404.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

A request with the same Idempotency-Key is still in flight.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

A file is over 25 MB (10 MB inline as base64); use /files/presign.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

The request was read but a value is invalid, or an Idempotency-Key was reused with a different body.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

The key is over its per-minute budget (600 live, 60 test, sliding window).

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

Retry-After
integer

Seconds to wait before retrying.

RateLimit-Limit
integer

Requests allowed per minute for this key (600 live, 60 test).

RateLimit-Remaining
integer

Requests remaining in the current window.

RateLimit-Reset
integer

Seconds until the window has capacity again.

Something failed on our side. The request_id is in our logs.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

The document service could not be reached; nothing was stored. Retry after Retry-After seconds with the same Idempotency-Key.

Media typeapplication/problem+json

RFC 9457 problem details plus a stable code and the request_id.

object
type
required

https://sealpost.app/errors/{code}

string format: uri
title
required
string
status
required
integer
detail

Human-readable, safe to show to a developer, never contains secrets or signer data.

string
instance

The request path.

string
code
required

Stable machine-readable code from the catalogue (docs/errors.md).

string
request_id
required
string
errors

Field-level detail on validation_failed.

Array<object>
object
param
required

JSON pointer-ish path, e.g. scopes[2].

string
message
required
string

Example

{
"type": "https://sealpost.app/errors/insufficient_scope",
"title": "Forbidden",
"status": 403,
"detail": "This key lacks the api_keys:write scope.",
"code": "insufficient_scope",
"request_id": "req_01J9ZK3V8Q4M2XQ7W0E5D1R6TA"
}
Sign-Request-Id
string

Unique id of this request (req_…). Quote it in support requests.

Retry-After
integer

Seconds to wait before retrying.