REST API reference

Bark API

14 endpoints for Bark. Each one is a POST with a JSON body, called with your API key.

Base URL
https://cotlet.dev/api/v1/bark
Connects with
Your Bark professional (seller) account
Integration page
Bark
Bark Endpoints
Endpoint Access Description
list_leads read Leads matched to your services and locations, newest first, with credit cost and signals.
get_lead read Full request: the customer's answers, location, credit cost, responses so far and signals (urgent, verified phone, high hiring intent).
list_responses read Leads you contacted (My Responses), with status, contact details and your notes.
get_response read One contacted lead: customer's name, phone and email, request, estimate sent and status.
get_credit_balance read Credits available now, from My Credits.
list_invoices read Invoices from Invoices and billing details, with date, amount and a download link.
get_lead_preferences read Your services, locations and coverage areas from Settings > Lead Preferences.
add_note write Private note on a contacted lead, to track the job. The customer does not see it.
update_response_status write Move a contacted lead to pending, hired or archived.
contact_lead write Spend credits to contact a lead and get their name, phone and email. Bark notifies the customer.
skip_lead write Mark a lead Not interested. No credits are charged; Bark tells the customer politely.
send_estimate write Send a quote on a contacted lead. Bark notifies the customer.
send_message write Email or text a contacted customer from My Responses, as free text or one of your saved templates.
request_review write Invite a customer who hired you to review you on Bark. The lead must be marked hired.

List leads

read

POST https://cotlet.dev/api/v1/bark/list_leads

Returns the leads Bark matched to your services and locations, newest first by default. Each item has the credit cost and signals such as urgent, so you can decide before you spend anything. Reading a list spends no credits and notifies no customer.

Parameters

Parameters: list_leads
NameTypeDescription
view enum all, first_to_respond, urgent or free. Default: all.
service string Only this service, e.g. Web Design.
max_credits integer Skip leads that cost more credits.
since date Only leads submitted on or after this date.
sort enum relevance, date or credits. Default: date.
limit integer 1 to 50. Default: 20.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/list_leads \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"view":"first_to_respond","service":"Web Design","max_credits":15,"since":"2026-10-12","sort":"credits","limit":20}'
Python
result = client.call("bark", "list_leads", {"view":"first_to_respond","service":"Web Design","max_credits":15,"since":"2026-10-12","sort":"credits","limit":20})
Node.js
const result = await cotlet.call('bark', 'list_leads', {"view":"first_to_respond","service":"Web Design","max_credits":15,"since":"2026-10-12","sort":"credits","limit":20});
CLI
cotlet call bark list_leads --data '{"view":"first_to_respond","service":"Web Design","max_credits":15,"since":"2026-10-12","sort":"credits","limit":20}'

Example response

{
  "leads": [
    {
      "lead_id": "61842207",
      "service": "Wedding Photography",
      "location": "Leeds, LS1",
      "credits": 12,
      "signals": [
        "urgent"
      ],
      "submitted": "2026-10-11"
    },
    {
      "lead_id": "61841930",
      "service": "Web Design",
      "location": "Manchester, M1",
      "credits": 9,
      "signals": [
        "first_to_respond"
      ],
      "submitted": "2026-10-11"
    }
  ]
}

Get lead

read

POST https://cotlet.dev/api/v1/bark/get_lead

Returns the full request before you buy it: the customer's answers, location, credit cost, how many professionals have responded and the signals Bark shows. The customer's contact details stay hidden until contact_lead. Read only: no credits are spent.

Parameters

Parameters: get_lead
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/get_lead \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2"}'
Python
result = client.call("bark", "get_lead", {"lead_id":"lead_8c41d2"})
Node.js
const result = await cotlet.call('bark', 'get_lead', {"lead_id":"lead_8c41d2"});
CLI
cotlet call bark get_lead --data '{"lead_id":"lead_8c41d2"}'

Example response

{
  "lead_id": "61842207",
  "service": "Wedding Photography",
  "location": "Leeds, LS1",
  "credits": 12,
  "responses_so_far": 2,
  "signals": [
    "urgent",
    "verified_phone"
  ],
  "answers": {
    "Event date": "2027-06-12",
    "Hours of coverage": "Full day"
  }
}

POST https://cotlet.dev/api/v1/bark/list_responses

Returns the leads you contacted, as in My Responses, with their status, the customer's contact details and your notes. Use status to see only the open ones. Read only.

Parameters

