Art, with an API.
The same source records, image packages and creative tools that power this app.
curl 'https://ursy.art/wp-json/ursy-art/v1/artworks?q=Monet'Connect an MCP client
Use the Streamable HTTP endpoint below. Tools provide bounded JSON responses. Private image-search jobs and account collections use authenticated REST endpoints.
https://ursy.art/wp-json/ursy-art/v1/mcpWorking operations
Find art
search_artworksPOST
Search artworks
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"artist_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [],
"additionalProperties": false
}get_artworksPOST
Get artworks
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"artist_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [],
"additionalProperties": false
}get_artworkPOST
Get artwork
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}resolve_artwork_referencePOST
Resolve artwork reference
{
"type": "object",
"properties": {
"reference": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"artist_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [],
"additionalProperties": false,
"anyOf": [
{
"required": [
"reference"
]
},
{
"required": [
"id"
]
},
{
"required": [
"q"
]
}
]
}search_creatorsPOST
Search creators
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
}
},
"required": [],
"additionalProperties": false
}get_creator_profilePOST
Get creator profile
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [
"id"
],
"additionalProperties": false
}get_creator_worksPOST
Get creator works
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [
"id"
],
"additionalProperties": false
}browse_subjectsPOST
Browse subjects
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}get_subject_collectionPOST
Get subject collection
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"artist_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [
"subject"
],
"additionalProperties": false
}browse_museumsPOST
Browse museums
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}get_museum_collectionPOST
Get museum collection
{
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"artist_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [
"id"
],
"additionalProperties": false
}Images and evidence
get_image_assetsPOST
Get image assets
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}get_reuse_evidencePOST
Get reuse evidence
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}filter_by_reuse_policyPOST
Filter by reuse policy
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 160,
"description": "Words matched against the locally published museum catalogue."
},
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
},
"source": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"artist_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait",
"square"
]
},
"from": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"to": {
"type": "integer",
"minimum": -1000000,
"maximum": 1000000
},
"min_width": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"min_height": {
"type": "integer",
"minimum": 1,
"maximum": 50000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"default": 1
},
"availability": {
"type": "string",
"enum": [
"all",
"downloads",
"catalogue"
],
"default": "all"
},
"reuse": {
"type": "string",
"enum": [
"cc0"
],
"description": "Source image eligibility; does not imply a prepared URSY download."
},
"sort": {
"type": "string",
"enum": [
"featured",
"oldest",
"newest",
"title"
],
"default": "featured"
}
},
"required": [],
"additionalProperties": false
}make_credit_linesPOST
Make credit lines
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
}
},
"required": [
"ids"
],
"additionalProperties": false
}get_image_packagePOST
Get image package
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}get_canonical_assetPOST
Get canonical asset
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}get_image_provenancePOST
Get image provenance
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}resolve_imagePOST
Resolve image
{
"type": "object",
"properties": {
"sha256": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$"
}
},
"required": [
"sha256"
],
"additionalProperties": false
}match_imagePOST
Match image
{
"type": "object",
"properties": {
"sha256": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$"
}
},
"required": [
"sha256"
],
"additionalProperties": false
}Creative tools
compare_artworksPOST
Compare artworks
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 4
}
},
"required": [
"ids"
],
"additionalProperties": false
}build_art_timelinePOST
Build art timeline
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
}
},
"required": [
"ids"
],
"additionalProperties": false
}get_image_palettePOST
Get image palette
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}find_art_by_palettePOST
Find art by palette
{
"type": "object",
"properties": {
"color": {
"type": "string",
"pattern": "^#?[a-fA-F0-9]{6}$"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 24
}
},
"required": [
"color"
],
"additionalProperties": false
}find_visually_similar_artPOST
Find visually similar art
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}suggest_image_fitPOST
Suggest image fit
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"width": {
"type": "number",
"minimum": 1,
"maximum": 20000,
"default": 1200
},
"height": {
"type": "number",
"minimum": 1,
"maximum": 20000,
"default": 800
}
},
"required": [
"id"
],
"additionalProperties": false
}estimate_print_sizePOST
Estimate print size
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"dpi": {
"type": "number",
"minimum": 72,
"maximum": 1200,
"default": 300,
"description": "Pixels per inch of the delivered file; not physical artwork dimensions."
}
},
"required": [
"id"
],
"additionalProperties": false
}build_responsive_image_setPOST
Build responsive image set
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}build_image_requestPOST
Build image request
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"width": {
"type": "number",
"minimum": 1,
"maximum": 20000,
"default": 1200
},
"height": {
"type": "number",
"minimum": 1,
"maximum": 20000,
"default": 800
}
},
"required": [
"id"
],
"additionalProperties": false
}Collections and publishing
assemble_galleryPOST
Assemble gallery
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
}
},
"required": [
"ids"
],
"additionalProperties": false
}build_moodboard_manifestPOST
Build moodboard manifest
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 100
}
},
"required": [
"ids"
],
"additionalProperties": false
}build_teaching_packPOST
Build teaching pack
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 24
}
},
"required": [
"ids"
],
"additionalProperties": false
}get_artwork_fact_sheetPOST
Get artwork fact sheet
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}get_daily_selectionPOST
Get daily selection
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}export_collectionPOST
Export collection
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 500
}
},
"required": [
"ids"
],
"additionalProperties": false
}find_replacement_imagePOST
Find replacement image
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"id"
],
"additionalProperties": false
}match_saved_briefPOST
Match saved brief
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"minimum": 1
},
{
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
]
}
},
"required": [
"id"
],
"additionalProperties": false
}Data and updates
get_catalogue_facetsPOST
Get catalogue facets
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}get_collection_statisticsPOST
Get collection statistics
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}get_changesPOST
Get changes
{
"type": "object",
"properties": {
"cursor": {
"type": "integer",
"minimum": 0,
"maximum": 9223372036854775807,
"default": 0
}
},
"required": [],
"additionalProperties": false
}get_asset_changesPOST
Get asset changes
{
"type": "object",
"properties": {
"cursor": {
"type": "integer",
"minimum": 0,
"maximum": 9223372036854775807,
"default": 0
}
},
"required": [],
"additionalProperties": false
}get_sourcesPOST
Get sources
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}get_source_statusPOST
Get source status
{
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"met",
"chicago",
"cleveland",
"smithsonian",
"rijksmuseum"
]
}
},
"required": [],
"additionalProperties": false
}get_service_cataloguePOST
Get service catalogue
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}Data releases
Responses identify the current catalogue release. Image files have immutable paths, SHA-256 checksums and JSON companions. Catalogue and image release IDs are separate. The change feed currently reports image-release revisions and withdrawals; compare catalogue release IDs to detect a new bulk snapshot.
Download prepared-image catalogue JSONLConnect an agent to your saved work
Use URSY.ID to give an application access to the same private collections and briefs you see on this website. Read the typed workspace operations, or connect through /wp-json/ursy-art/v1/workspace/mcp.
The resource is https://ursy.art/wp-json/ursy-art/v1. Existing accounts start device authorization at https://ursy.id/oidc/device_authorization with client ursy-agent, explicit scopes and a JSON-encoded ursy_art_access selection. Follow the returned verification URL to sign in and approve access at ID. Poll at the returned interval and respect pending, slow-down and expiry responses.
New accounts start at https://ursy.id/api/registrations with login, email, resource, scope and authorization details, then complete email verification and hosted approval. Registering an OAuth application does not create a verified person. Passwords stay on ID's hosted pages.
Explicitly approve your own complete workspace, or select existing collection and brief IDs:
[{"type":"ursy_art_access","locations":["https://ursy.art/wp-json/ursy-art/v1"],"workspace":true,"collection_ids":[],"brief_ids":[]}]
To restrict access, use workspace:false and supply at least one real collection or brief ID. Each ID list supports up to 100 entries. Use the website to choose existing work before approving a restricted connection. Creating new objects requires explicit approval of your own workspace.
The scopes are art.account.read, art.collections.read, art.collections.write, art.briefs.read and art.briefs.write. Read permission does not permit changes. Every write requires an idempotency_key; collection updates and deletion also require the current version. Retry identical requests with the same key for up to 24 hours. Version conflicts require reading the latest collection before preparing a new change.
Every operation checks current ID permission, selected objects and local ownership. Private results contain no sponsorship and are excluded from shared caches and public telemetry. Public sharing, private takeout, image-worker jobs and WordPress administration are not granted by this delegated API.
Redirect applications use PKCE S256, unpredictable state and an exact registered HTTPS callback. Access tokens last at most five minutes. Request offline_access only when needed, save rotated refresh tokens atomically and return to authorization after permission expires or is revoked. Account management uses a separate https://ursy.id/api resource token.