List sources
Returns a paginated list of sources in the organization.
Authorization
BearerAuth Jellypod API key. Create and manage keys from the Jellypod dashboard under Settings → API Keys.
In: header
Query Parameters
Opaque cursor from a previous response's next_cursor field. Omit for the first page.
Number of items to return per page.
201 <= value <= 100Filter by source type.
"url" | "youtube" | "text" | "file"Filter by processing status.
"awaiting_upload" | "processing" | "completed" | "error"Response Body
application/json
application/json
application/json
curl -X GET "https://api.jellypod.com/v1/sources"{
"data": [
{
"id": "b7c8d9e0-f1a2-3456-bcde-f12345678901",
"title": "OpenAI GPT-5 Announcement",
"type": "url",
"status": "completed",
"metadata": {
"url": "https://openai.com/blog/gpt-5"
},
"error_message": null,
"created_at": "2026-02-28T09:00:00.000Z",
"updated_at": "2026-02-28T09:01:00.000Z"
}
],
"pagination": {
"has_more": true,
"next_cursor": "string"
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}{
"error": {
"code": "bad_request",
"message": "string",
"request_id": "string",
"details": [
{
"field": "string",
"message": "string"
}
]
}
}Was this page helpful?
Get a voice GET
Retrieve a single voice by ID.
Create a source POST
Create a new source. Accepts either `application/json` (for URL, YouTube, or text sources) or `multipart/form-data` (for file uploads). The content is processed asynchronously. Returns `202 Accepted` with the source in `processing` status. Poll `GET /v1/sources/{id}` to check processing status. **File uploads via multipart/form-data:** Send a `file` field with the file data and an optional `title` field. Supported file types: PDF, plain text, markdown, CSV, DOCX, PPTX. Maximum file size: 10 MB.