runID is returned immediately and collection proceeds in the background. You check for completion by polling.
1. Prepare prompts
Every prompt must belong to a prompt set, so create the set first.POST /prompts/bulk (up to 100). The example below uses a Korean prompt asking for used SUV recommendations under 20M KRW.
2. Submit a run request
There are two ways to specify prompts, and you must use exactly one.promptIDs: a list of individual prompt IDs (1 to 500)promptSetID: runs every prompt in the set
AI answers vary from run to run, so ratio-based metrics such as mention rate
are only meaningful with
repeatCount set to 2 or higher. Use a single run
when you want to inspect answer content and sources by eye.The total number of runs (prompts × models ×
repeatCount) cannot exceed
10,000 per run request. Exceeding it returns the RUN_TOO_MANY_TASKS error.
For billing details, see Credits.Collecting at the location level
To collect at the city level, which is narrower thanregion, specify location. If you omit both region and location, collection happens in KR. If you specify only location, the country that location belongs to becomes the region. If you specify both, the location must belong to that region. Only ChatGPT and Perplexity support locations, so including any other model in models rejects the entire request.
Using models that require an agreement
PERPLEXITY and CLAUDE are available only to organizations with a separate agreement. If an organization without the grant includes them in models, the entire request is rejected with 403 (MODEL_NOT_GRANTED). To check whether you have the grant, see whether the model appears in the List supported models response.
3. Poll for completion
Poll untilstatus becomes FINISHED. Collection usually takes a few minutes, so an interval of about 30 seconds is recommended.
answers array is trimmed to two entries).
- While in progress,
statusisRUNNINGandrunningCountshows how many runs remain. Once they becomeFINISHED/0, collection is complete. - A run request ends as
FINISHEDeven if individual runs fail. The example above is a real case where 37 of 100 runs failed. It is not unusual for a particular model to stop responding temporarily. - Each
answersentry only carries the per-run status (PENDING/SUCCESS/FAILED). You fetch the answer body with the answers API in the next step.
AI answers are non-deterministic. The same prompt × model combination can
return different content and sources on every run. To measure probabilistic
metrics such as brand visibility rate, repeat the same combination with
repeatCount.Polling loop example
4. Retrieve answers
Once collection is complete, retrieve the answer bodies and sources.Error cases
- Specify exactly one of
promptIDsandpromptSetID. Omitting both or sending both returns the error above. - If even one model and region combination is unsupported, the entire request is rejected. Check combinations in Supported models.
- The same applies to
location. If any requested model does not support that location, the whole request is rejected withLOCATION_NOT_SUPPORTED_FOR_MODEL. If you also specifyregion, the location must belong to that region (LOCATION_REGION_MISMATCH).
Operational tips
- List runs with
GET /runs, newest first (page size up to 10). - To collect the same prompts on a regular schedule, the simplest approach is to create a set once and submit it repeatedly with
promptSetID. - Check collection characteristics such as per-model fan-out support in Supported models.