Creator Sync

Add a creator's profile and posts to Zelf so their videos can be searched and analyzed. Syncing is asynchronous: create a sync, poll it until it finishes, then list the creator's videos with content.list.

Create Creator Sync

POST/api/v1/creator_sync/creator_sync.create

Add a creator's profile and posts to Zelf so their videos can be analyzed. Send the creator's profile_url. Zelf reads and stores the profile and the creator's own posts, which then appear in creators.list and content.list.

Syncing is asynchronous. This method returns immediately with the sync at status: SYNCING. Poll creator_sync.get until status is SUCCESS or FAILED.

Only the creator's own posts are synced. Reposts and posts they are tagged in are not. Synced content is not attached to your brand, so it does not appear in brand-scoped totals.

Request body

profile_urlType: string(uri)Requiredmin length 1

Direct URL to the creator's profile on a supported platform (tiktok, instagram, youtube).

min length
1

Returns CreatorSync

idType: stringread-only

Identifier of the sync job. Use this value on follow-up calls. It is the same identifier creator_vetting reports as sync_job_id.

created_atType: string(date-time)

Time the job was created (UTC, ISO-8601).

updated_atType: string(date-time)

Time the job was most recently modified (UTC, ISO-8601).

creator_idType: stringor nullread-only

Identifier of the synced creator. Returns null until the creator has been resolved, which happens once the first posts have been read.

profile_urlType: stringor null

The profile URL this job syncs. Returns null for a job whose source URL was not recorded.

statusType: stringread-only

Where the job has got to. One of SCHEDULED, SYNCING, SUCCESS, FAILED.

Responses

CreatorSync

idType: stringread-only

Identifier of the sync job. Use this value on follow-up calls. It is the same identifier creator_vetting reports as sync_job_id.

created_atType: string(date-time)

Time the job was created (UTC, ISO-8601).

updated_atType: string(date-time)

Time the job was most recently modified (UTC, ISO-8601).

creator_idType: stringor nullread-only

Identifier of the synced creator. Returns null until the creator has been resolved, which happens once the first posts have been read.

profile_urlType: stringor null

The profile URL this job syncs. Returns null for a job whose source URL was not recorded.

statusType: stringread-only

Where the job has got to. One of SCHEDULED, SYNCING, SUCCESS, FAILED.

Request

string(uri)Required
from zelf import ZelfAPIClient

client = ZelfAPIClient(api_key="<your-api-key>")

result = client.creator_sync.create(
    profile_url="https://www.instagram.com/zelfai",
)
print(result)
Response
{
  "log_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "timestamp": "2026-01-01T00:00:00Z",
  "results": [
    {
      "id": "csj_qtQeeG2PjW6ua1rX",
      "created_at": "2026-05-12T14:30:00Z",
      "updated_at": "2026-05-12T15:00:00Z",
      "creator_id": "cr_pfqPv0FLsBRimHfi",
      "profile_url": "https://www.instagram.com/zelfai",
      "status": "SYNCING"
    }
  ],
  "item_count": 1,
  "page": 1,
  "next": null,
  "previous": null
}

List Creator Syncs

GET/api/v1/creator_sync/creator_sync.list

Returns creator sync jobs ordered newest first, each with its current status. Use it to monitor progress after creator_sync.create.

Possible statuses are SCHEDULED, SYNCING, SUCCESS and FAILED. A job's creator_id is null until the creator has been resolved, and then corresponds to the id filter on creators.list. Syncs started by creator_vetting are listed here too; a vetting reports its own sync as sync_job_id.

Returns CreatorSync

idType: stringread-only

Identifier of the sync job. Use this value on follow-up calls. It is the same identifier creator_vetting reports as sync_job_id.

created_atType: string(date-time)

Time the job was created (UTC, ISO-8601).

updated_atType: string(date-time)

Time the job was most recently modified (UTC, ISO-8601).

creator_idType: stringor nullread-only

Identifier of the synced creator. Returns null until the creator has been resolved, which happens once the first posts have been read.

