- Keep
SOCQ_API_KEYon 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_idbefore polling so interrupted workers can resume. - Use bounded retries with backoff for
429and transient5xxresponses. - Treat
succeededandfailedas terminal states and enforce an application-level timeout. - Read every result page by following
results.next_cursoruntilresults.has_moreis 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_atwith records whose public fields or metrics can change over time.
- Submit public
/posts/,/pulse/, or supported/feed/update/LinkedIn URLs. - Each accepted input resolves the selected public post rather than discovering the author's other posts.
- Media, hashtags, titles, headlines, post type, and engagement counters are optional public fields.
- Visible likes, comments, and reposts are point-in-time observations and do not include individual comment records.
- 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.