Unlock Protocol Locks API
The Locks API from Unlock Protocol — 4 operation(s) for locks.
The Locks API from Unlock Protocol — 4 operation(s) for locks.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/unlock-protocol-locks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Unlock Locksmith Applications Locks API
version: '2'
description: Locksmith provides backend functionality for enabling ticketing, metadata storage, and notification hooks.
license:
name: MIT
servers:
- url: https://locksmith.unlock-protocol.com
description: Production Server
- url: https://staging-locksmith.unlock-protocol.com
description: Staging Server
tags:
- name: Locks
paths:
/v2/api/{network}/locks/{lockAddress}/keys:
get:
deprecated: true
operationId: keys
security:
- User: []
- Application: []
description: List of lock keys by network with additional metadata if the caller is the lockManager (deprecated, use keys-by-page)
parameters:
- $ref: '#/components/parameters/Network'
- $ref: '#/components/parameters/LockAddress'
- in: query
name: query
required: true
schema:
type: string
description: Query you want to search for.
- in: query
name: filterKey
required: true
schema:
type: string
description: The key you want to search on.
- in: query
name: expiration
schema:
type: string
description: Expiration time
- in: query
name: approval
schema:
type: string
description: Approval status (relevant for offchain approvals on events for example)
- in: query
name: page
schema:
type: integer
description: Page number when paginating
- in: query
name: max
schema:
type: integer
description: Maximum number of items to get by page
responses:
200:
description: List of keys matching the query
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/KeyMetadata'
404:
$ref: '#/components/responses/404.NotFound'
500:
$ref: '#/components/responses/500.InternalError'
tags:
- Locks
/v2/api/{network}/locks/{lockAddress}/keys-by-page:
get:
operationId: keysByPage
security:
- User: []
- Application: []
description: List of lock keys by network with additional metadata if the caller is the lockManager
parameters:
- $ref: '#/components/parameters/Network'
- $ref: '#/components/parameters/LockAddress'
- in: query
name: query
required: true
schema:
type: string
description: Query you want to search for.
- in: query
name: filterKey
required: true
schema:
type: string
description: The key you want to search on.
- in: query
name: expiration
schema:
type: string
description: Expiration time
- in: query
name: approval
schema:
type: string
description: Approval status (relevant for offchain approvals on events for example)
- in: query
name: page
schema:
type: integer
description: Page number when paginating
- in: query
name: max
schema:
type: integer
description: Maximum number of items to get by page
responses:
200:
description: List of keys matching the query
content:
application/json:
schema:
type: object
properties:
meta:
type: object
properties:
total:
type: integer
page:
type: integer
byPage:
type: integer
keys:
type: array
items:
$ref: '#/components/schemas/KeyMetadata'
404:
$ref: '#/components/responses/404.NotFound'
500:
$ref: '#/components/responses/500.InternalError'
tags:
- Locks
/v2/api/{network}/locks/{lockAddress}/export-keys:
get:
operationId: exportKeys
security:
- User: []
- Application: []
description: Starts Job process to get all the keys for the given lock
parameters:
- $ref: '#/components/parameters/Network'
- $ref: '#/components/parameters/LockAddress'
- in: query
name: query
required: true
schema:
type: string
description: Query you want to search for.
- in: query
name: filterKey
required: true
schema:
type: string
description: The key you want to search on.
- in: query
name: expiration
schema:
type: string
description: Expiration time
- in: query
name: approval
schema:
type: string
description: Approval status (relevant for offchain approvals on events for example)
responses:
'200':
description: Successfully started Keys Job
content:
application/json:
schema:
type: object
properties:
jobId:
type: string
'401':
description: Unauthorized
'404':
description: Not Found
tags:
- Locks
/v2/api/{network}/locks/{lockAddress}/export-keys/{jobId}:
get:
operationId: getExportedKeys
security:
- User: []
- Application: []
description: Get job result by job id
parameters:
- $ref: '#/components/parameters/Network'
- $ref: '#/components/parameters/LockAddress'
- $ref: '#/components/parameters/JobId'
responses:
'200':
description: Successfully retrieved job result
content:
application/json:
schema:
type: object
properties:
meta:
type: object
properties:
total:
type: integer
page:
type: integer
byPage:
type: integer
keys:
type: array
items:
$ref: '#/components/schemas/KeyMetadata'
'401':
description: Unauthorized
'404':
description: Job not found
tags:
- Locks
components:
responses:
404.NotFound:
description: The item you are making request for does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericNotFound'
500.InternalError:
description: Unable to fullfil request due to internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericServerError'
parameters:
LockAddress:
in: path
name: lockAddress
required: true
description: Lock address.
schema:
type: string
JobId:
in: path
name: jobId
required: true
description: Id of the exported job.
schema:
type: string
Network:
in: path
name: network
required: true
description: Network id.
schema:
type: integer
schemas:
KeyMetadata:
type: object
properties:
token:
type: string
lockName:
type: string
lockAddress:
type: string
expiration:
type: integer
keyHolderAddress:
type: string
GenericServerError:
type: object
properties:
message:
type: string
default: There was an error in fullfiling the request.
GenericNotFound:
type: object
properties:
message:
type: string
default: resource not found
securitySchemes:
User:
type: http
scheme: bearer
bearerFormat: JWT
Application:
type: apiKey
name: api-key
in: query