> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.simplified.com/api-reference/platform/projects/list-projects/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.simplified.com/_mcp/server.
# API · Projects · List projects of a type (Project or AdCreativeProject)
GET https://api.simplified.com/api/v1/projects/{resourcetype}
List projects of the given `resourcetype` in the workspace, paginated and
newest-first. Returns project objects with their UUIDs — needed for
`getProject`, `listProjectItems`, and `deleteProject`. Filter with
`?search=
`. Pass the same `resourcetype` you created the projects with.
Reference: https://docs.simplified.com/api-reference/platform/projects/list-projects
## Authentication
- `Authorization` header (required) (prefixed with ` Api-Key `) — Header authentication of the form `Api-Key `
- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token.
## Request
### Path parameters
- `resourcetype` (enum, required) — Project type selector (the model name). The API is polymorphic — the same URL structure serves different project types based on this value. Valid values: - `Project` — generic projects (the default for most content). - `AdCreativeProject` — ad-creative projects (specialized fields). Use the same value on create, get, list, and delete for a given project.
- Allowed values: `Project`, `AdCreativeProject`
### Query parameters
- `primary_type` (string, optional) — Filter by a SINGLE primary type — not a comma-separated list; the server rejects anything over 24 characters. Values are free-form and case-sensitive, e.g. `ad`, `image`, `quote`, `thumbnail`, `AIAvatarVideo`, `UGCVideo`, `SMQuotes`, `ImageYTThumb`. Call without this parameter to list every type, then filter client-side.
- `ordering` (string, optional) — Field to order results by
- `search` (string, optional) — Search term to filter projects
- `thread_id` (string, optional) — Return only the projects recorded while working in one conversation. Pass `current` for the conversation you are in — the toolkit replaces it with the real thread id, so an id you compose yourself is ignored.
- `expand` (string, optional) — Comma-separated fields to expand inline. Pass `items` to get each project's deliverables in the same response instead of calling `listProjectItems` per project.
## Response
### 200
List of projects
- `any`
## Errors
### 401 Unauthorized Error
Unauthorized
- `any`
## Examples
**SDK Code**
```python
import requests
url = "https://api.simplified.com/api/v1/projects/Project"
headers = {"Authorization": "Api-Key "}
response = requests.get(url, headers=headers)
print(response.json())
```
```javascript
const url = 'https://api.simplified.com/api/v1/projects/Project';
const options = {method: 'GET', headers: {Authorization: 'Api-Key '}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
```
```go
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.simplified.com/api/v1/projects/Project"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Api-Key ")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
```
```ruby
require 'uri'
require 'net/http'
url = URI("https://api.simplified.com/api/v1/projects/Project")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Api-Key '
response = http.request(request)
puts response.read_body
```
```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse response = Unirest.get("https://api.simplified.com/api/v1/projects/Project")
.header("Authorization", "Api-Key ")
.asString();
```
```php
request('GET', 'https://api.simplified.com/api/v1/projects/Project', [
'headers' => [
'Authorization' => 'Api-Key ',
],
]);
echo $response->getBody();
```
```csharp
using RestSharp;
var client = new RestClient("https://api.simplified.com/api/v1/projects/Project");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Api-Key ");
IRestResponse response = client.Execute(request);
```
```swift
import Foundation
let headers = ["Authorization": "Api-Key "]
let request = NSMutableURLRequest(url: NSURL(string: "https://api.simplified.com/api/v1/projects/Project")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
```