Directree Listings API
The Listings API from Directree — 4 operation(s) for listings.
The Listings API from Directree — 4 operation(s) for listings.
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/directree-io:directree-io-listings-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: Directree Plus Listing Listings API
version: 1.0.0
description: 'Beta: one verified listing per key; 60 requests/minute, 1,000 requests/day and 100 changed updates/day per account. Partial updates follow existing review rules.'
servers:
- url: https://www.directree.io
security:
- bearerAuth: []
tags:
- name: Listings
paths:
/api/v1/listings:
get:
operationId: listMyListings
summary: Read the listing accessible to this connection
responses:
'200':
description: Success. Update returns listing, changes and replayed; validation returns preview, revision, staged and changes.
content:
application/json:
schema:
type: object
'400':
description: Invalid JSON or missing Idempotency-Key.
'401':
description: Missing, revoked, expired or invalid key.
'403':
description: Plus required or connection is read-only.
'404':
description: Listing unavailable to this connection.
'409':
description: Idempotency-Key reused for a different request, or listing cannot be updated.
'412':
description: Revision changed. Re-read and review before retrying.
'413':
description: Request exceeds 32 KiB.
'415':
description: Content-Type must be application/json.
'422':
description: Field validation failed; error.fields contains paths and messages.
'428':
description: X-Listing-Revision required.
'429':
description: Rate limit reached. Respect Retry-After.
'503':
description: Temporarily unavailable. Retry the identical request with the same Idempotency-Key.
tags:
- Listings
/api/v1/listings/{id}:
get:
operationId: getMyListing
summary: Read current owner-visible fields and revision
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Success. Update returns listing, changes and replayed; validation returns preview, revision, staged and changes.
content:
application/json:
schema:
type: object
'400':
description: Invalid JSON or missing Idempotency-Key.
'401':
description: Missing, revoked, expired or invalid key.
'403':
description: Plus required or connection is read-only.
'404':
description: Listing unavailable to this connection.
'409':
description: Idempotency-Key reused for a different request, or listing cannot be updated.
'412':
description: Revision changed. Re-read and review before retrying.
'413':
description: Request exceeds 32 KiB.
'415':
description: Content-Type must be application/json.
'422':
description: Field validation failed; error.fields contains paths and messages.
'428':
description: X-Listing-Revision required.
'429':
description: Rate limit reached. Respect Retry-After.
'503':
description: Temporarily unavailable. Retry the identical request with the same Idempotency-Key.
tags:
- Listings
patch:
operationId: updateMyListing
summary: Update explicitly supplied fields
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: X-Listing-Revision
in: header
required: true
description: The 32-character listing.revision value from GET, without quotes. Omit HTTP conditional headers such as If-Match.
schema:
type: string
- name: Idempotency-Key
in: header
required: true
schema:
type: string
pattern: ^[A-Za-z0-9_-]{8,128}$
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
name:
type: string
minLength: 1
maxLength: 120
tagline:
type: string
maxLength: 200
description:
type: string
maxLength: 2000
pricing_from:
anyOf:
- type: string
maxLength: 60
- type: 'null'
has_free_plan:
type: boolean
has_free_trial:
type: boolean
plan_type:
anyOf:
- type: string
enum:
- paid
- subscription
- free
- freemium
- type: 'null'
company_location:
anyOf:
- type: string
maxLength: 120
- type: 'null'
languages:
maxItems: 20
type: array
items:
type: string
minLength: 1
maxLength: 40
integrations:
maxItems: 8
type: array
items:
type: string
minLength: 1
maxLength: 100
socials:
type: object
propertyNames:
type: string
enum:
- twitter
- linkedin
- github
- discord
- youtube
- facebook
- instagram
- tiktok
additionalProperties:
type: string
maxLength: 500
format: uri
youtube_url:
anyOf:
- type: string
maxLength: 500
format: uri
- type: 'null'
demo_url:
anyOf:
- type: string
maxLength: 500
format: uri
- type: 'null'
founder_key_features:
maxItems: 10
type: array
items:
type: string
minLength: 1
maxLength: 200
founder_best_for:
anyOf:
- type: string
maxLength: 160
- type: 'null'
plans:
maxItems: 6
type: array
items:
type: object
properties:
plan_name:
type: string
minLength: 1
maxLength: 60
price_monthly_cents:
anyOf:
- type: integer
minimum: 0
maximum: 100000000
- type: 'null'
price_annual_per_month_cents:
anyOf:
- type: integer
minimum: 0
maximum: 100000000
- type: 'null'
currency:
default: USD
type: string
pattern: ^[A-Z]{3}$
is_free:
default: false
type: boolean
is_custom:
default: false
type: boolean
trial_days:
anyOf:
- type: integer
minimum: 0
maximum: 3650
- type: 'null'
card_required:
anyOf:
- type: boolean
- type: 'null'
highlights:
maxItems: 5
type: array
items:
type: string
minLength: 1
maxLength: 60
required:
- plan_name
additionalProperties: false
additionalProperties: false
responses:
'200':
description: Success. Update returns listing, changes and replayed; validation returns preview, revision, staged and changes.
content:
application/json:
schema:
type: object
'400':
description: Invalid JSON or missing Idempotency-Key.
'401':
description: Missing, revoked, expired or invalid key.
'403':
description: Plus required or connection is read-only.
'404':
description: Listing unavailable to this connection.
'409':
description: Idempotency-Key reused for a different request, or listing cannot be updated.
'412':
description: Revision changed. Re-read and review before retrying.
'413':
description: Request exceeds 32 KiB.
'415':
description: Content-Type must be application/json.
'422':
description: Field validation failed; error.fields contains paths and messages.
'428':
description: X-Listing-Revision required.
'429':
description: Rate limit reached. Respect Retry-After.
'503':
description: Temporarily unavailable. Retry the identical request with the same Idempotency-Key.
tags:
- Listings
/api/v1/listings/{id}/validate:
post:
operationId: previewMyListingUpdate
summary: Validate and preview without saving
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: X-Listing-Revision
in: header
required: true
description: The 32-character listing.revision value from GET, without quotes. Omit HTTP conditional headers such as If-Match.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
name:
type: string
minLength: 1
maxLength: 120
tagline:
type: string
maxLength: 200
description:
type: string
maxLength: 2000
pricing_from:
anyOf:
- type: string
maxLength: 60
- type: 'null'
has_free_plan:
type: boolean
has_free_trial:
type: boolean
plan_type:
anyOf:
- type: string
enum:
- paid
- subscription
- free
- freemium
- type: 'null'
company_location:
anyOf:
- type: string
maxLength: 120
- type: 'null'
languages:
maxItems: 20
type: array
items:
type: string
minLength: 1
maxLength: 40
integrations:
maxItems: 8
type: array
items:
type: string
minLength: 1
maxLength: 100
socials:
type: object
propertyNames:
type: string
enum:
- twitter
- linkedin
- github
- discord
- youtube
- facebook
- instagram
- tiktok
additionalProperties:
type: string
maxLength: 500
format: uri
youtube_url:
anyOf:
- type: string
maxLength: 500
format: uri
- type: 'null'
demo_url:
anyOf:
- type: string
maxLength: 500
format: uri
- type: 'null'
founder_key_features:
maxItems: 10
type: array
items:
type: string
minLength: 1
maxLength: 200
founder_best_for:
anyOf:
- type: string
maxLength: 160
- type: 'null'
plans:
maxItems: 6
type: array
items:
type: object
properties:
plan_name:
type: string
minLength: 1
maxLength: 60
price_monthly_cents:
anyOf:
- type: integer
minimum: 0
maximum: 100000000
- type: 'null'
price_annual_per_month_cents:
anyOf:
- type: integer
minimum: 0
maximum: 100000000
- type: 'null'
currency:
default: USD
type: string
pattern: ^[A-Z]{3}$
is_free:
default: false
type: boolean
is_custom:
default: false
type: boolean
trial_days:
anyOf:
- type: integer
minimum: 0
maximum: 3650
- type: 'null'
card_required:
anyOf:
- type: boolean
- type: 'null'
highlights:
maxItems: 5
type: array
items:
type: string
minLength: 1
maxLength: 60
required:
- plan_name
additionalProperties: false
additionalProperties: false
responses:
'200':
description: Success. Update returns listing, changes and replayed; validation returns preview, revision, staged and changes.
content:
application/json:
schema:
type: object
'400':
description: Invalid JSON or missing Idempotency-Key.
'401':
description: Missing, revoked, expired or invalid key.
'403':
description: Plus required or connection is read-only.
'404':
description: Listing unavailable to this connection.
'409':
description: Idempotency-Key reused for a different request, or listing cannot be updated.
'412':
description: Revision changed. Re-read and review before retrying.
'413':
description: Request exceeds 32 KiB.
'415':
description: Content-Type must be application/json.
'422':
description: Field validation failed; error.fields contains paths and messages.
'428':
description: X-Listing-Revision required.
'429':
description: Rate limit reached. Respect Retry-After.
'503':
description: Temporarily unavailable. Retry the identical request with the same Idempotency-Key.
tags:
- Listings
/api/v1/listings/{id}/changes:
get:
operationId: getMyListingChanges
summary: Read the latest 50 non-empty API updates for the current owner
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Success. Update returns listing, changes and replayed; validation returns preview, revision, staged and changes.
content:
application/json:
schema:
type: object
'400':
description: Invalid JSON or missing Idempotency-Key.
'401':
description: Missing, revoked, expired or invalid key.
'403':
description: Plus required or connection is read-only.
'404':
description: Listing unavailable to this connection.
'409':
description: Idempotency-Key reused for a different request, or listing cannot be updated.
'412':
description: Revision changed. Re-read and review before retrying.
'413':
description: Request exceeds 32 KiB.
'415':
description: Content-Type must be application/json.
'422':
description: Field validation failed; error.fields contains paths and messages.
'428':
description: X-Listing-Revision required.
'429':
description: Rate limit reached. Respect Retry-After.
'503':
description: Temporarily unavailable. Retry the identical request with the same Idempotency-Key.
tags:
- Listings
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: A Directree API key created in Account → Agent access.