Free foreverUp to 3 projects · 500 MBNo credit card required

Developer access

Bring your client workflow into the rest of your stack.

Use secure personal API tokens to connect clients, projects, invoices, and the operational context your team already manages in StraSync.

Growth plan access Bearer-token authentication
StraSync API
Live surface
GET /api/v1/clients200
GET /api/v1/projects200
POST /api/v1/invoices201

A small, secure surface

Create tokens from workspace settings. The token is shown once, expires after one year, and can be revoked at any time.

What you can connect

The useful parts stay close to your workflow.

StraSync API access is designed for practical automations, not a second system to learn. Keep your client record in one place and let other tools read or update the work around it.

01

Personal API tokens

Generate, name, review, and revoke tokens from Settings. Each token belongs to a workspace user and is shown only once.

02

Workspace records

Work with the REST API around clients, leads, projects, tickets, invoices, files, and other authenticated workspace resources.

03

Connected automations

Pass context to reporting, finance, support, or internal tools without rebuilding the client relationship in every system.

Developer reference

Everything needed for the first request.

The API is HTTP and JSON based. You can use it from a server, a scheduled job, or any integration platform that can send authenticated requests.

01

Use the API base URL

Start with https://your-domain.com/api/v1. Replace the domain with the URL where your StraSync backend is deployed.

02

Create a personal token

Growth users create tokens in Workspace settings → API access. Copy the secret immediately; it is shown only once.

03

Send JSON headers

Every request should accept JSON. POST and PUT requests also need Content-Type: application/json.

04

Stay server-side

Tokens can read and change workspace data. Keep them in environment variables and never expose them in browser code.

Endpoint reference

Core operations you can automate.

GET/v1
/api/v1/clients

List client records with their contacts and pagination metadata.

Query: search, status, archived, per_page, page

POST/v1
/api/v1/clients

Create a client record that can be reused by projects and invoices.

Body: company_name required; email, phone, status optional

GET/v1
/api/v1/projects

List projects, with client context and completion counts.

Query: status, client_id, archived, per_page, page

POST/v1
/api/v1/projects

Create a project and connect it to an existing client.

Body: name required; client_id, dates, budget optional

GET/v1
/api/v1/invoices

Read invoices and filter the financial record by client or project.

Query: client_id, project_id, status, per_page, page

POST/v1
/api/v1/invoices

Create a dated invoice from line items, tax, discount, and currency.

Body: client_id, issue_date, due_date, line_items required

Practical recipes

Copy the pattern, then connect your workflow.

These examples use native fetch so the same headers and request shape work in Node.js, serverless functions, cron jobs, and most automation tools.

1. Read and filter records

Use query parameters for search and pagination.

const response = await fetch(
  "https://your-domain.com/api/v1/clients?search=acme&per_page=20",
  {
    headers: {
      Authorization: "Bearer YOUR_TOKEN",
      Accept: "application/json",
    },
  },
);

const { data, meta } = await response.json();

2. Create a client

Send a JSON body and check the 201 response.

const response = await fetch(
  "https://your-domain.com/api/v1/clients",
  {
    method: "POST",
    headers: {
      Authorization: "Bearer YOUR_TOKEN",
      Accept: "application/json",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      company_name: "Acme Agency",
      email: "hello@acme.test",
      status: "active",
    }),
  },
);

3. Create an invoice

Link it to a client with a valid UUID and line items.

const response = await fetch(
  "https://your-domain.com/api/v1/invoices",
  {
    method: "POST",
    headers: {
      Authorization: "Bearer YOUR_TOKEN",
      Accept: "application/json",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      client_id: "CLIENT_UUID",
      issue_date: "2026-09-02",
      due_date: "2026-10-02",
      line_items: [
        { description: "Website sprint", quantity: 1, unit_price: 1200 },
      ],
      currency: "USD",
    }),
  },
);

Three steps

From token to useful automation.

The setup is deliberately small so an agency can connect a workflow without a long integration project.

01

Create a token

Open Workspace settings → API access, give the token a clear name, and copy the secret when it is generated.

02

Send the token securely

Use it in the Authorization header as a Bearer token. Keep it in your server environment, never in browser code or public repositories.

03

Call the v1 endpoints

Make authenticated requests to the existing /api/v1 surface, then use the returned workspace records in your connected tool.

Response shape

Successful list endpoints return data plus meta. Create and update endpoints return the affected record in data.

{
  "data": [],
  "meta": { "current_page": 1, "last_page": 1, "total": 0 }
}

Pagination

Use page and per_page on list endpoints. The response tells you current_page, last_page, per_page, and total.

Errors you can handle

401 means the token is missing or invalid, 403 means the workspace or role cannot perform the action, and 422 means validation failed. Read message and errors.

Request example

Read the client context you need.

curl https://your-domain.com/api/v1/clients \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Availability

API access is included with Growth.

Free and Starter keep the core workspace simple. Growth unlocks personal API tokens for teams ready to connect StraSync with the rest of their operating stack.

Compare plans