{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-gensail-analytics/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Job Requeue API","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"job-requeue-api","__idx":0},"children":["Job Requeue API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Gensail allows you to requeue jobs that were automatically skipped due to processing filters. This enables you to adjust filter settings and reprocess calls without re-ingesting them."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a job is created, it enters the processing pipeline. Before transcription begins, the worker validates the job against ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["processing filters"]}," configured for your workspace. If a job doesn't meet the filter criteria (e.g., call duration is too short), it's marked as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skipped"]}," instead of being processed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Skipped jobs remain in the system and can be requeued at any time. When requeued, the job is re-validated against ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["current"]}," filter settings, allowing you to:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Lower filter thresholds and reprocess previously skipped calls"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retry calls after fixing configuration issues"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Batch requeue calls after bulk filter changes"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"job-lifecycle","__idx":2},"children":["Job Lifecycle"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"         ┌─────────────────────────────────────────┐\n         │                                         │\n         ▼                                         │\n      queued ───► transcribing ───► analyzing ───► publishing ───► completed\n         │\n         │ (filter validation fails)\n         ▼\n      skipped ───────────────────────────────────────────────────────────►\n                          │                                              │\n                          └──────────── requeue (API) ───────────────────┘\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"processing-filters","__idx":3},"children":["Processing Filters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Processing filters are evaluated by the worker before transcription. Currently supported filters:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Filter"},"children":["Filter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Config Path"},"children":["Config Path"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Default"},"children":["Default"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["min_duration_seconds"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processing.filters.min_duration_seconds"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["30"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Minimum call duration in seconds"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Filters are inherited through the configuration hierarchy:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Platform defaults (30 seconds)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Partner configuration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Organization configuration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Workspace configuration"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requeuing-jobs","__idx":4},"children":["Requeuing Jobs"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"endpoint","__idx":5},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"PATCH /api/v1/jobs/{job_id}/status\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request","__idx":6},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"status\": \"queued\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response","__idx":7},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"job_id\": \"12345\",\n  \"previous_status\": \"skipped\",\n  \"new_status\": \"queued\",\n  \"message\": \"Job requeued successfully (requeue #1). Job will be re-validated against current processing filters.\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authorization","__idx":8},"children":["Authorization"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Requires an API key with access to the job's workspace:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Workspace-scoped API keys can requeue jobs in their workspace"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Organization-scoped API keys can requeue jobs in any workspace within the organization"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Partner-scoped API keys can requeue jobs in any workspace under the partner"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"error-responses","__idx":9},"children":["Error Responses"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Reason"},"children":["Reason"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid status (only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["queued"]}," supported)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Job is not in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skipped"]}," status"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403 Forbidden"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No access to job's workspace"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404 Not Found"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Job not found"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"code-examples","__idx":10},"children":["Code Examples"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"python","__idx":11},"children":["Python"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import httpx\n\nasync def requeue_job(api_key: str, job_id: int) -> dict:\n    \"\"\"Requeue a skipped job.\"\"\"\n    async with httpx.AsyncClient() as client:\n        response = await client.patch(\n            f\"https://analytics-api.gensail.com/api/v1/jobs/{job_id}/status\",\n            headers={\"Authorization\": f\"Bearer {api_key}\"},\n            json={\"status\": \"queued\"},\n        )\n        response.raise_for_status()\n        return response.json()\n\n# Usage\nresult = await requeue_job(\"gsk_xxx\", 12345)\nprint(f\"Job {result['job_id']} requeued: {result['message']}\")\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"curl","__idx":12},"children":["cURL"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X PATCH \"https://analytics-api.gensail.com/api/v1/jobs/12345/status\" \\\n  -H \"Authorization: Bearer gsk_xxx\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"status\": \"queued\"}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"bulk-requeue","__idx":13},"children":["Bulk Requeue"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To requeue multiple skipped jobs, first list them using the jobs endpoint:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"# Get all skipped jobs for a workspace\ncurl \"https://analytics-api.gensail.com/api/v1/jobs?status=skipped&workspace_id=xxx\" \\\n  -H \"Authorization: Bearer gsk_xxx\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then iterate and requeue each job:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"async def bulk_requeue_skipped(api_key: str, workspace_id: str):\n    \"\"\"Requeue all skipped jobs for a workspace.\"\"\"\n    async with httpx.AsyncClient() as client:\n        # List skipped jobs\n        response = await client.get(\n            \"https://analytics-api.gensail.com/api/v1/jobs\",\n            headers={\"Authorization\": f\"Bearer {api_key}\"},\n            params={\"status\": \"skipped\", \"workspace_id\": workspace_id},\n        )\n        response.raise_for_status()\n        jobs = response.json()[\"jobs\"]\n\n        # Requeue each job\n        results = []\n        for job in jobs:\n            result = await requeue_job(api_key, int(job[\"job_id\"]))\n            results.append(result)\n\n        return results\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"metadata-tracking","__idx":14},"children":["Metadata Tracking"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a job is requeued, the following metadata is recorded in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source_metadata"]},":"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requeue_count"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Number of times this job has been requeued"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["last_requeued_at"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ISO 8601 timestamp of most recent requeue"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["last_requeued_by"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Scope of API key used for requeue (workspace/organization/partner)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["previous_skipped_reason"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The skip reason before requeue"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["previous_skipped_at"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["When the job was previously skipped"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"rerun-supersession","__idx":15},"children":["Rerun Supersession"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/jobs/{job_id}/retry"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mode=rerun"]}," creates a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["child job"]}," ","(",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parent_job_id"]}," set) marked ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source_metadata.supersedes_parent: true"]},". A"," ","superseding child is a ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["reprocessing of the same call"]},", not a new call:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v1/calls/listing"]}]}," shows ONE row — the parent (original"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["received_at"]},", original source ids) — carrying the newest completed grading"," ","run across the family. The child never appears as its own row. Searching by"," ","the child's job id resolves to the parent row."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v1/jobs/{root_id}/runs"]}]}," includes the children's runs, and the"," ","top-level transcription fields come from the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["effective"]}," family job — the"," ","member owning the selected grading run (newest completed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dental_grading_*"]}," ","across the family, the exact ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/calls/listing"]}," rule; families without a"," ","completed grading run fall back to the newest completed run of any"," ","algorithm) — with explicit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["effective_job_id"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["root_job_status"]}," ","provenance. Requesting a child id directly returns only that child's runs"," ","(audit access)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/stats/feedback-trends"]}]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/stats/duration-distribution"]}]}," count"," ","the call once; a failed root recovered by a successful superseding child"," ","counts as processed. Operational job metrics (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/stats"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/stats/daily"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/stats/by-organization"]},") and billing (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/stats/trends"]},") deliberately count"," ","physical jobs, children included."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Family depth is one level."]}," Rerunning a job that is itself a child"," ","attaches the new job to the family ROOT (no grandchildren); the immediate"," ","source is recorded in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source_metadata.rerun_parent_job_id"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Non-superseding children"]}," — on-demand jobs from"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /jobs/{id}/run-algorithms"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["supersedes_parent: false"]},") and legacy"," ","children created before this feature — keep their own listing row and never"," ","replace the original call's result."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-skip-reasons","__idx":16},"children":["Common Skip Reasons"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a job is skipped, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skipped_reason"]}," field indicates why:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Reason"},"children":["Reason"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Source"},"children":["Source"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skip_all_on_ingest"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Poller"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["All calls are skipped when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skip_all_on_ingest: true"]}," is configured"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rate_limit"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Poller"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Rate limits (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max_calls_per_workspace"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max_total_calls"]},") were exceeded"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["duration_below_minimum:{actual}<{min}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Worker"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Call duration is shorter than configured minimum"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"skip-all-on-ingest-mode","__idx":17},"children":["Skip-All-On-Ingest Mode"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skip_all_on_ingest: true"]}," is configured in the CallRail integration settings, ALL calls are created with status ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skipped"]}," regardless of rate limits. This is useful for:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Loading all historical calls for manual review"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Bulk ingestion without automatic processing"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Allowing selective processing via the API"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Configuration:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"integrations\": {\n    \"callrail\": {\n      \"skip_all_on_ingest\": true\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Workflow:"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Poller ingests all calls as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skipped"]}," with reason ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skip_all_on_ingest"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Review calls in your application or via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /jobs?status=skipped"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Selectively queue jobs for processing via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH /jobs/{job_id}/status"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Worker picks up queued jobs and applies processing filters"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"re-validation-behavior","__idx":18},"children":["Re-validation Behavior"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a requeued job is picked up by a worker:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The job is re-validated against ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["current"]}," processing filters"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If filters pass, processing continues to transcription"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If filters still fail, the job is marked as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["skipped"]}," again"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This means:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you haven't changed filter settings, the job will be skipped again"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To process previously skipped calls, lower the filter threshold first"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requeue count tracks how many times a job has been requeued"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"best-practices","__idx":19},"children":["Best Practices"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Adjust filters before bulk requeue"]},": Lower ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["min_duration_seconds"]}," before requeuing to avoid immediate re-skip"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monitor requeue counts"]},": High requeue counts may indicate configuration issues"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use bulk operations carefully"]},": Rate limiting applies to API requests"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Check job status after requeue"]},": Jobs may be skipped again if filters haven't changed"]}]}]},"headings":[{"value":"Job Requeue API","id":"job-requeue-api","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Job Lifecycle","id":"job-lifecycle","depth":2},{"value":"Processing Filters","id":"processing-filters","depth":2},{"value":"Requeuing Jobs","id":"requeuing-jobs","depth":2},{"value":"Endpoint","id":"endpoint","depth":3},{"value":"Request","id":"request","depth":3},{"value":"Response","id":"response","depth":3},{"value":"Authorization","id":"authorization","depth":3},{"value":"Error Responses","id":"error-responses","depth":3},{"value":"Code Examples","id":"code-examples","depth":2},{"value":"Python","id":"python","depth":3},{"value":"cURL","id":"curl","depth":3},{"value":"Bulk Requeue","id":"bulk-requeue","depth":2},{"value":"Metadata Tracking","id":"metadata-tracking","depth":2},{"value":"Rerun Supersession","id":"rerun-supersession","depth":2},{"value":"Common Skip Reasons","id":"common-skip-reasons","depth":2},{"value":"Skip-All-On-Ingest Mode","id":"skip-all-on-ingest-mode","depth":3},{"value":"Re-validation Behavior","id":"re-validation-behavior","depth":2},{"value":"Best Practices","id":"best-practices","depth":2}],"frontmatter":{"seo":{"title":"Job Requeue API"}},"lastModified":"2026-07-11T04:47:01.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/gensail-analytics/guides/job-requeue","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}