API Documentation

Integrate your systems with powerful REST APIs. Access jobs, candidates, companies, and bookings programmatically.

API Request
GET /api/v1/jobs
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

// Response
{
  "data": [...],
  "pagination": {
    "total": 150
  }
}

Quick Start Guide

Get up and running with the API in three simple steps

1. Generate API Key

Create an API key from your Wizard application settings page. Keep it secure and never share it publicly.

Step 1

3. Build & Integrate

Start building integrations with your existing systems using our comprehensive endpoints.

Step 3
Base URL
https://your-workspace.wizardapp.io/api/v1

Authentication

All API requests require authentication using an API key

Request Headers

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Example Request

curl -X GET "https://your-workspace.wizardapp.io/api/v1/jobs" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
Security Notice

Never share your API keys or commit them to version control. Store them securely as environment variables.

Error Handling

The API uses standard HTTP status codes and returns error details in JSON format

HTTP Status Codes

Code
Description
200
OK - Request succeeded
201
Created - Resource created successfully
204
No Content - Resource deleted successfully
400
Bad Request - Invalid request format
401
Unauthorized - Invalid or missing API key
403
Forbidden - Insufficient permissions
404
Not Found - Resource not found
422
Unprocessable Entity - Validation errors
429
Too Many Requests - Rate limit exceeded
500
Internal Server Error - Server error

Error Response Format

{
  "error": "validation_error",
  "message": "Validation failed",
  "errors": {
    "title": ["Title is required"],
    "email": ["Email format is invalid"]
  }
}

Pagination

List endpoints support pagination using query parameters

Query Parameters

Parameter
Default
Description
page
1
Page number
per_page
20
Items per page (max 100)

Response Format

{
  "data": [...],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 150,
    "total_pages": 8
  }
}

Sorting

List endpoints support sorting using query parameters

Query Parameters

Parameter
Default
Description
sort
created_at
Field to sort by (varies by endpoint)
order
desc
Sort direction: asc or desc

Example Request

GET /api/v1/jobs?sort=title&order=asc&page=1&per_page=20

Available Sort Fields by Endpoint

Endpoint
Sortable Fields
/jobs
created_at, updated_at, title, location, status, employment_type, salary_min, salary_max, published_at
/candidates
created_at, updated_at, first_name, last_name, email, status, employment_type, current_job_title, current_company, available_from
/companies
created_at, updated_at, name, industry, status
/bookings
created_at, updated_at, start_datetime, end_datetime, title, status, booking_type
/leads
created_at, updated_at, first_name, last_name, email, company_name, status, source, last_contacted_at
/content/{type}
created_at, updated_at, title, slug, status, published_at

Rate Limiting

API requests are rate limited based on your subscription plan

Rate Limit Headers

All API responses include headers to help you track your usage:

Header
Description
X-RateLimit-Limit
Maximum requests allowed per minute
X-RateLimit-Remaining
Remaining requests in current window
X-RateLimit-Reset
Unix timestamp when the rate limit resets

Plan Limits

Rate limits vary by subscription plan:

Limit Type
Description
Per Minute
Maximum API requests allowed per minute
Per Month
Total API requests allowed per billing cycle
Rate Limit Exceeded

When you exceed your rate limit, the API returns a 429 Too Many Requests response. Wait until the reset time indicated in the headers before making additional requests.

API Endpoints

Available resources and their operations

Jobs

Manage job postings, vacancies, and recruitment positions