Parameters: list_responses
NameTypeDescription
status enum pending, hired or all. Default: pending.
since date Only leads contacted on or after this date.
limit integer 1 to 100. Default: 50.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/list_responses \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("bark", "list_responses")
Node.js
const result = await cotlet.call('bark', 'list_responses');
CLI
cotlet call bark list_responses

Example response

{
  "responses": [
    {
      "lead_id": "61842207",
      "service": "Wedding Photography",
      "customer": "Jordan",
      "status": "pending",
      "contacted": "2026-10-11",
      "note": "Sent estimate"
    },
    {
      "lead_id": "61790415",
      "service": "Kitchen Fitting",
      "customer": "Sam",
      "status": "pending",
      "contacted": "2026-10-08",
      "note": ""
    }
  ]
}

POST https://cotlet.dev/api/v1/bark/get_response

Returns one contacted lead with the customer's name, phone and email, the original request, the estimate you sent and the current status. Read only.

Parameters

Parameters: get_response
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/get_response \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2"}'
Python
result = client.call("bark", "get_response", {"lead_id":"lead_8c41d2"})
Node.js
const result = await cotlet.call('bark', 'get_response', {"lead_id":"lead_8c41d2"});
CLI
cotlet call bark get_response --data '{"lead_id":"lead_8c41d2"}'

Example response

{
  "lead_id": "61842207",
  "status": "pending",
  "service": "Wedding Photography",
  "customer": {
    "name": "Jordan",
    "email": "client@example.com",
    "phone": "+44 7700 900123"
  },
  "estimate": {
    "amount": "450",
    "message": "Full day coverage, edited gallery included."
  }
}

POST https://cotlet.dev/api/v1/bark/get_credit_balance

Returns the credits available on your account now, as My Credits shows them. Read only.

Parameters

No parameters.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/get_credit_balance \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("bark", "get_credit_balance")
Node.js
const result = await cotlet.call('bark', 'get_credit_balance');
CLI
cotlet call bark get_credit_balance

Example response

{
  "credits": 88
}

POST https://cotlet.dev/api/v1/bark/list_invoices

Returns your Bark invoices with date, amount and a download link. Use since to limit the range. Read only.

Parameters

Parameters: list_invoices
NameTypeDescription
since date Only invoices on or after this date.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/list_invoices \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("bark", "list_invoices")
Node.js
const result = await cotlet.call('bark', 'list_invoices');
CLI
cotlet call bark list_invoices

Example response

{
  "invoices": [
    {
      "invoice_id": "INV-2026-0914",
      "date": "2026-09-14",
      "amount": "50.00",
      "download_url": "https://www.bark.com/invoices/example-0914.pdf"
    },
    {
      "invoice_id": "INV-2026-1002",
      "date": "2026-10-02",
      "amount": "100.00",
      "download_url": "https://www.bark.com/invoices/example-1002.pdf"
    }
  ]
}

POST https://cotlet.dev/api/v1/bark/get_lead_preferences

Returns the services, locations and coverage areas that decide which leads Bark sends you, from Lead Preferences in Settings. Read only.

Parameters

No parameters.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/get_lead_preferences \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("bark", "get_lead_preferences")
Node.js
const result = await cotlet.call('bark', 'get_lead_preferences');
CLI
cotlet call bark get_lead_preferences

Example response

{
  "services": [
    "Web Design",
    "Wedding Photography"
  ],
  "locations": [
    {
      "place": "Leeds",
      "radius_miles": 25
    }
  ]
}

Add note

write

POST https://cotlet.dev/api/v1/bark/add_note

Adds a private note to a contacted lead. The customer is not told, so this tool does not ask for your OK, and you can change the note with another call.

Parameters

Parameters: add_note
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.
note required string Note text.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/add_note \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2","note":"note"}'
Python
result = client.call("bark", "add_note", {"lead_id":"lead_8c41d2","note":"note"})
Node.js
const result = await cotlet.call('bark', 'add_note', {"lead_id":"lead_8c41d2","note":"note"});
CLI
cotlet call bark add_note --data '{"lead_id":"lead_8c41d2","note":"note"}'

Example response

{
  "lead_id": "61842207",
  "note": "Wants a second shooter",
  "saved": true
}

Update response status

write Confirm

POST https://cotlet.dev/api/v1/bark/update_response_status

