Skip to main content
Some resources support a metadata field that allows you to store arbitrary key-value pairs. This is useful for attaching your own identifiers, references, or any other information that is meaningful to your integration.

Format

Metadata is a flat JSON object where both keys and values must be strings.
{
  "metadata": {
    "external_id": "abc_123",
    "source": "zapier",
    "correlation.id": "req-001"
  }
}

Constraints

ConstraintLimit
Maximum number of keys20
Key formatLowercase alphanumeric characters, dots (.), underscores (_), colons (:), and hyphens (-)
Maximum key length40 characters
Maximum value length500 characters
Value typeString only

Update semantics

Metadata updates use merge-patch semantics (RFC 7386). When updating metadata, only the keys you include in the request are affected. Existing keys that are not included remain unchanged.
  • Add or update a key: include the key with a string value
  • Remove a key: include the key with a null value
  • Clear all metadata: send an empty object {}
  • Leave metadata unchanged: omit the metadata field from the request
Create with metadata
curl -X POST "https://public-api.stora.co/2025-09/webhook_endpoints" \
 -H 'content-type: application/json' \
 -H 'authorization: Bearer ACCESS_TOKEN' \
 -d '{"name": "My Webhook", "url": "https://example.com/webhook", "api_version": "2025-09", "event_types": ["contact.created"], "metadata": {"source": "zapier", "external_id": "abc_123"}}'
Update: change one key, remove another
curl -X PATCH "https://public-api.stora.co/2025-09/webhook_endpoints/we_..." \
 -H 'content-type: application/json' \
 -H 'authorization: Bearer ACCESS_TOKEN' \
 -d '{"metadata": {"source": "make", "external_id": null}}'
After the update, the metadata will be {"source": "make"} — the source key was updated and external_id was removed.