Shared integration controls
Keep SOCQ_API_KEY on the server and outside browser, mobile, fixture, screenshot, and log output.
Validate and normalize every input before submit; reject empty arrays, unsupported URL shapes, and invalid enum values.
Persist data.task_id before polling so interrupted workers can resume.
Use bounded retries with backoff for 429 and transient 5xx responses.
Treat succeeded and failed as terminal states and enforce an application-level timeout.
Read every result page by following results.next_cursor until results.has_more is false.
Deduplicate stored records by stable record ID when a workflow can be retried.
Log task IDs, status transitions, durations, and record counts; never log credentials or full sensitive payloads.
Keep callback handling idempotent and retain polling as a fallback when callbacks are used.
Store collected_at with records whose public fields or metrics can change over time.
Reddit Comments API considerations
Submit public Reddit post URLs using /r/{subreddit}/comments/{post_id} paths or supported redd.it short links.
This endpoint does not accept results_limit; it stores the publicly returned comments for each accepted post URL.
Parent and source-post references connect returned records without guaranteeing complete thread depth.
Upvote and reply counts are point-in-time observations captured at collected_at.
Treat public records as changeable snapshots rather than permanent truth.
Keep raw payloads and exported result files in access-controlled storage.
Define a retention period and remove data that is no longer needed.
Avoid using missing optional fields as evidence that a value is zero or false.
Review platform terms, privacy requirements, and applicable law before launch.