Authenticate
Use an ordinary user-owned Effective API key with MC and filing access. Read-only keys can read. Resource-scoped, app/system, and record-bot keys are unsupported. No Captain session or active UI is needed. SetEFFECTIVE_API_BASE_URL to your deployment origin without /api/v2, and
provide EFFECTIVE_API_KEY through your client’s secret environment. Verify the
caller with GET /api/v2/users/me.
List filings
List across all active Mission Controls you can view in your tenant. There is no MC filter:filings array and nullable nextCursor. Summaries include
ID, canonical authorization scope (mc:<MC UUID>), display name, filing mode, company/jurisdiction/product IDs, tracking
numbers, description, and timestamps. Missing optional metadata is null.
filingMode distinguishes managed, read-only reference, and unclassified
legacy data (null). MC access alone does not grant access to private filings.
Repeat the limit with the returned cursor. Default page size is 50; maximum
is 100. Results are ordered by MC UUID ascending, then creation time descending
and filing ID ascending within each MC. Short/empty pages may have a continuation;
stop only at null. Cursors expire 24 hours after the first page. Changing caller
or page size invalidates them. Each call refreshes current MC and filing access;
revoked scopes are skipped. Restart the list to see newly accessible filings that
sort before your current position. No accessible filings returns an empty list.
Read one filing
SetFILING_ID to a returned ID. No MC parameter is needed:
Recover from errors
401 unauthenticated: verify the credential and whether its type is supported.403 forbidden: credential is not permitted for this operation.404 not_found: filing missing or invisible; these cases are indistinguishable.400 invalid_cursor: restart the list.400 invalid_request: correct input; unknown/repeated scalar fields are rejected.409 conflict: the filing is read-only, a schedule position is occupied, a dependency prevents removal, or inputs changed during validation.503 temporarily_unavailable: respectRetry-Afterbefore retrying the read.
Create and edit a filing
Use a write-capable user key with MC edit access. The MC must already havefilings, companies, jurisdictions, and products registered; item operations
also need filing_items. An administrator can configure these in the Records UI.
Find reference IDs through the existing
GET /api/v1/mission-controls/{mcId}/records/reference-options?targetKind=system_record&recordType=companies
API; repeat with jurisdictions and products. Follow that endpoint’s pagination.
toiCode and subToiCode use NAIC registry values. A sub-TOI requires its parent TOI.
Discover choices with
GET /api/v1/mission-controls/{mcId}/records/types/filings/fields/toiCode/options?limit=25&query=property
and discover matching sub-TOIs with
GET /api/v1/mission-controls/{mcId}/records/types/filings/fields/subToiCode/options?dependencyValue=01.0&limit=25.
The options endpoint supports query to narrow the results. When changing a TOI,
change or clear an incompatible sub-TOI in the same request. PATCH checks the
resulting filing, including fields you leave unchanged.
Create with POST /api/v2/managed-filings and Content-Type: application/json:
201,
includes the created filing and canonical scope, and supplies its detail URL in
Location. API-key creation does not start a Captain session.
Use PATCH /api/v2/managed-filings/{filingId} to change selected fields:
Upload and attach documents
Use the existing Vault upload flow with the same bearer credential. No session is required. Choose a writable folder visible to the intended collaborators.POST /api/v1/vault/upload/initwith{"targetUri":"personal://filing-preparation","files":[{"path":"form.pdf","size":1234,"mimeType":"application/pdf"}],"onConflict":"fail"}. Supply the actual byte count and your target folder. Personal files may need separate sharing before another collaborator can read their bytes.- PUT the local PDF bytes to
files[0].signedUrlwith exactly the returnedfiles[0].headers. Do not send the Effective bearer credential to storage. POST /api/v1/vault/upload/completewith{"confirmations":[{"uploadToken":"<token from init>"}]}. Check eachresults[].success; use the successful result’sartifact.id.POST /api/v2/managed-filings/{filingId}/itemswith the resulting ID:
GET /api/v2/managed-filings/{filingId}/items?limit=50 to list items. Follow
nextCursor with the same filing and limit until null. Item cursors expire after
24 hours. Reading an item does not itself grant permission to read its file bytes.
Use PATCH /api/v2/managed-filings/{filingId}/items/{itemId} with a new
artifactId to replace the working file reference. Send both schedule fields
as null to remove an assignment, or both values to assign a position. Updating
an item does not change retained submission contents.
Use DELETE /api/v2/managed-filings/{filingId}/items/{itemId} to remove an item.
It returns 204, retains file bytes, and rejects removal when dependencies
require the item. A repeated delete returns 404.
Create/add requests are not idempotent. After a lost response, inspect the filing
or item list before retrying. Updates use last-write-wins semantics: read current
values before editing. These preparation calls neither stage nor submit to SERFF.