profile_urlType: stringor null

The profile URL this job syncs. Returns null for a job whose source URL was not recorded.

statusType: stringread-only

Where the job has got to. One of SCHEDULED, SYNCING, SUCCESS, FAILED.

Responses

CreatorSync

idType: stringread-only

Identifier of the sync job. Use this value on follow-up calls. It is the same identifier creator_vetting reports as sync_job_id.

created_atType: string(date-time)

Time the job was created (UTC, ISO-8601).

updated_atType: string(date-time)

Time the job was most recently modified (UTC, ISO-8601).

creator_idType: stringor nullread-only

Identifier of the synced creator. Returns null until the creator has been resolved, which happens once the first posts have been read.

profile_urlType: stringor null

The profile URL this job syncs. Returns null for a job whose source URL was not recorded.

statusType: stringread-only

Where the job has got to. One of SCHEDULED, SYNCING, SUCCESS, FAILED.

from zelf import ZelfAPIClient

client = ZelfAPIClient(api_key="<your-api-key>")

result = client.creator_sync.list()
print(result)
Response
{
  "log_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "timestamp": "2026-01-01T00:00:00Z",
  "results": [
    {
      "id": "csj_qtQeeG2PjW6ua1rX",
      "created_at": "2026-05-12T14:30:00Z",
      "updated_at": "2026-05-12T15:00:00Z",
      "creator_id": "cr_pfqPv0FLsBRimHfi",
      "profile_url": "https://www.instagram.com/zelfai",
      "status": "SYNCING"
    }
  ],
  "item_count": 1,
  "page": 1,
  "next": null,
  "previous": null
}

Get Creator Sync

GET/api/v1/creator_sync/{id}/creator_sync.get

Returns a single creator sync job identified by id, the value returned by creator_sync.create or reported by a vetting as sync_job_id. Poll it until status reports SUCCESS or FAILED.

Parameters

idType: stringRequired

Returns CreatorSync

idType: stringread-only

Identifier of the sync job. Use this value on follow-up calls. It is the same identifier creator_vetting reports as sync_job_id.

created_atType: string(date-time)

Time the job was created (UTC, ISO-8601).

updated_atType: string(date-time)

Time the job was most recently modified (UTC, ISO-8601).

creator_idType: stringor nullread-only

Identifier of the synced creator. Returns null until the creator has been resolved, which happens once the first posts have been read.

profile_urlType: stringor null

The profile URL this job syncs. Returns null for a job whose source URL was not recorded.

statusType: stringread-only

Where the job has got to. One of SCHEDULED, SYNCING, SUCCESS, FAILED.

Responses

CreatorSync

idType: stringread-only

Identifier of the sync job. Use this value on follow-up calls. It is the same identifier creator_vetting reports as sync_job_id.

created_atType: string(date-time)

Time the job was created (UTC, ISO-8601).

updated_atType: string(date-time)

Time the job was most recently modified (UTC, ISO-8601).

creator_idType: stringor nullread-only

Identifier of the synced creator. Returns null until the creator has been resolved, which happens once the first posts have been read.

profile_urlType: stringor null

The profile URL this job syncs. Returns null for a job whose source URL was not recorded.

statusType: stringread-only

Where the job has got to. One of SCHEDULED, SYNCING, SUCCESS, FAILED.

Request

stringRequired
from zelf import ZelfAPIClient

client = ZelfAPIClient(api_key="<your-api-key>")

result = client.creator_sync.get("<id>")
print(result)
Response
{
  "log_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "timestamp": "2026-01-01T00:00:00Z",
  "results": [
    {
      "id": "csj_qtQeeG2PjW6ua1rX",
      "created_at": "2026-05-12T14:30:00Z",
      "updated_at": "2026-05-12T15:00:00Z",
      "creator_id": "cr_pfqPv0FLsBRimHfi",
      "profile_url": "https://www.instagram.com/zelfai",
      "status": "SYNCING"
    }
  ],
  "item_count": 1,
  "page": 1,
  "next": null,
  "previous": null
}