GET /api/v1/jobs List all jobs with pagination and filtering jobs.read
Query Parameters
{
  "page": 1,
  "per_page": 20,
  "status": "published",
  "employment_type": "permanent",
  "search": "developer"
}
Response
{
  "data": [
    {
      "id": "uuid",
      "title": "string",
      "reference_code": "string",
      "location": "string",
      "employment_type": "permanent|contractor|interim|contract_to_perm|freelance|temporary",
      "status": "draft|published|closed|filled|on_hold|cancelled",
      "salary_min": 50000,
      "salary_max": 70000,
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 150,
    "total_pages": 8
  }
}
GET /api/v1/jobs/{id} Retrieve a single job by ID jobs.read
Response
{
  "data": {
    "id": "uuid",
    "title": "string",
    "reference_code": "string",
    "slug": "string",
    "department": "string",
    "location": "string",
    "remote_type": "on_site|remote|hybrid",
    "employment_type": "permanent|contractor|interim|contract_to_perm|freelance|temporary",
    "experience_level": "entry|mid|senior|lead|executive",
    "salary_min": 50000,
    "salary_max": 70000,
    "salary_currency": "GBP",
    "salary_type": "annual",
    "show_salary": true,
    "day_rate_min": 400,
    "day_rate_max": 500,
    "rate_currency": "GBP",
    "fee_type": "percentage|fixed",
    "fee_percentage": 15,
    "placement_fee": 10000,
    "description": "string",
    "requirements": "string",
    "responsibilities": "string",
    "benefits": "string",
    "positions_available": 1,
    "application_deadline": "2024-12-31",
    "start_date": "2024-02-01",
    "required_skills": "string",
    "preferred_skills": "string",
    "qualifications": "string",
    "status": "draft|published|closed|filled|on_hold|cancelled",
    "published_at": "2024-01-01T00:00:00Z",
    "allow_applications": true,
    "enable_public_page": true,
    "company_id": "uuid",
    "assigned_to": "uuid",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
POST /api/v1/jobs Create a new job posting jobs.write
Request Body
{
  "title": "string (required)",
  "location": "string (required)",
  "employment_type": "permanent|contractor|interim (required)",
  "description": "string (required)",
  "company_id": "uuid",
  "department": "string",
  "remote_type": "on_site|remote|hybrid",
  "experience_level": "entry|mid|senior|lead|executive",
  "salary_min": 50000,
  "salary_max": 70000,
  "salary_currency": "GBP",
  "salary_type": "annual|monthly|hourly",
  "show_salary": true,
  "day_rate_min": 400,
  "day_rate_max": 500,
  "rate_currency": "GBP",
  "fee_type": "percentage|fixed",
  "fee_percentage": 15,
  "placement_fee": 10000,
  "requirements": "string",
  "responsibilities": "string",
  "benefits": "string",
  "positions_available": 1,
  "application_deadline": "2024-12-31",
  "start_date": "2024-02-01",
  "required_skills": "string",
  "preferred_skills": "string",
  "qualifications": "string",
  "status": "draft|published",
  "allow_applications": true,
  "application_email": "string",
  "application_url": "string",
  "enable_public_page": true,
  "enable_ai_matching": true,
  "meta_title": "string",
  "meta_description": "string",
  "featured": false,
  "internal_notes": "string",
  "assigned_to": "uuid"
}
Response (201 Created)
{
  "data": { ... },
  "message": "Job created successfully"
}
PUT /api/v1/jobs/{id} Update an existing job jobs.write
Request Body
{
  "title": "string",
  "location": "string",
  "employment_type": "permanent|contractor|interim",
  "description": "string",
  "status": "draft|published|closed|filled|on_hold|cancelled",
  ... // All fields from POST are accepted
}
Response
{
  "data": { ... },
  "message": "Job updated successfully"
}
DELETE /api/v1/jobs/{id} Delete a job posting jobs.write
Response
{
  "message": "Job deleted successfully"
}

Candidates

Manage candidate profiles, CVs, and applicant data

GET /api/v1/candidates List all candidates with pagination and search candidates.read
Query Parameters
{
  "page": 1,
  "per_page": 20,
  "status": "new_lead",
  "search": "john"
}
Response
{
  "data": [
    {
      "id": "uuid",
      "first_name": "string",
      "last_name": "string",
      "email": "string",
      "phone": "string",
      "employment_type": "permanent|contractor|interim",
      "status": "new_lead|screening|submitted|interviewing|offer_made|placed|rejected",
      "current_job_title": "string",
      "current_company": "string",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 500,
    "total_pages": 25
  }
}
GET /api/v1/candidates/{id} Retrieve a single candidate by ID candidates.read
Response
{
  "data": {
    "id": "uuid",
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "phone": "string",
    "mobile": "string",
    "address_line1": "string",
    "address_line2": "string",
    "city": "string",
    "state_province": "string",
    "postal_code": "string",
    "country": "string",
    "linkedin_url": "string",
    "portfolio_url": "string",
    "github_url": "string",
    "date_of_birth": "1990-01-01",
    "nationality": "string",
    "employment_type": "permanent|contractor|interim|contract_to_perm|freelance|temporary",
    "employment_status": "actively_looking|open_to_offers|passive|not_looking|placed|blacklisted",
    "current_salary": 50000,
    "expected_salary": 60000,
    "salary_currency": "GBP",
    "current_day_rate": 400,
    "expected_day_rate": 450,
    "rate_currency": "GBP",
    "notice_period_days": 30,
    "available_from": "2024-02-01",
    "current_job_title": "string",
    "current_company": "string",
    "years_of_experience": 5,
    "industry": "string",
    "skills": "string",
    "qualifications": "string",
    "cv_file_path": "string",
    "status": "new_lead|screening|submitted|interviewing|offer_made|offer_accepted|placed|rejected|on_hold|withdrawn",
    "source": "string",
    "rating": 5,
    "preferred_locations": "string",
    "willing_to_relocate": true,
    "right_to_work": "string",
    "security_clearance": "string",
    "languages": "string",
    "ir35_status": "inside|outside|unknown|not_applicable",
    "umbrella_company": "string",
    "limited_company_name": "string",
    "notes": "string",
    "internal_notes": "string",
    "assigned_to": "uuid",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
POST /api/v1/candidates Create a new candidate record candidates.write
Request Body
{
  "first_name": "string (required)",
  "last_name": "string (required)",
  "email": "string (required)",
  "employment_type": "permanent|contractor|interim (required)",
  "phone": "string",
  "mobile": "string",
  "address_line1": "string",
  "address_line2": "string",
  "city": "string",
  "state_province": "string",
  "postal_code": "string",
  "country": "string",
  "linkedin_url": "string",
  "portfolio_url": "string",
  "github_url": "string",
  "date_of_birth": "1990-01-01",
  "nationality": "string",
  "employment_status": "actively_looking|open_to_offers|passive|not_looking",
  "current_salary": 50000,
  "expected_salary": 60000,
  "salary_currency": "GBP",
  "current_day_rate": 400,
  "expected_day_rate": 450,
  "rate_currency": "GBP",
  "notice_period_days": 30,
  "available_from": "2024-02-01",
  "current_job_title": "string",
  "current_company": "string",
  "years_of_experience": 5,
  "industry": "string",
  "skills": "string",
  "qualifications": "string",
  "source": "string",
  "rating": 5,
  "preferred_locations": "string",
  "willing_to_relocate": true,
  "right_to_work": "string",
  "security_clearance": "string",
  "languages": "string",
  "ir35_status": "inside|outside|unknown|not_applicable",
  "umbrella_company": "string",
  "limited_company_name": "string",
  "notes": "string",
  "internal_notes": "string",
  "assigned_to": "uuid"
}
Response (201 Created)
{
  "data": { ... },
  "message": "Candidate created successfully"
}
PUT /api/v1/candidates/{id} Update candidate information candidates.write
Request Body
{
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "employment_type": "permanent|contractor|interim",
  "status": "new_lead|screening|submitted|interviewing|offer_made|placed|rejected",
  ... // All fields from POST are accepted
}
Response
{
  "data": { ... },
  "message": "Candidate updated successfully"
}
DELETE /api/v1/candidates/{id} Delete a candidate record candidates.write
Response
{
  "message": "Candidate deleted successfully"
}

Companies

Manage client companies, contacts, and business relationships

GET /api/v1/companies List all companies with pagination companies.read
Query Parameters
{
  "page": 1,
  "per_page": 20,
  "status": "active",
  "search": "acme"
}
Response
{
  "data": [
    {
      "id": "uuid",
      "name": "string",
      "email": "string",
      "phone": "string",
      "industry": "string",
      "status": "prospect|active|inactive|on_hold|archived",
      "jobs_count": 5,
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 100,
    "total_pages": 5
  }
}
GET /api/v1/companies/{id} Retrieve a single company by ID companies.read
Response
{
  "data": {
    "id": "uuid",
    "name": "string",
    "legal_name": "string",
    "trading_name": "string",
    "company_number": "string",
    "email": "string",
    "phone": "string",
    "website": "string",
    "industry": "string",
    "company_size": "1-10|11-50|51-200|201-500|501-1000|1000+",
    "founded_year": 2010,
    "description": "string",
    "primary_contact_name": "string",
    "primary_contact_email": "string",
    "primary_contact_phone": "string",
    "primary_contact_title": "string",
    "status": "prospect|active|inactive|on_hold|archived",
    "billing_email": "string",
    "payment_terms": "string",
    "contract_start_date": "2024-01-01",
    "contract_end_date": "2025-01-01",
    "fee_percentage": 15,
    "fee_type": "percentage|fixed|retainer",
    "linkedin_url": "string",
    "twitter_url": "string",
    "internal_notes": "string",
    "tags": "string",
    "jobs_count": 5,
    "active_jobs_count": 2,
    "placements_count": 10,
    "account_manager_id": "uuid",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
POST /api/v1/companies Create a new company record companies.write
Request Body
{
  "name": "string (required)",
  "email": "string (required)",
  "legal_name": "string",
  "trading_name": "string",
  "company_number": "string",
  "phone": "string",
  "website": "string",
  "industry": "string",
  "company_size": "1-10|11-50|51-200|201-500|501-1000|1000+",
  "founded_year": 2010,
  "description": "string",
  "primary_contact_name": "string",
  "primary_contact_email": "string",
  "primary_contact_phone": "string",
  "primary_contact_title": "string",
  "status": "prospect|active",
  "billing_email": "string",
  "payment_terms": "string",
  "contract_start_date": "2024-01-01",
  "contract_end_date": "2025-01-01",
  "fee_percentage": 15,
  "fee_type": "percentage|fixed|retainer",
  "linkedin_url": "string",
  "twitter_url": "string",
  "internal_notes": "string",
  "tags": "string",
  "account_manager_id": "uuid"
}
Response (201 Created)
{
  "data": { ... },
  "message": "Company created successfully"
}
PUT /api/v1/companies/{id} Update company information companies.write
Request Body
{
  "name": "string",
  "email": "string",
  "status": "prospect|active|inactive|on_hold|archived",
  ... // All fields from POST are accepted
}
Response
{
  "data": { ... },
  "message": "Company updated successfully"
}
DELETE /api/v1/companies/{id} Delete a company record companies.write
Response
{
  "message": "Company deleted successfully"
}

Bookings

Manage interviews, placements, and scheduled events

GET /api/v1/bookings List all bookings with date filtering bookings.read
Query Parameters
{
  "page": 1,
  "per_page": 20,
  "status": "scheduled",
  "booking_type": "interview",
  "start_date": "2024-01-01",
  "end_date": "2024-12-31",
  "search": "string"
}
Response
{
  "data": [
    {
      "id": "uuid",
      "booking_type": "interview|contract|permanent|internal|consultation|site_visit",
      "title": "string",
      "start_datetime": "2024-01-15T10:00:00Z",
      "end_datetime": "2024-01-15T11:00:00Z",
      "status": "draft|scheduled|confirmed|in_progress|completed|cancelled|rescheduled",
      "candidate_id": "uuid",
      "job_id": "uuid",
      "company_id": "uuid",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 50,
    "total_pages": 3
  }
}
GET /api/v1/bookings/{id} Retrieve a single booking by ID bookings.read
Response
{
  "data": {
    "id": "uuid",
    "booking_type": "interview|contract|permanent|internal|consultation|site_visit",
    "title": "string",
    "description": "string",
    "candidate_id": "uuid",
    "job_id": "uuid",
    "company_id": "uuid",
    "lead_id": "uuid",
    "start_datetime": "2024-01-15T10:00:00Z",
    "end_datetime": "2024-01-15T11:00:00Z",
    "all_day": false,
    "interview_type": "phone|video|in_person",
    "interview_location": "string",
    "interview_panel": "string",
    "meeting_link": "string",
    "meeting_platform": "zoom|teams|google_meet",
    "meeting_id": "string",
    "meeting_password": "string",
    "meeting_join_url": "string",
    "contract_type": "fixed_term|temporary|ongoing|project_based",
    "day_rate": 500,
    "contract_value": 50000,
    "payment_terms": "string",
    "ir35_status": "inside|outside|not_applicable",
    "contract_notes": "string",
    "offer_accepted_date": "2024-01-10",
    "annual_salary": 60000,
    "placement_fee": 10000,
    "notice_period_days": 30,
    "probation_period_months": 3,
    "status": "draft|scheduled|confirmed|in_progress|completed|cancelled|rescheduled",
    "contact_name": "string",
    "contact_email": "string",
    "contact_phone": "string",
    "location": "string",
    "requirements": "string",
    "internal_notes": "string",
    "assigned_to": "uuid",
    "timezone": "Europe/London",
    "cancellation_reason": "string",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
POST /api/v1/bookings Create a new booking bookings.write
Request Body
{
  "booking_type": "interview|contract|permanent|internal|consultation|site_visit (required)",
  "title": "string",
  "description": "string",
  "candidate_id": "uuid (required for interview/contract/permanent)",
  "job_id": "uuid (required for interview/contract/permanent)",
  "company_id": "uuid (required for interview/contract/permanent)",
  "lead_id": "uuid (for consultation bookings)",
  "start_datetime": "2024-01-15T10:00:00Z (required)",
  "end_datetime": "2024-01-15T11:00:00Z (required for interview/contract)",
  "all_day": false,
  "interview_type": "phone|video|in_person",
  "interview_location": "string",
  "interview_panel": "string",
  "meeting_link": "string",
  "meeting_platform": "zoom|teams|google_meet",
  "contract_type": "fixed_term|temporary|ongoing|project_based",
  "day_rate": 500,
  "contract_value": 50000,
  "payment_terms": "string",
  "ir35_status": "inside|outside|not_applicable",
  "contract_notes": "string",
  "annual_salary": 60000,
  "placement_fee": 10000,
  "notice_period_days": 30,
  "probation_period_months": 3,
  "status": "draft|scheduled|confirmed",
  "contact_name": "string",
  "contact_email": "string",
  "contact_phone": "string",
  "location": "string",
  "requirements": "string",
  "internal_notes": "string",
  "assigned_to": "uuid",
  "timezone": "Europe/London"
}
Response (201 Created)
{
  "data": { ... },
  "message": "Booking created successfully"
}
PUT /api/v1/bookings/{id} Update booking details bookings.write
Request Body
{
  "title": "string",
  "description": "string",
  "start_datetime": "2024-01-15T10:00:00Z",
  "end_datetime": "2024-01-15T11:00:00Z",
  "status": "draft|scheduled|confirmed|in_progress|completed|cancelled|rescheduled",
  "cancellation_reason": "string (when cancelling)",
  ... // All fields from POST are accepted
}
Response
{
  "data": { ... },
  "message": "Booking updated successfully"
}
DELETE /api/v1/bookings/{id} Delete a booking bookings.write
Response
{
  "message": "Booking deleted successfully"
}

Leads

Manage leads and prospects in your sales pipeline

GET /api/v1/leads List all leads with filtering options leads.read
Query Parameters
{
  "page": 1,
  "per_page": 20,
  "status": "lead|prospect",
  "source": "website",
  "assigned_to": "uuid",
  "search": "john"
}
Response
{
  "data": [
    {
      "id": "uuid",
      "first_name": "string",
      "last_name": "string",
      "email": "string",
      "phone": "string",
      "company_name": "string",
      "status": "lead|prospect",
      "source": "string",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 200,
    "total_pages": 10
  }
}
GET /api/v1/leads/{id} Retrieve a single lead by ID leads.read
Response
{
  "data": {
    "id": "uuid",
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "phone": "string",
    "mobile": "string",
    "company_name": "string",
    "customer_type": "individual|business",
    "status": "lead|prospect",
    "address": "string",
    "city": "string",
    "county": "string",
    "postcode": "string",
    "country": "string",
    "website": "string",
    "linkedin_url": "string",
    "billing_address": "string",
    "billing_city": "string",
    "billing_county": "string",
    "billing_postcode": "string",
    "billing_country": "string",
    "industry": "string",
    "job_title": "string",
    "notes": "string",
    "source": "string",
    "tags": "string",
    "assigned_to": "uuid",
    "lead_status_id": "uuid",
    "last_contacted_at": "2024-01-01T00:00:00Z",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
POST /api/v1/leads Create a new lead leads.write
Request Body
{
  "email": "string (required)",
  "lead_status_id": "uuid (required)",
  "first_name": "string",
  "last_name": "string",
  "company_name": "string (at least one name field required)",
  "phone": "string",
  "mobile": "string",
  "customer_type": "individual|business",
  "status": "lead|prospect",
  "address": "string",
  "city": "string",
  "county": "string",
  "postcode": "string",
  "country": "string",
  "website": "string",
  "linkedin_url": "string",
  "billing_address": "string",
  "billing_city": "string",
  "billing_county": "string",
  "billing_postcode": "string",
  "billing_country": "string",
  "industry": "string",
  "job_title": "string",
  "notes": "string",
  "source": "string",
  "tags": "string",
  "assigned_to": "uuid"
}
Response (201 Created)
{
  "data": { ... },
  "message": "Lead created successfully"
}
PUT /api/v1/leads/{id} Update lead details leads.write
Request Body
{
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "status": "lead|prospect",
  "lead_status_id": "uuid",
  ... // All fields from POST are accepted
}
Response
{
  "data": { ... },
  "message": "Lead updated successfully"
}
DELETE /api/v1/leads/{id} Delete a lead leads.write
Response
{
  "message": "Lead deleted successfully"
}
POST /api/v1/leads/{id}/convert Convert a lead to an active customer leads.write
Request Body
{
  // No body required
}
Response
{
  "data": {
    "id": "uuid",
    "status": "active",
    "converted_at": "2024-01-15T10:00:00Z",
    ...
  },
  "message": "Lead converted to customer successfully"
}

Content

Access your content management system - content types and content items

GET /api/v1/content-types List all content types content.read
Query Parameters
{
  "page": 1,
  "per_page": 20
}
Response
{
  "data": [
    {
      "id": "uuid",
      "name": "string",
      "slug": "string",
      "description": "string",
      "icon": "string",
      "is_system": false,
      "is_active": true,
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 10,
    "total_pages": 1
  }
}
GET /api/v1/content-types/{id} Retrieve a content type with its fields content.read
Response
{
  "data": {
    "id": "uuid",
    "name": "string",
    "slug": "string",
    "description": "string",
    "icon": "string",
    "is_system": false,
    "is_active": true,
    "fields": [
      {
        "id": "uuid",
        "name": "string",
        "field_key": "string",
        "field_type": "text|textarea|rich_text|number|select|multi_select|date|datetime|boolean|image|file|url|email|phone",
        "is_required": true,
        "is_title_field": false,
        "placeholder": "string",
        "help_text": "string",
        "config": "{}",
        "display_order": 1
      }
    ],
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
GET /api/v1/content/{type} List items of a content type (by slug or ID) content.read
Query Parameters
{
  "page": 1,
  "per_page": 20,
  "status": "published|draft",
  "search": "string"
}
Response
{
  "data": [
    {
      "id": "uuid",
      "title": "string",
      "slug": "string",
      "status": "draft|published",
      "published_at": "2024-01-01T00:00:00Z",
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 50,
    "total_pages": 3
  }
}
GET /api/v1/content/{type}/{id} Retrieve a single content item with field values content.read
Response
{
  "data": {
    "id": "uuid",
    "title": "string",
    "slug": "string",
    "status": "draft|published",
    "fields": {
      "field_key_1": "value",
      "field_key_2": "value",
      "field_key_3": ["multi", "select", "values"]
    },
    "published_at": "2024-01-01T00:00:00Z",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}
POST /api/v1/content/{type} Create a new content item content.write
Request Body
{
  "title": "string (required)",
  "slug": "string",
  "status": "draft|published",
  "fields": {
    "field_key_1": "value",
    "field_key_2": "value",
    "field_key_3": ["multi", "select", "values"]
  }
}
Response (201 Created)
{
  "data": {
    "id": "uuid",
    "title": "string",
    "slug": "string",
    "status": "draft",
    "created_at": "2024-01-01T00:00:00Z"
  },
  "message": "Content item created successfully"
}
PUT /api/v1/content/{type}/{id} Update a content item content.write
Request Body
{
  "title": "string",
  "slug": "string",
  "status": "draft|published",
  "fields": {
    "field_key_1": "new value",
    "field_key_2": "new value"
  }
}
Response
{
  "data": {
    "id": "uuid",
    "title": "string",
    "slug": "string",
    "status": "published",
    "updated_at": "2024-01-01T00:00:00Z"
  },
  "message": "Content item updated successfully"
}
DELETE /api/v1/content/{type}/{id} Delete a content item content.write
Response
{
  "message": "Content item deleted successfully"
}

Tarvitsetko apua integraation kanssa?

Integraatiotuki on saatavilla suoraan Wizard Applicationista. Kirjaudu sisään ja lähetä tukipyyntö tilivalikosta saadaksesi teknistä apua, mukautettuja päätepisteitä tai yritystason ominaisuuksia.

UKK

Usein kysytyt kysymykset

Yleisiä kysymyksiä API:stamme ja integraatioista.

Voit luoda API-avaimen Wizard Application-sovelluksesi asetussivulta. Siirry kohtaan Asetukset > API-avaimet ja napsauta 'Luo uusi avain'. Pidä API-avaimesi turvassa äläkä koskaan jaa sitä julkisesti.

Nopeusrajoitukset vaihtelevat suunnitelman mukaan ja voivat muuttua ajan myötä. Nopeusrajoitusten otsikot sisältyvät kaikkiin API-vastauksiin.

Katso nykyiset nopeusrajoitukset suunnitelmasivultamme