Developers
Ascen Mark REST API v1
Create filings, upload supporting documents and read live status from your own systems. Every request is authenticated with an API key scoped to your account.
Base URL & versioning
The version lives in the path, so /v1 stays backwards compatible. Responses include an api_version date for additive changes.
https://ascenmark.com/api/public/v1Authentication
Generate a key on the API keys page. Keys are hashed at rest and shown once. Scopes: filings:read, filings:write.
Authorization: Bearer am_live_xxxxxxxxxxxxxxxxxxxxEndpoints
GET/v1/filings
List your filings. Query params:
limit (1–100), offset, status.POST/v1/filings
Create a filing. Fees are priced server-side from the public rate card and returned as
quote.GET/v1/filings/{id_or_reference}
Full status: workflow events, assigned local agents, documents and registry records.
POST/v1/filings/{id_or_reference}/documents
Upload a document (multipart
file field, or JSON with base64 content). Max 20 MB.GET/v1/filings/{id_or_reference}/documents
List documents with short-lived signed download URLs.
Create a filing
curl -X POST https://ascenmark.com/api/public/v1/filings \
-H "Authorization: Bearer $ASCENMARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"service": "trademark",
"subject": "ACME CLOUD",
"units": 1,
"countries": ["US", "AU", "IN"],
"applicant_name": "Acme Pty Ltd",
"applicant_country": "AU",
"description": "Word mark for SaaS analytics"
}'{
"object": "filing",
"api_version": "2026-08-01",
"id": "5f0c…",
"reference": "AM-2026-K3D9Q",
"status": "submitted",
"payment_status": "unpaid",
"total_usd": 2145,
"quote": [
{ "country": "US", "government_fee_usd": 350, "professional_fee_usd": 399, "total_usd": 749 }
]
}Upload a document
curl -X POST https://ascenmark.com/api/public/v1/filings/AM-2026-K3D9Q/documents \
-H "Authorization: Bearer $ASCENMARK_API_KEY" \
-F "file=@power-of-attorney.pdf"Read status
curl https://ascenmark.com/api/public/v1/filings/AM-2026-K3D9Q \
-H "Authorization: Bearer $ASCENMARK_API_KEY"Errors
Errors use standard HTTP codes with a JSON body: 400 malformed, 401 bad key, 403 missing scope, 404 not found, 413 file too large, 422 validation, 500 server.
{ "error": { "code": "insufficient_scope", "message": "This API key is missing the `filings:write` scope." } }