Do I Need the API?
For most customers, the API is not required. You can manage listings without code:
- Dashboard: Add, edit, and organize listings in your dashboard.
- CSV import: Upload many listings from a spreadsheet.
- Google Sheets sync: Keep listings in sync automatically.
- Form integrations: Connect tools like JotForm, Typeform, and Tally.
- Zapier: Automate updates across thousands of apps.
The REST API is best when you need custom integrations from your own systems (CRM, backend jobs, internal tools, or proprietary databases).
Overview
The EmbedDirectory REST API gives you CRUD access to your listings and field definitions.
Base URL
https://api.embeddirectory.com/v1/manage
The API is available on the Business plan. All requests require a private API key.
Authentication
Send your API key on every request:
Authorization: Bearer edsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Alternative header:
X-API-Key: edsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Get Your API Key
- Go to Dashboard → Developers
- Click Create API Key
- Copy it immediately (shown once at creation)
Rate Limits
The API allows 120 requests per minute per API key.
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per minute |
X-RateLimit-Remaining | Requests remaining in the current window |
Response Format
Successful responses:
{
"success": true,
"data": { }
}
Paginated responses:
{
"success": true,
"data": [],
"meta": {
"page": 1,
"per_page": 50,
"total": 127,
"total_pages": 3
}
}
Error Handling
Error responses:
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "The name field is required.",
"details": {
"name": ["The name field is required."]
}
}
}
| Status Code | Meaning |
|---|---|
200 | Success |
201 | Created successfully |
204 | Deleted successfully (no content) |
401 | Invalid or missing API key |
403 | Access denied (plan or permission) |
404 | Resource not found |
422 | Validation error |
429 | Rate limit exceeded |
List Listings
/v1/manage/listings
Returns a paginated list of listings.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
per_page | integer | Results per page, max 100 (default: 50) |
status | string | published or draft |
search | string | Search by listing name |
Example Request
curl -H "Authorization: Bearer edsk_xxxx" \
"https://api.embeddirectory.com/v1/manage/listings?status=published&per_page=10"
Get a Listing
/v1/manage/listings/{id}
Returns one listing by ID.
Example Request
curl -H "Authorization: Bearer edsk_xxxx" \
"https://api.embeddirectory.com/v1/manage/listings/42"
Create a Listing
/v1/manage/listings
Creates a new listing.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Listing name (max 255 chars) |
description | string | No | Listing description |
address | string | No | Street address (max 500 chars) |
location | object | No | { "latitude": 0, "longitude": 0 } |
field_values | object | No | Custom values keyed by field ID |
status | string | No | published (default) or draft |
Example Request
curl -X POST "https://api.embeddirectory.com/v1/manage/listings" \
-H "Authorization: Bearer edsk_xxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corp",
"description": "Leading provider of widgets",
"address": "123 Main St, Springfield, IL",
"location": {
"latitude": 39.7817,
"longitude": -89.6501
},
"field_values": {
"category_field_1": "Technology"
},
"status": "published"
}'
Update a Listing
/v1/manage/listings/{id}
Updates an existing listing. Supports partial updates.
Example Request
curl -X PUT "https://api.embeddirectory.com/v1/manage/listings/42" \
-H "Authorization: Bearer edsk_xxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corporation",
"status": "draft"
}'
Delete a Listing
/v1/manage/listings/{id}
Soft-deletes a listing. Returns 204 No Content.
Example Request
curl -X DELETE "https://api.embeddirectory.com/v1/manage/listings/42" \
-H "Authorization: Bearer edsk_xxxx"
Get Field Definitions
/v1/manage/fields
Returns configured custom field definitions.
Example Request
curl -H "Authorization: Bearer edsk_xxxx" \
"https://api.embeddirectory.com/v1/manage/fields"
Field Types
| Type | Value Format | Description |
|---|---|---|
text | string | Single text value |
number | number | Numeric value |
category | string | Single selection from options |
tags | array[string] | Multiple text values |
multi | array[string] | Multiple predefined selections |
checkbox | boolean | True/false value |
images | array[url] | Image URLs |