Moves a contacted lead to pending, hired or archived and returns the new status. A lead must be hired before request_review works. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_response_status
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.
status required enum pending, hired or archived.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/update_response_status \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2","status":"pending"}'
Python
result = client.call("bark", "update_response_status", {"lead_id":"lead_8c41d2","status":"pending"})
Node.js
const result = await cotlet.call('bark', 'update_response_status', {"lead_id":"lead_8c41d2","status":"pending"});
CLI
cotlet call bark update_response_status --data '{"lead_id":"lead_8c41d2","status":"pending"}'

Example response

{
  "lead_id": "61790415",
  "status": "hired"
}

Contact lead

write Confirm

POST https://cotlet.dev/api/v1/bark/contact_lead

Spends credits to contact the lead and returns the customer's name, phone and email. Bark notifies the customer. Set max_credits and the call fails instead of buying a lead that costs more. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: contact_lead
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.
max_credits integer Fail instead of buying if the lead costs more.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/contact_lead \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"61842207","max_credits":15}'
Python
result = client.call("bark", "contact_lead", {"lead_id":"61842207","max_credits":15})
Node.js
const result = await cotlet.call('bark', 'contact_lead', {"lead_id":"61842207","max_credits":15});
CLI
cotlet call bark contact_lead --data '{"lead_id":"61842207","max_credits":15}'

Example response

{
  "lead_id": "61842207",
  "status": "pending",
  "credits_spent": 12,
  "credits_left": 88,
  "service": "Wedding Photography",
  "location": "Leeds, LS1",
  "customer": {
    "name": "Jordan",
    "email": "client@example.com",
    "phone": "+44 7700 900123"
  }
}

Skip lead

write Confirm

POST https://cotlet.dev/api/v1/bark/skip_lead

Marks the lead Not interested. No credits are charged, and Bark tells the customer politely. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: skip_lead
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/skip_lead \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2"}'
Python
result = client.call("bark", "skip_lead", {"lead_id":"lead_8c41d2"})
Node.js
const result = await cotlet.call('bark', 'skip_lead', {"lead_id":"lead_8c41d2"});
CLI
cotlet call bark skip_lead --data '{"lead_id":"lead_8c41d2"}'

Example response

{
  "lead_id": "61841930",
  "status": "skipped",
  "credits_spent": 0
}

Send estimate

write Confirm

POST https://cotlet.dev/api/v1/bark/send_estimate

Sends a quote on a lead you already contacted. Bark notifies the customer. The amount is in your Bark currency. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_estimate
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.
amount required string Quoted price in your Bark currency, e.g. 450.
message string What the price includes.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/send_estimate \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2","amount":"amount"}'
Python
result = client.call("bark", "send_estimate", {"lead_id":"lead_8c41d2","amount":"amount"})
Node.js
const result = await cotlet.call('bark', 'send_estimate', {"lead_id":"lead_8c41d2","amount":"amount"});
CLI
cotlet call bark send_estimate --data '{"lead_id":"lead_8c41d2","amount":"amount"}'

Example response

{
  "lead_id": "61842207",
  "amount": "450",
  "message": "Full day coverage, edited gallery included.",
  "sent": true
}

Send message

write Confirm

POST https://cotlet.dev/api/v1/bark/send_message

Emails or texts a customer you already contacted, as free text in body or from one of your saved Email or SMS templates. Required: body or template. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_message
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.
channel required enum email or sms.
body string Message text. Required unless template is set.
template string Name of a saved Email or SMS template.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/send_message \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"61842207","channel":"sms","template":"Follow-up"}'
Python
result = client.call("bark", "send_message", {"lead_id":"61842207","channel":"sms","template":"Follow-up"})
Node.js
const result = await cotlet.call('bark', 'send_message', {"lead_id":"61842207","channel":"sms","template":"Follow-up"});
CLI
cotlet call bark send_message --data '{"lead_id":"61842207","channel":"sms","template":"Follow-up"}'

Example response

{
  "lead_id": "61842207",
  "channel": "sms",
  "sent": true
}

Request review

write Confirm

POST https://cotlet.dev/api/v1/bark/request_review

Invites the customer to review you on Bark. The lead must be marked hired first, otherwise the call fails. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: request_review
NameTypeDescription
lead_id required string Lead ID from list_leads or list_responses.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/bark/request_review \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lead_id":"lead_8c41d2"}'
Python
result = client.call("bark", "request_review", {"lead_id":"lead_8c41d2"})
Node.js
const result = await cotlet.call('bark', 'request_review', {"lead_id":"lead_8c41d2"});
CLI
cotlet call bark request_review --data '{"lead_id":"lead_8c41d2"}'

Example response

{
  "lead_id": "61790415",
  "review_requested": true
}