Skip to content

Projects

A project is the container every file and every analysis belongs to. Its numeric ID is the one value the rest of this reference assumes you already have: project when you upload a file, project_id on every call center read endpoint.

There are two ways to get it:

  • From the APIGET /api/projects/ lists every project your key can see, with its ID.
  • From the web app — see Finding the ID in the web app below.

All endpoints here require either a session cookie or an API key — see Authentication.


List the projects visible to the caller, newest first.

Auth: API key or session.

Query parameters:

ParameterRequiredDescription
project_typenoFilter by type: audio or survey. Call center and interview projects are both audio — they’re told apart by audio_type.
teamnoRestrict to one team’s projects, by team ID. Silently ignored if the team doesn’t exist or the key’s user isn’t a member of it — you get the default unfiltered list back, not an error, so check the team field on the results if it matters.

Response (200 OK):

Results are paginated, 100 per page. Follow next if you have more projects than that.

{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 312,
"name": "Sales — June",
"project_type": "audio",
"description": "",
"status": "created",
"user": 87,
"team": 4,
"created_at": "2026-06-01T09:14:52Z",
"updated_at": "2026-06-28T17:31:06Z",
"audio_type": "call",
"return_timestamps": false,
"default_language": "es",
"metadata": null,
"shared_with": [91, 104],
"survey_template": null,
"evaluation_rubric": 7,
"predefined_codes": null,
"auto_analysis_enabled": true,
"auto_analysis_types": ["calls_analysis_copc"],
"auto_analysis_questions": null,
"auto_analysis_batch_size": 20,
"auto_analysis_max_wait_seconds": 300,
"analyzed_custom_question_calls": 0
},
{ "…": "one object per project" }
]
}

The fields you’ll actually use:

FieldDescription
idWhat you pass as project or project_id everywhere else.
nameThe name shown in the web app’s project selector.
project_typeaudio (recordings) or survey (spreadsheet responses).
audio_typecall, interview or focus_group. Call center features only apply to call projects.
statuscreated, processing, completed or failed. Deleted projects are never returned.
teamThe owning team’s ID, or null for a personally-owned project.
auto_analysis_enabledWhether calls are analyzed automatically as they arrive. See Uploading Calls for Analysis.
shared_withIDs of users the project has been explicitly shared with.

One field to be aware of: metadata is a free-form JSON blob, and on call projects it also holds any CSV manifest rows that haven’t matched a file yet — so it can be very large. Skip it unless you put something there yourself.

Which projects come back: your own projects, every project in a team where you are an admin, and any project explicitly shared with you. Deleted projects are excluded. A key inherits its user’s view of the system exactly — see Scoping.

Example — list your call center projects:

audio_type isn’t a server-side filter, so ask for project_type=audio and filter the results.

Terminal window
curl -sS "https://app.uspeech.io/api/projects/?project_type=audio" \
-H "Authorization: Api-Key $USPEECH_KEY" \
| jq -r '.results[] | select(.audio_type == "call") | "\(.id)\t\(.name)"'

💡 Tip: look the ID up once and store it in your integration’s configuration. Project IDs are stable — they never change for the life of the project.


Read a single project. Returns the same object as one entry of the list above.

Auth: API key or session.

Useful for confirming a project is a call project (audio_type) and checking whether automatic analysis is on before you start uploading.

Terminal window
curl -sS https://app.uspeech.io/api/projects/312/ \
-H "Authorization: Api-Key $USPEECH_KEY"

A 404 Not Found here means the project exists but isn’t visible to the key’s user — check that the user owns it, admins its team, or has had it shared with them.

To change a project’s automatic-analysis settings, use PATCH /api/projects/{id}/; the configurable fields and their validation rules are documented in Uploading Calls for Analysis.


If you’d rather read the ID off the screen than call the API:

  1. Open Conversations in the web app.
  2. Pick the project in the selector at the top of the page.
  3. The ID is shown in the Upload Files card, next to the Upload via API link.

Projects you create programmatically with POST /api/projects/ return their new id in the 201 Created response, so there’s no lookup step in that case.