> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mixpeek.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Extractor Submissions

> Submit custom extractors for review and inclusion in the Mixpeek extractor catalog

<Card title="Browse the extractor catalog on GitHub" icon="github" href="https://github.com/mixpeek/mixpeek-extractors" horizontal>
  Runnable reference for every built-in Mixpeek extractor — inputs, parameters, output fields, embedding models, and copy-paste examples. Auto-generated from the live registry, so it always matches production.
</Card>

<Warning>
  **Marketplace Deprecated.** The self-service marketplace (publish/install/browse via `/v1/plugins/...` and `/v1/public/plugins/...`) has been removed. The SDK methods `client.plugins.publish()`, `client.plugins.marketplace.list()`, and `client.plugins.install()` no longer exist.

  Extractor sharing now uses the **submission workflow** described below.
</Warning>

## How It Works

Instead of a self-service marketplace, community extractors follow a submission and review process:

1. **Develop** — Build your extractor following the [Custom Extractors guide](/processing/custom-extractors)
2. **Submit** — Upload your extractor archive via `POST /v1/extractors/submissions`
3. **Review** — The Mixpeek team reviews the submission for quality, security, and compatibility
4. **Merge** — Approved extractors are merged into `engine/extractors/` and become available as built-in extractors

```mermaid theme={null}
graph LR
    A[Develop Extractor] --> B[Submit Archive]
    B --> C[Mixpeek Reviews]
    C --> D[Approved & Merged]
    D --> E[Available as built-in extractor]
```

## Submitting an Extractor

Package your extractor as a zip archive and submit it for review:

```bash theme={null}
# Package your extractor
zip -r my_text_extractor.zip my_text_extractor/

# Submit for review
curl -X POST "https://api.mixpeek.com/v1/extractors/submissions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: multipart/form-data" \
  -F "archive=@my_text_extractor.zip" \
  -F "display_name=My Text Extractor" \
  -F "description=Advanced text extraction with custom NLP models" \
  -F "category=text-processing"
```

### Submission Requirements

* Extractor must pass validation and security scan (same rules as custom extractor uploads)
* Include a complete `manifest.py` with correct `features` definitions
* Include working `pipeline.py` and optionally `realtime.py`
* Archive must be under 500 MB

## Review Process

After submission:

1. The archive is validated and scanned automatically
2. The Mixpeek team reviews the extractor code for quality and security
3. If approved, the extractor code is merged into `engine/extractors/`
4. The submitting organization is notified and the extractor becomes available to all users

## Trust Tiers

| Tier        | Description                                                       |
| ----------- | ----------------------------------------------------------------- |
| `community` | Extractors submitted by community members and approved by Mixpeek |
| `verified`  | Extractors with additional performance and reliability validation |
| `official`  | Extractors developed and maintained by Mixpeek                    |

## Using Approved Extractors

Once an extractor is approved and merged, it works like any built-in extractor. Reference it by name and version in your collection configuration:

```python theme={null}
# Create a collection using the approved extractor
client.collections.create(
    namespace_id="ns_abc123",
    collection_name="my-collection",
    source={"type": "bucket", "bucket_ids": ["bkt_xyz"]},
    feature_extractor={
        "feature_extractor_name": "text_extractor",
        "version": "v1",
        "input_mappings": {"text": "description"},
    }
)
```
