API referenceAdmin APISyntic CodePluginsMarketplacesAdd a marketplace

Add a marketplace

⚠️
Preview — this feature is being built; the design below is the spec.
POST https://app.syntic.ai/v1/organizations/plugin_marketplaces

Connect a Git repository that publishes plugins. Each plugin it lists is added to the catalog and goes through the same scan as an upload.

For how this fits into a full workflow, see Syntic Code plugins.

Headers

HeaderRequiredValue
AuthorizationYesBearer <admin key>: an Admin API key (sk_admin_...). Inference keys are refused with 403 admin_key_required. See Admin API keys.
syntic-betaYes, while in previewadmin-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json
Idempotency-KeyNoUp to 255 characters. Retrying with the same key within 24 hours returns the first result instead of acting twice. See Idempotency.

Body parameters

ParameterTypeRequiredNotes
namestringYes1 to 64 characters.
urlstringYesHTTPS Git URL.
refstringNoBranch or tag. Default branch if left out.
vault_secretstringNoFor private repositories: <vault_id>/<secret name> holding a read token.
auto_syncbooleanNoDefault true.

Response

201 Created, Content-Type: application/json

{
  "id": "mkt_01JCP2Q4S6U8W0Y2A4C6",
  "type": "plugin_marketplace",
  "name": "platform-team",
  "url": "https://git.example.com/acme/syntic-plugins.git",
  "ref": "main",
  "auto_sync": true,
  "plugin_count": 0,
  "last_synced_at": null,
  "last_sync_error": null,
  "created_at": "2026-09-10T10:00:00Z"
}
FieldTypeDescription
urlstringA Git repository whose root holds a marketplace.json index.
auto_syncbooleanSync every 6 hours. New plugins arrive with policy available; existing policies are kept.
plugin_countintegerPlugins listed in the index.
last_sync_errorobject or nullWhy the last sync failed.

Examples

curl -sS "https://app.syntic.ai/v1/organizations/plugin_marketplaces" \
  -H "Authorization: Bearer $SYNTIC_ADMIN_KEY" \
  -H "syntic-beta: admin-2026-11-01" \
  -H "Idempotency-Key: 8d6f0c1e-4b2a-4a57-9f0e-2f1d3c4b5a69" \
  -H "Content-Type: application/json" \
  -d '{
      "name": "platform-team",
      "url": "https://git.example.com/acme/syntic-plugins.git",
      "ref": "main",
      "vault_secret": "vlt_01JC2B4D6F8H0K2M4P6R/git-read-token"
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
400invalid_request_errorindex_not_foundNo marketplace.json at the repository root on that ref.
401authentication_errorinvalid_api_keyThe admin key is missing, unknown, revoked or expired.
403permission_erroradmin_key_requiredAn inference key was used.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?