FieldCamp
Resources

Visits | FieldCamp API

Visits represent scheduled on-site appearances for a job. A job may have one or more visits.

A visit is a scheduled on-site appearance for a job. Most simple jobs have exactly one visit auto-generated from the job's time window. Multi-stop jobs — a delivery followed by a collection, a diagnostic followed by a repair — have multiple visits.

When to create visits explicitly

Create visits via POST /api/visits when:

  • You need more than one visit per job.
  • You want explicit control over scheduledStart / scheduledEnd instead of relying on auto-generation.
  • You're assigning a different technician to the visit than to the job.

For single-visit jobs, passing visits: [] on job creation is fine — FieldCamp generates a visit automatically from the job's time window.

Fields

  • jobId — the parent job, from POST /api/jobs.
  • scheduledStart / scheduledEnd — UTC ISO-8601 datetimes.
  • technicianId — a user ID from GET /api/team.

Endpoints

GET/api/visits

Authorization

AuthorizationBearer <token>

Pass your JWT API key as Authorization: Bearer <token>. Send alongside X-API-Key: <token> for maximum compatibility.

In: header

Response Body

application/json

application/json

curl -X GET "https://api.fieldcamp.ai/api/visits"
{
  "success": true,
  "data": {
    "visits": [
      {
        "jobId": "string",
        "scheduledStart": "2019-08-24T14:15:22Z",
        "scheduledEnd": "2019-08-24T14:15:22Z",
        "technicianId": "string",
        "id": "string",
        "visitStatus": "scheduled",
        "createdAt": "2019-08-24T14:15:22Z"
      }
    ]
  }
}
{
  "success": false,
  "error": "Invalid or expired token"
}
POST/api/visits

Authorization

AuthorizationBearer <token>

Pass your JWT API key as Authorization: Bearer <token>. Send alongside X-API-Key: <token> for maximum compatibility.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://api.fieldcamp.ai/api/visits" \  -H "Content-Type: application/json" \  -d '{    "jobId": "job_abc123",    "scheduledStart": "2026-05-01T09:00:00.000Z",    "scheduledEnd": "2026-05-01T17:00:00.000Z",    "technicianId": "user_xyz789"  }'
{
  "success": true,
  "data": {
    "visitId": "string",
    "visit": {
      "jobId": "string",
      "scheduledStart": "2019-08-24T14:15:22Z",
      "scheduledEnd": "2019-08-24T14:15:22Z",
      "technicianId": "string",
      "id": "string",
      "visitStatus": "scheduled",
      "createdAt": "2019-08-24T14:15:22Z"
    }
  }
}
{
  "success": false,
  "error": "jobNumber is required"
}
{
  "success": false,
  "error": "Invalid or expired token"
}
PUT/api/visits/{id}

Authorization

AuthorizationBearer <token>

Pass your JWT API key as Authorization: Bearer <token>. Send alongside X-API-Key: <token> for maximum compatibility.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Any subset of NewVisit fields.

Response Body

application/json

application/json

curl -X PUT "https://api.fieldcamp.ai/api/visits/string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "success": true,
  "data": {
    "visit": {
      "jobId": "string",
      "scheduledStart": "2019-08-24T14:15:22Z",
      "scheduledEnd": "2019-08-24T14:15:22Z",
      "technicianId": "string",
      "id": "string",
      "visitStatus": "scheduled",
      "createdAt": "2019-08-24T14:15:22Z"
    }
  }
}
{
  "success": false,
  "error": "Invalid or expired token"
}
Empty

On this page