Members

Links users to organizations, with their permissions

The member object

Attributes

idread-onlyuuid

Unique identifier

external_idstring | number | null

Identifier of the member in an external system, used to match imported candidates

organization_idread-onlyuuid
organizations.id

Identifier of the related organization

user_idread-onlyuuid
user_profiles.user_id

Identifier of the related user

created_atread-onlytimestamp with time zone

Creation timestamp

updated_attimestamp with time zone

Last modification timestamp

permissionsArray<Permission>

Permissions of the member

valuesRecord<string, MemberValue>

Values for each of the organization's member_variables, usable in layouts

Related resources

Embed related resources in the response with the select parameter, for example select=*,organizations!organization_id(*). See selecting data. Resources related through more than one column need the column as a hint, like table!column(*).

organizations!organization_id(*)object | null
organizations.id

The organization referenced by organization_id.

user_profiles(*)object | null
user_profiles.user_id

The user profile referenced by user_id.

candidates(*)array
candidates.member_id

The candidates referencing this member through candidates.member_id.

The member object
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "external_id": "example-id",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "user_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2026-01-01T12:00:00+00:00",
  "updated_at": "2026-01-01T12:00:00+00:00",
  "permissions": [
    "billing",
    "edit_candidates",
    "edit_layouts",
    "settings",
    "team",
    "view_candidates"
  ],
  "values": {
    "first_name": "John",
    "last_name": "Doe"
  }
}
Including related resources
curl "https://api.cv-transformer.com/v1/members?limit=10&select=*,organizations!organization_id(*),user_profiles(*)" \
  -H "Authorization: Bearer YOUR_API_KEY"

List members

Requiresmembers:read

Filters

idFilter<uuid>

Unique identifier

external_idFilter<string | number | null>

Identifier of the member in an external system, used to match imported candidates

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

user_idFilter<uuid>
user_profiles.user_id

Identifier of the related user

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

permissionsFilter<Array<Permission>>

Permissions of the member

valuesFilter<Record<string, MemberValue>>

Values for each of the organization's member_variables, usable in layouts

Responses

200

A list of members with the selected columns. The Content-Range header holds the range returned and the total count, like 0-9/42.

206

Partial Content

400

The request is malformed, for example an unknown column or an invalid filter.

401

The API key is missing or invalid.

403

The API key doesn't have the scope this request needs.

429

The API key made more requests per minute than its rate limit allows. Retry after the number of seconds in the Retry-After header.

Errors have a JSON body with a message, details and hint, and for database errors a code. See errors.
GET/members
curl "https://api.cv-transformer.com/v1/members?limit=10&select=*" \
  -H "Authorization: Bearer YOUR_API_KEY"
Example response
JSON
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "external_id": "example-id",
    "organization_id": "00000000-0000-0000-0000-000000000000",
    "user_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "2026-01-01T12:00:00+00:00",
    "updated_at": "2026-01-01T12:00:00+00:00",
    "permissions": [
      "billing",
      "edit_candidates",
      "edit_layouts",
      "settings",
      "team",
      "view_candidates"
    ],
    "values": {
      "first_name": "John",
      "last_name": "Doe"
    }
  }
]

Update members

Requiresmembers:write

Filters

Without filters, this request updates all members the API key has access to. Always filter on at least one column, like id=eq.{id}.

idFilter<uuid>

Unique identifier

external_idFilter<string | number | null>

Identifier of the member in an external system, used to match imported candidates

organization_idFilter<uuid>
organizations.id

Identifier of the related organization

user_idFilter<uuid>
user_profiles.user_id

Identifier of the related user

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

permissionsFilter<Array<Permission>>

Permissions of the member

valuesFilter<Record<string, MemberValue>>

Values for each of the organization's member_variables, usable in layouts

Body

Partial<Member>

The attributes are listed under the member object. Read-only attributes are set by CV-Transformer and can't be written.

Responses

204

Updated. With the header Prefer: return=representation, the response is a 200 whose body holds the updated members with the selected columns.

400

The request is malformed, for example an unknown column, an invalid filter or an invalid body.

401

The API key is missing or invalid.

403

The API key doesn't have the scope this request needs, or no permission for this change, for example when writing rows of another organization.

409

The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.

429

The API key made more requests per minute than its rate limit allows. Retry after the number of seconds in the Retry-After header.

Errors have a JSON body with a message, details and hint, and for database errors a code. See errors.
PATCH/members
curl -X PATCH "https://api.cv-transformer.com/v1/members?id=eq.00000000-0000-0000-0000-000000000000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "permissions": [
      "billing",
      "edit_candidates",
      "edit_layouts",
      "settings",
      "team",
      "view_candidates"
    ]
  }'
Example response
JSON
(no content)

Invite member

Requiresmembers:write

Invite a member to your organization. The member will receive an email with a link to accept the invitation. The member will have the user role. To make a member admin or superuser use the dashboard.

Body

emailrequiredstring

The email address of the member to invite.

languageLanguage

The language of the member to invite.

namestring

The name of the member to invite.

permissionsArray<Permission>

The permissions of the member. Defaults to editing candidates and layouts, and viewing candidates.

silentboolean

Whether to skip the invitation email.

Responses

201

The invited member

400

The body is invalid: not JSON, a required field is missing or a field has the wrong type or value. The details name each invalid field and why.

401

The API key is missing or invalid.

403

The API key doesn't have the scope this request needs.

429

The API key made more requests per minute than its rate limit allows. Retry after the number of seconds in the Retry-After header.

Errors have a JSON body with a message, details and hint, and for database errors a code. See errors.
POST/members
curl "https://api.cv-transformer.com/v1/members" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "johndoe@example.com", "name": "John Doe" }'
Example response
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "external_id": "example-id",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "user_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2026-01-01T12:00:00+00:00",
  "updated_at": "2026-01-01T12:00:00+00:00",
  "permissions": [
    "billing",
    "edit_candidates",
    "edit_layouts",
    "settings",
    "team",
    "view_candidates"
  ],
  "values": {
    "first_name": "John",
    "last_name": "Doe"
  }
}

Revoke member

Requiresmembers:write

Revoke a member from your organization. The member will no longer have access to your organization. Only works for members with the user role. To revoke an admin or superuser members use the dashboard.

Query parameters

idrequireduuid

The identifier of the member to revoke.

Responses

200

The deleted member

401

The API key is missing or invalid.

403

The API key doesn't have the scope this request needs.

404

The member doesn't exist in the API key's organization.

429

The API key made more requests per minute than its rate limit allows. Retry after the number of seconds in the Retry-After header.

Errors have a JSON body with a message, details and hint, and for database errors a code. See errors.
DELETE/members
curl -X DELETE "https://api.cv-transformer.com/v1/members?id=00000000-0000-0000-0000-000000000000" \
  -H "Authorization: Bearer YOUR_API_KEY"
Example response
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "external_id": "example-id",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "user_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2026-01-01T12:00:00+00:00",
  "updated_at": "2026-01-01T12:00:00+00:00",
  "permissions": [
    "billing",
    "edit_candidates",
    "edit_layouts",
    "settings",
    "team",
    "view_candidates"
  ],
  "values": {
    "first_name": "John",
    "last_name": "Doe"
  }
}