Skip to main content
This guide walks you through creating a batch compliance job to check the compliance status of Posts or users.
PrerequisitesBefore you begin, you’ll need:

Create a job

Create a new compliance job specifying the type (tweets or users):
Response:
Save the upload_url and download_url for the next steps. Both are signed, single-purpose URLs tied to this job: the upload_url expires about 15 minutes after job creation, and the download_url about 7 days after. If an upload URL expires before you use it, cancel the job and create a new one.
You can have one active (created or in_progress) job per job type at a time. Creating a second one returns 409 Conflict until the first completes, fails, or is canceled.

Prepare your data file

Create a plain-text file with one numeric ID per line (up to 1 GiB):
Save as ids.txt. Lines that are not valid IDs are reported in the results as error records rather than failing the whole job.

Upload your data

Upload the file to the provided upload_url with a single PUT, authenticating with the same Bearer token used to create the job:
Unlike the previous Google Cloud Storage-based flow, upload and download URLs now require your Authorization header in addition to the signed token embedded in the URL.
A successful upload returns 200 OK and the job moves to in_progress. An expired token returns 403 with a problem+json body.

Check job status

Poll the job status until it’s complete:
Job statuses:

Download results

Once status is complete, download from the download_url (like the upload, this requires your Bearer token):
Result format (newline-delimited JSON, one object per line):
Only IDs with compliance events appear in the results. An ID absent from the results has no compliance event — your stored copy is fine. Invalid submitted lines come back as {"id": ..., "error": "invalid_id"} records. redacted_at can be null when the original event predates timestamp tracking.

Compliance actions

When multiple events apply to the same ID, the results carry the highest-impact one: delete outranks rehydrate, which outranks scrub_geo.

List all jobs

Get all compliance jobs for your App:

Cancel a job

Cancel a job that is awaiting upload or still processing (frees the one-active-job slot for its type):

Next steps

Integration guide

Key concepts and best practices

Compliance streams

Real-time compliance events

API Reference

Full endpoint documentation