# Pinshape — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and retrieve 3D printable models, view detailed information about designs including comments and print history, and explore user profiles, collections, and liked models from Pinshape.com. Access comprehensive metadata about 3D models along with community interactions to discover and manage printable designs.

**Category:** Marketplaces | **Website:** [pinshape.com/](https://pinshape.com/) | **Docs:** [parse.bot/marketplace/25c03fdb-d500-438f-af07-22a73533b9a0/pinshape-com-api](https://parse.bot/marketplace/25c03fdb-d500-438f-af07-22a73533b9a0/pinshape-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_collection_items

Retrieve paginated models within a specific collection. Returns item cards in the same shape as search_models results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `collection_id` | string | Yes | Numeric collection ID (from get_user_collections results[*].id). |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_collection_items \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"collection_id":"<string>","page":"<integer>"}'
```

### get_model_comments

Retrieve paginated comments for a specific model. Returns comments with user info, timestamps, and threading metadata. Each comment includes content, username, likes_count, and parent/thread info for nested replies.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `item_id` | string | Yes | Numeric item ID (from search_models results[*].id). |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_model_comments \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"item_id":"<string>","page":"<integer>"}'
```

### get_model_details

Get full details of a specific 3D model including description, tags, files, license, and creator info. Requires both item_id and slug from search_models results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `item_id` | string | Yes | Numeric item ID (from search_models results[*].id). |
| `slug` | string | Yes | Item slug (from search_models results[*].slug). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_model_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"item_id":"<string>","slug":"<string>"}'
```

### get_model_prints

Retrieve paginated community prints/makes for a specific model. Each print includes photos, print settings (material, layer height, infill, temperature), rating, and user info. Returns an empty prints array for models with no community makes.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `item_id` | string | Yes | Numeric item ID (from search_models results[*].id). |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_model_prints \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"item_id":"<string>","page":"<integer>"}'
```

### get_user_collections

Retrieve paginated curated collections created by a specific user. Each collection has an id, title, and URL.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `user_id` | string | Yes | Numeric user ID (from search_models results[*].creator.id or get_user_profile.id). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_user_collections \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","user_id":"<string>"}'
```

### get_user_likes

Retrieve models liked by a specific user. Returns item cards in the same shape as search_models results. Returns an empty items array for users with no public likes.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `user_id` | string | Yes | Numeric user ID (from search_models results[*].creator.id or get_user_profile.id). |
| `username` | string | No | Username slug. Used to construct the profile URL. Falls back to 'user' if omitted. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_user_likes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"<string>","username":"<string>"}'
```

### get_user_models

Retrieve paginated models uploaded by a specific user. Returns item cards with the same shape as search_models results, plus pagination metadata.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `user_id` | string | Yes | Numeric user ID (from search_models results[*].creator.id or get_user_profile.id). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_user_models \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","user_id":"<string>"}'
```

### get_user_profile

Get a user profile by ID and username. Returns display name, social links, location, and follower/like counts. Some fields (website, twitter, location) may be absent if the user has not set them.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `user_id` | string | Yes | Numeric user ID (from search_models results[*].creator.id). |
| `username` | string | Yes | Username slug (from search_models results[*].creator.slug). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/get_user_profile \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"<string>","username":"<string>"}'
```

### search_models

Search for 3D printable models by keyword and filters. Returns paginated results with item cards including creator info, pricing, and engagement counts. Omitting the query returns all models matching the specified filters.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | string | No | Category name to filter by. |
| `limit` | integer | No | Number of items per page. |
| `nsfw` | integer | No | NSFW filter. 0 excludes NSFW, 1 includes NSFW. |
| `page` | integer | No | Page number for pagination. |
| `pricing` | string | No | Pricing filter. |
| `query` | string | No | Search query string. |
| `sort` | string | No | Sort order for results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinshape-com-api-25c03fdb/search_models \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category":"<string>","limit":"<integer>","nsfw":"<integer>","page":"<integer>","pricing":"<string>","query":"<string>","sort":"<string>"}'
```
