Skip to main content
POST
/
ai-analytics-service
/
api
/
public
/
v1
/
prompts
/
bulk-upload
Bulk Upload Prompts
curl --request POST \
  --url https://api.slatehq.ai/ai-analytics-service/api/public/v1/prompts/bulk-upload \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "platform": [
    "<string>"
  ],
  "cronExpr": "<string>",
  "timezone": "<string>",
  "brandId": 123,
  "active": true,
  "liveRun": true,
  "promptColumnIndex": 123,
  "topicColumnIndex": 123,
  "hasHeader": true,
  "location": "<string>"
}
'
{
  "jobId": 123,
  "status": "<string>",
  "s3Key": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://slatehq.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Uploads a CSV file containing multiple prompts. Each row creates a prompt and optionally triggers an immediate query run. The upload is processed asynchronously.
This endpoint uses multipart/form-data instead of JSON.

Parameters

Authorization
string
required
Bearer token. Format: Bearer slat_<your-token>.
file
file
required
CSV file containing prompts. Each row should include at least a prompt text column and a topic name column.
platform
string[]
required
AI platforms to query for all uploaded prompts. One or more of: CHATGPT, PERPLEXITY, GOOGLE_AI_OVERVIEW, GOOGLE_AI_MODE, GEMINI, CLAUDE.
cronExpr
string
required
Cron expression applied to all uploaded prompts.
timezone
string
Timezone for the cron schedule. Default: UTC.
brandId
number
Brand ID to assign to all uploaded prompts.
active
boolean
Whether the uploaded prompts should be active. Default: true.
liveRun
boolean
Whether to immediately trigger query runs for uploaded prompts. Default: true.
promptColumnIndex
integer
Column index (0-based) for the prompt text in the CSV. Default: auto-detected.
topicColumnIndex
integer
Column index (0-based) for the topic name in the CSV. Default: auto-detected.
hasHeader
boolean
Whether the CSV file has a header row. Default: true.
location
string
ISO 3166-1 alpha-2 country code applied to all uploaded prompts (e.g., US).

Response

Returns 202 Accepted. The upload job is queued for processing.
jobId
number
required
Unique identifier for the upload job.
status
string
required
Job status. PENDING for newly created jobs.
s3Key
string
required
Storage key for the uploaded file.

Example

curl -s -X POST "https://api.slatehq.ai/ai-analytics-service/api/public/v1/prompts/bulk-upload" \
  -H "Authorization: Bearer slat_YOUR_TOKEN" \
  -F "file=@prompts.csv" \
  -F "platform=CHATGPT" \
  -F "platform=PERPLEXITY" \
  -F "cronExpr=0 0 * * *" \
  -F "timezone=UTC" \
  -F "liveRun=true" \
  -F "hasHeader=true"

Response

{
  "jobId": 789,
  "status": "PENDING",
  "s3Key": "bulk-uploads/workspace-1/prompts-2026-02-11.csv"
}

Status codes

StatusDescription
202Upload accepted and queued for processing.
400Invalid request. File is empty, missing required fields, or invalid location code.
401Missing or invalid Bearer token. See Authentication.
500Internal server error.

What’s next