---
title: Limits and Best Practices | SafetyKit
description: Operational guidance for reliability, throughput, and data quality.
---

## Recommended practices

- **Use stable IDs:** reuse the same `id` for updates to the same entity.
- **Prefer webhooks for completion:** use polling for reconciliation and monitoring.
- **Keep payloads consistent:** maintain field names and types per namespace.
- **Send complete context:** richer objects improve review quality.
- **Use upload URLs for very large datasets:** avoid overloading real-time ingest calls.

As your volume grows, these conventions reduce incident risk and make decisions easier to trace from ingest to final action.

## Data quality guidance

- keep media URLs publicly retrievable at processing time
- avoid placeholder text (“N/A”, `""`, etc) in key fields (`title`, `description`, etc.)
- include enough context fields for policy decisions

## Reliability guidance

- retry transient failures (`429`, `500`, `503`) with backoff
- treat ingest as asynchronous fire-and-forget requests
- store `requestId` for auditability and reconciliation
- implement idempotent webhook handlers so duplicate delivery retries do not produce duplicate side effects

## Request output size

`GET /v1/data/{namespace}/requests/{requestId}` returns completed request outputs inline when the serialized response is under 5 MiB. For larger outputs, or after receiving a `413`, use [`GET /v1/data/{namespace}/requests/{requestId}/results/download-url`](/api/resources/data/methods/getDownloadUrl/index.md) and stream the returned JSONL file.

## Security and privacy

- keep API keys server-side only
- verify webhook signatures on every event

For authentication details, see [Authentication](/authentication/index.md). For webhook security, see [Verifying Signatures](/webhooks/verifying-signatures/index.md). For endpoint-level behavior and response schemas, see the [API Reference](/api/index.md).
