> ## Documentation Index
> Fetch the complete documentation index at: https://docs.secapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/artifacts

> List artifacts previously persisted for the current organization

List artifacts previously persisted for the current organization

<Info>
  Audience: developers retrieving artifacts persisted by their organization.
</Info>

## Coverage and source scope

Returns persisted artifact records owned by the authenticated organization. Filter by stored `kind` or `status`; the response is a bounded list and does not promise a complete archive or an external-storage inventory.

## Canonical metadata

* `data[].id`
* `data[].kind`
* `data[].status`
* `data[].storageMode`
* `data[].downloadUrl`
* `hasMore`
* `nextCursor`
* `requestId`
* `traceparent`

## Example request

<RequestExample>
  ```bash theme={null}
  curl -X GET -H "x-api-key: $SECAPI_API_KEY" -H "secapi-version: 2026-03-19" "https://api.secapi.ai/v1/artifacts?kind=markdown_bundle&limit=20"
  ```
</RequestExample>

## Example response

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "artifact",
        "id": "art_example_123",
        "createdAt": "2026-03-19T12:00:00.000Z",
        "livemode": false,
        "kind": "markdown_bundle",
        "status": "ready",
        "downloadUrl": "/v1/artifacts/art_example_123/download",
        "storageMode": "local",
        "objectKey": null
      }
    ],
    "hasMore": false,
    "nextCursor": null,
    "queryPath": null,
    "queryPathReason": null,
    "policyYears": null,
    "degradedState": null,
    "requestId": "req_2ZK8Q1W9F4M6P7R3",
    "traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"
  }
  ```
</ResponseExample>

## Scope and retrieval

This list is scoped to the authenticated organization. `kind` and `status` filter saved records; `limit` accepts integers from 1 through 50 and rejects values outside that range. The route does not expose a cursor, so `hasMore=false` and `nextCursor=null` are part of its current response shape. A list result describes persisted records, not complete filing or object-storage coverage.

## Errors

An invalid `limit` returns `400 invalid_query_parameter`. Without an organization on the authenticated principal, the route returns `403 organization_missing`. Preserve `requestId` and `traceparent` when reporting an empty or unexpected list.

## Give this prompt to your agent

<Prompt>
  Use SEC API GET /v1/artifacts to list artifacts previously persisted for the current organization. Preserve `data[].id`, `data[].kind`, `data[].status`, `data[].storageMode`, `data[].downloadUrl`, `hasMore`, `nextCursor`, `requestId`, `traceparent` in the output. Return a concise markdown summary plus the exact structured payload fields that a downstream engineer or agent should keep using this result.
</Prompt>

## Failure posture

* treat an empty list as no matching persisted record under the selected filters, not a source-coverage conclusion
* retain the artifact ID before calling manifest, export, download, or reconcile
* preserve requestId and traceparent when escalating an organization-access issue
